У меня проблема с QR-кодом ZXing внутри вкладок. У меня есть 3 фрагмента, один из которых с внедренным ZXing QR, и я заменяю фрагменты при переключении вкладок. У меня есть следующий код в моем классе фрагментов. Основная проблема - когда я плавно переключал вкладки, все работало нормально. Но когда я снова и снова быстро переключал вкладки, то CameraView становился черным, и все потоки и AsychTask приложения перестали работать . Эта проблема уничтожает все мое приложение.
Вот код метода OnResume фрагмента. ScanningThread - это класс, расширенный с помощью Thread, а scannerView - это пользовательский класс CameraView.
ScanningThread scanningThread = new ScanningThread();
scanningThread.setScanListener(scanListener);
scannerView.onResume();
scannerView.setPreviewCallback(scanningThread);
scanningThread.start();
Вот код метода onPause.
this.scannerView.onPause();
this.scanningThread.stopScanning();
Вот мой метод setPreviewCallBack класса CameraView:
public void setPreviewCallback(final @NonNull PreviewCallback previewCallback) {
enqueueTask(new PostInitializationTask<Void>() {
@Override
protected void onPostMain(Void avoid) {
if (camera.isPresent()) {
camera.get().setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
if (!CameraView.this.camera.isPresent()) {
return;
}
final int rotation = getCameraPictureOrientation();
final Size previewSize = camera.getParameters().getPreviewSize();
if (data != null) {
previewCallback.onPreviewFrame(new PreviewFrame(data, previewSize.width, previewSize.height, rotation));
}
}
});
}
}