Android:几个Camera API问题

标签 android api release orientation android-camera

我正在使用以下 URL 提供的代码来尝试使用 Android Camera API:

http://marakana.com/forums/android/examples/39.html

这提出了几个问题,到目前为止我一直试图找到答案但没有成功。

1) 我的应用程序需要纵向,但我看到的所有代码示例(包括上面提到的 URL 中的代码示例)似乎都依赖于横向。事实上,到目前为止,无论我尝试过什么,风景似乎都是不可避免的。我试过像这样强制 surfaceCreated(...) 中的参数:

Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
parameters.set("rotation", "90");
camera.setParameters(parameters);

我尝试在 surfaceChanged(...) 中做同样的事情。当然,我在manifest中也设置了我的orientation为portrait,如下:

android:screenOrientation="portrait"

有人对我做错了什么以及如何解决它有什么建议吗?

2) 另一个问题是释放相机资源。在上述文章的代码中,surfaceDestroyed(...) 方法中调用了以下内容:

camera.stopPreview();
camera = null;

没有释放摄像头资源的东西,所以在你运行这个应用程序之后,任何后续使用摄像头的应用程序都将无法运行。为了解决这个问题,我添加了一个释放资源的调用,如下所示:

camera.stopPreview();
camera.release();
camera = null;

但是,这里的问题是,当我关闭应用程序时,我在 LogCat 中得到一个“强制关闭”,但出现以下异常:

FATAL EXCEPTION: main
java.lang.RuntimeException: Method called after release()
    at android.hardware.Camera.setHasPreviewCallback(Native Method)
    at android.hardware.Camera.access$600(Camera.java:58)
    at android.hardware.Camera.$EventHandler.handleMessage(Camera.java:344)
    at android.os.Handler.dispatchMessage(Handler.java.99)
    at android.os.Looper.loop(Looper.java:144)
    at android.app.ActivityThread.main(ActivityThread.java:4937)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lanf.reflect.Method.invoke(Method.java:521)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    at dalvik.system.NativeStart.main(Native Method)

谁能告诉我为什么不能释放那里的相机资源?

提前谢谢大家。这个相机的东西快把我逼疯了。

附言我正在 HTC Evo 上测试所有这些。

最佳答案

对于 (1),如果您正在为 API 级别 9 进行开发,您可以尝试在 developer website 上发布的代码.

对于 (2),您需要确保执行以下操作:

    if (mCamera != null) {
        mCamera.setPreviewCallback(null);
        mCamera.release();
        mCamera = null;
    }

基本上,在您调用 release() 之前,您需要将 setPreviewCallback 设置为 null。这是相机堆栈的一个已知问题

关于Android:几个Camera API问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694452/

相关文章:

android - build.gradle 文件中的 compileKotlin block 抛出错误 "Could not find method compileKotlin() for arguments [...]"

javascript - 如何在 Spotify 中从特定时间开始播放歌曲

android - 在 Azure DevOps 中共享版本信息

svn - Subversion 中发布和项目的良好存储库布局是什么?

android - 如何处理android手机中的串口?

java - Android:复选框监听器

rest - GitHub API : how to get total number of accessible repositories

PHP + Quickbook 在线版(API 集成)?

c# - 无法在 Release 上构建我的类库,只能在 Debug 上构建

java - 延迟发布通知