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<Camera.Size> getSupportedPreviewSizes ()
然后从列表中选择尺寸
【讨论】:
【参考方案5】:Google Code Android defects 中也提到了这个问题,它可能对您有所帮助,其中一个 cmets 底部提到的代码作为处理预览问题的可能解决方案。
【讨论】:
以上是关于Android SDK 相机 API 演示崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Camera2 API Android min SDK [重复]
Android 高德地图SDK在API 31以上崩溃的问题 GLMapEngine.destroyAMapEngine(GLMapEngine.java:1851)
适配整理Android 7.0 调取系统相机崩溃解决android.os.FileUriExposedException