无法连接到相机错误,但导出到apk时工作

Wil*_*son 2 eclipse android android-camera

所以我正在创建和使用相机API的应用程序.该应用程序即将完成它只需要添加一些功能.但是,当我尝试在模拟器或我的手机上从eclipse启动应用程序时,它会创建一个运行时错误,指出无法恢复活动:无法连接到相机服务.我尝试了多个模拟器,是的,相机选项已打开.我很困惑,为什么它在导出为apk并安装在我的手机上时运行完美但在我尝试调试它或模拟器形式eclipse时不起作用.有任何想法吗?因为我现在不可能错误地跟踪.我看过很多与无法连接到相机服务相关的帖子,但没有运气适用于我的情况.

旁注:此外,相机过去工作正常,几天前运行这个确切的应用程序,没有任何麻烦.我的想法是它与eclipse有关.由于从apk运行时,应用程序在我的手机上完美运行

更新:我卸载了eclipse并重新安装它,同样的错误仍在发生.怎么了?当我在eclipse ahhg中运行它时,这段代码不起作用

我的LogCat:

05-27 22:20:55.197: E/AndroidRuntime(419): FATAL EXCEPTION: main
05-27 22:20:55.197: E/AndroidRuntime(419): java.lang.RuntimeException: Unable to resume activity {com.fuchs.frontcam/com.fuchs.frontcam.MainActivity}: java.lang.RuntimeException: Fail to connect to camera service
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2120)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.os.Looper.loop(Looper.java:123)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread.main(ActivityThread.java:3683)
05-27 22:20:55.197: E/AndroidRuntime(419):  at java.lang.reflect.Method.invokeNative(Native Method)
05-27 22:20:55.197: E/AndroidRuntime(419):  at java.lang.reflect.Method.invoke(Method.java:507)
05-27 22:20:55.197: E/AndroidRuntime(419):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-27 22:20:55.197: E/AndroidRuntime(419):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-27 22:20:55.197: E/AndroidRuntime(419):  at dalvik.system.NativeStart.main(Native Method)
05-27 22:20:55.197: E/AndroidRuntime(419): Caused by: java.lang.RuntimeException: Fail to connect to camera service
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.hardware.Camera.native_setup(Native Method)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.hardware.Camera.<init>(Camera.java:258)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.hardware.Camera.open(Camera.java:220)
05-27 22:20:55.197: E/AndroidRuntime(419):  at com.fuchs.frontcam.MainActivity.initCamera(MainActivity.java:56)
05-27 22:20:55.197: E/AndroidRuntime(419):  at com.fuchs.frontcam.MainActivity.onResume(MainActivity.java:49)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.Activity.performResume(Activity.java:3832)
05-27 22:20:55.197: E/AndroidRuntime(419):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
05-27 22:20:55.197: E/AndroidRuntime(419):  ... 12 more
Run Code Online (Sandbox Code Playgroud)

小智 6

所以我遇到了类似的问题.

从某种意义上说,这种行为似乎是随机的,因为我的应用程序有时会工作 我认为这与释放对象和重新使用它们的时间有关.

在我的情况下,我需要能够一遍又一遍地重复使用相机.

我意识到这个surfaceDestroyed方法不能保证被调用(这是我清理/释放我的相机对象的地方.

我找到的解决方案是在拍完照片后立即清理/释放相机.

在以下示例中,您不需要所有代码行,

我的原始表面包括:

try {
    // Non camera related code
    .....        

    // Start of camera related code 
    // Only clean up what you need to
    if (camera != null) {
        camera.cancelAutoFocus();
        .....       
        camera.stopPreview();
    }
    previewing = false;
    } catch (RuntimeException e) {
        LogUtils.error(LOG_TAG, "Problem in surfaceDestroyed"); //$NON-NLS-1$
        e.printStackTrace();
    } finally {
        // Make sure that at least these two calls are made
        camera.release();
        camera = null;
}
Run Code Online (Sandbox Code Playgroud)

我完成拍摄照片后,我只是将此代码复制到该位置,不再需要相机资源.

对于旧设备2.2.X - 4.0.X surfaceDestroyed总是被调用.对于许多4.1+设备,情况似乎并非如此.