2010-01-28 78 views
3

Android SDK具有使用相机预览的API演示。但是,这给了我一个模拟器中的运行时异常。我使用Eclipse在Mac上运行10.6Android SDK相机API演示崩溃

此处,我抓住了代码的链接:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

+1

任何时候当您在StackOverflow上提出有关“运行时异常”的问题时,如果您发布堆栈跟踪,这将是一个巨大的帮助。有了这个,我们可以帮忙。没有这个,我们必须随机猜测。您可以通过'adb logcat',DDMS或Eclipse中的DDMS透视图查看堆栈跟踪。 – CommonsWare 2010-01-28 11:44:04

回答

7

请在AndroidManifest.xml文件中确保您已设置权限使用相机。将此行放在应用程序标记上方。

<uses-permission android:name="android.permission.CAMERA" /> 
+0

感谢一堆,我希望他们在演示代码中提到过。 – James 2010-01-30 23:17:52

+2

当在实际的Nexus One设备上运行时,即使在调试器中,Camera Preview也会崩溃,无法提供有用的信息。使用权限行已经在清单中。 – 2010-02-06 23:01:15

+0

和corey一样 – sami 2011-10-08 17:28:55

0

关于NexusOne崩溃。

由于Corey Trager在他的评论中提到,当查看2.1 SDK附带的ApiDemos包时,缺少的权限不是问题。

一个解决方案,我发现这个问题简单地改变所要求的预览大小CameraPreview

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h){..} 

替换此行:

parameters.setPreviewSize(w,h); 

parameters.setPreviewSize(352,288); 

该决议是G1 DevPhone的合法解决方案。

4

我在Nexus One上使用了一些东西。

如果您正在尝试编写相机应用程序,那么API演示应用程序将无法提供足够的帮助。下载源代码的Android相机应用程序本身:

https://android.googlesource.com/platform/packages/apps/Camera

关于你的问题,你会学到的是,你将需要限制您的清单您的应用程序为横向模式。在SurfaceChanged中,只需调用startPreview。根本不要设置预览大小。

0

您可以使用

List<Camera.Size> getSupportedPreviewSizes()

,并从列表

0

这个问题在Google Code Android defects也提到挑大小,以及它可能对您有所帮助,在底部中提到的代码作为解决预览问题的可能解决方案之一。