Android SDK 相机 API 演示崩溃

Posted

技术标签:

【中文标题】Android SDK 相机 API 演示崩溃【英文标题】:Android SDK Camera API Demo Crashes 【发布时间】:2010-01-28 03:01:46 【问题描述】:

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

这是我获取代码的链接:

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

【问题讨论】:

任何时候你在 *** 上问一个关于“运行时异常”的问题,如果你发布了堆栈跟踪,那将是一个巨大的帮助。有了这个,我们也许可以提供帮助。没有它,我们必须随机猜测。您可以通过adb logcat、DDMS 或 Eclipse 中的 DDMS 透视图查看堆栈跟踪。 【参考方案1】:

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

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

【讨论】:

非常感谢,我希望他们在演示代码中提到了这一点。 在实际 Nexus One 设备上运行时,即使在调试器中,Camera Preview 也会崩溃,没有任何有用的信息。使用权限行已经在清单中。【参考方案2】:

我的 Nexus One 有一些事情要做。

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

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

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

【讨论】:

【参考方案3】:

关于 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】:

你可以使用

List&lt;Camera.Size&gt; getSupportedPreviewSizes ()

然后从列表中选择尺寸

【讨论】:

【参考方案5】:

Google Code Android defects 中也提到了这个问题,它可能对您有所帮助,其中一个 cmets 底部提到的代码作为处理预览问题的可能解决方案。

【讨论】:

以上是关于Android SDK 相机 API 演示崩溃的主要内容,如果未能解决你的问题,请参考以下文章

应用相机崩溃

Camera2 API Android min SDK [重复]

Kitkat 中的 Android 相机 API 2

Android 高德地图SDK在API 31以上崩溃的问题 GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)

Android SDK:获取原始预览相机图像而不显示它

适配整理Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException