У меня есть активность, где я инициализирую обнаружение штрих-кода. Тогда я иду к другой деятельности, и когда я нажимаю кнопку назад он запускает цикл этого исключения:После возврата к активности CameraSource отключает исключение null
com.example.myapp E/CameraSource: Exception thrown from receiver.
java.lang.NullPointerException
at com.google.android.gms.vision.CameraSource$zzb.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)
Если я настаиваю и возвратятся к другой деятельности, это пожары еще одно исключение:
com.example.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapp, PID: 22942
java.lang.NullPointerException
at com.google.android.gms.vision.CameraSource$zzb.release(Unknown Source)
at com.google.android.gms.vision.CameraSource.release(Unknown Source)
at com.example.myapp.CameraActivity$3.surfaceDestroyed(CameraActivity.java:184)
at android.view.SurfaceView.updateWindow(SurfaceView.java:586)
at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:240)
at android.view.View.dispatchWindowVisibilityChanged(View.java:8495)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1087)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1087)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1087)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1087)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1087)
at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:1087)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1537)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6602)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:805)
at android.view.Choreographer.doCallbacks(Choreographer.java:605)
at android.view.Choreographer.doFrame(Choreographer.java:575)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:791)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5476)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
CameraSource инициализируется как это в OnCreate:
final CameraSource cameraSource = new CameraSource.Builder(this, barcodeDetector)
.setRequestedFps(15f)
.setAutoFocusEnabled(true)
.build();
mCameraView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
return;
cameraSource.start(holder);
} catch (IOException e) {
Log.e(getClass().getName(), e.getMessage());
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
cameraSource.release();
}
});
Действия Пауза и возобновление, если вы переходите к другому действию, а затем возвращаетесь к ним. Посмотрите здесь, как выпустить камеру на Pause и снова инициализировать ее в разделе «Возобновить». Это может сделать трюк, но не 100% в вашем случае это может быть другая проблема. Https://developer.android.com/training/basics/activity-lifecycle/pausing.html – Tasos
Я переместил код инициализации с 'onCreate 'to' onResume' и защитил отключение камеры, когда ваша ссылка была указана, и теперь все в порядке. Спасибо. – Fabricio
хотел сказать (не на 100% уверен, что если это поможет), но я думаю, что это было :) – Tasos