使用ZXing时Xperia设备上的RuntimeException

时间:2014-05-12 19:36:23

标签: android google-play zxing qr-code runtimeexception

我已将应用程序上传到Google Play。该应用程序应该扫描一个极点的QR码来注册访问。它适用于所有设备,但索尼XPERIA型号。在Google Play开发者控制台中,我遇到了很多特定的崩溃:

java.lang.RuntimeException: autoFocus failed
at android.hardware.Camera.native_autoFocus(Native Method)
at android.hardware.Camera.autoFocus(Camera.java:975)
at me.dm7.barcodescanner.core.CameraPreview$1.run(CameraPreview.java:196)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method) 

我称之为相机的唯一地方是:

public class ScannerActivity extends Activity implements ZXingScannerView.ResultHandler {

private ZXingScannerView m_ScannerView;


@Override
public void onCreate(Bundle state) {

  super.onCreate(state);
  m_ScannerView = new ZXingScannerView(this);
  setContentView(m_ScannerView);
}

@Override
public void onResume() {

  super.onResume();
  m_ScannerView.setResultHandler(ScannerActivity.this);
  m_ScannerView.startCamera();
}

@Override
public void onPause() {

  super.onPause();
  m_ScannerView.stopCamera();
}

1 个答案:

答案 0 :(得分:1)

据我所知,这是ZXing中的一个错误。您可以通过将ZXingSurfaceView:AutoFocus替换为捕获异常的实现来实现变通方法。 (如果你走这条路,你还必须更换一些其他文件,或者你自己重新编译ZXing)。但是,这并没有解决根本原因。

此错误已于2015年7月29日在ZXing中修复,因此更新到最新版本可能更容易。

public void AutoFocus()
{
    if (camera != null)
    {
        if (!tokenSource.IsCancellationRequested)
        {
            global::Android.Util.Log.Debug("ZXING", "AutoFocus Requested");

            try
            {
                camera.AutoFocus(this);
            }
               catch (RuntimeException ex)
            {
                Console.WriteLine("ZXING: Warning: Caught RuntimeException during AutoFocus."); 
            }
        }
    }
}