android - 自动对焦抛出异常

标签 android android-camera

我已经尝试了所有方法,但仍然无法解决此问题。

我正在应用中实现相机功能,除自动对焦外一切正常。当我调用 autoFocus() 时,它会引发异常,我不明白为什么。我在 Desire HD 上运行代码。

代码:

@Override
protected void onStart() {
     super.onStart();

     //grab seurface view and callback
     cameraView = (CameraSurfaceView) findViewById(R.id.cameraView);
     try{
        camera = Camera.open();
        cameraView.setCamera(camera);
        //release previous autofocus and assign new one
        camera.cancelAutoFocus();
        camera.autoFocus(new Camera.AutoFocusCallback() {

                public void onAutoFocus(boolean success, Camera camera) {
                // TODO Auto-generated method stub

                }});
    }
    catch (Exception e) {
        //had an issue accessing the camera prompt user
        //TODO create user prompt
        e.printStackTrace();
    }
}

堆栈跟踪:

01-11 16:09:38.456: W/System.err(26546): java.lang.RuntimeException: autoFocus failed
01-11 16:09:38.456: W/System.err(26546):    at android.hardware.Camera.native_autoFocus(Native Method)
01-11 16:09:38.456: W/System.err(26546):    at android.hardware.Camera.autoFocus(Camera.java:680)
01-11 16:09:38.456: W/System.err(26546):    at com.myapp.MyActivity.onStart(BarcodeScannerActivity.java:57)
01-11 16:09:38.466: W/System.err(26546):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1201)
01-11 16:09:38.466: W/System.err(26546):    at android.app.Activity.performStart(Activity.java:3955)
01-11 16:09:38.466: W/System.err(26546):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1845)
01-11 16:09:38.466: W/System.err(26546):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1893)
01-11 16:09:38.466: W/System.err(26546):    at android.app.ActivityThread.access$1500(ActivityThread.java:135)
01-11 16:09:38.466: W/System.err(26546):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054)
01-11 16:09:38.466: W/System.err(26546):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-11 16:09:38.466: W/System.err(26546):    at android.os.Looper.loop(Looper.java:150)
01-11 16:09:38.476: W/System.err(26546):    at android.app.ActivityThread.main(ActivityThread.java:4385)
01-11 16:09:38.476: W/System.err(26546):    at java.lang.reflect.Method.invokeNative(Native Method)
01-11 16:09:38.476: W/System.err(26546):    at java.lang.reflect.Method.invoke(Method.java:507)
01-11 16:09:38.476: W/System.err(26546):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
01-11 16:09:38.476: W/System.err(26546):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
01-11 16:09:38.476: W/System.err(26546):    at dalvik.system.NativeStart.main(Native Method)

最佳答案

使用 SurfaceHolder.Callback -> surfaceCreated 了解何时可以启动 AutoFocus。如果未创建 Surfaceholder(持续一段时间),自动对焦将失败。

关于android - 自动对焦抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820702/

相关文章:

android - 如何链接到 Android Market 应用程序

android - 在使用适配器和可绘制对象时尝试在 ListView 中分隔项目。 margin 不起作用

java - Android对每个应用程序使用SD卡的存储限制

android - 如何在保存之前在 android 相机预览应用程序中旋转图像?

java - Android Jelly bean 相机返回空 URI

android - 拒绝访问属性 "vendor.camera.aux.packagelist"

android - 状态栏的高度?

android - 以编程方式制作自定义饼图形状

android - 如何从相机拍摄图像而不保存在 SDCard 中?

android - 使用图库图标启动相机 Intent