我已将应用程序上传到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();
}
答案 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.");
}
}
}
}