安卓SDK相机API演示程序崩溃

3

1
如果你在StackOverflow上询问“运行时异常”相关问题,如果能一并附上堆栈跟踪信息,那将会是非常有帮助的。这样我们或许可以给出正确的答案。没有堆栈跟踪信息,我们只能凭猜测来回答你的问题。你可以通过adb logcat, DDMS或者Eclipse中的DDMS视图查看堆栈跟踪信息。 - CommonsWare
5个回答

7

请确保您已在AndroidManifest.xml文件中设置了使用相机的权限。将此行放置在application标签之上。

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

非常感谢,但我希望他们在演示代码中提到了这一点。 - James
2
在实际的Nexus One设备上运行时,相机预览会崩溃,并且即使在调试器中也没有有用的信息。uses-permission行已经在清单中了。 - Corey Trager

4

我在我的Nexus One上成功解决了问题。

如果您正在尝试编写相机应用程序,API演示应用程序可能不足以提供帮助。请下载Android相机应用程序本身的源代码:

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

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


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兼容的合法分辨率。


0
你可以使用以下代码:

List<Camera.Size> getSupportedPreviewSizes ()

从列表中选择所需的尺寸。

0

这个问题也在Google Code Android defects中提到,对你可能有帮助。其中一个评论底部提到的代码可能是解决预览问题的一种可能方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接