我正在尝试在多个标签中使用QR码阅读器。 Google Vision API出现问题后,我尝试切换到zxing。首先,我尝试使用库zxing-android-embedded

我尝试了他们的选项卡式样本,其中包含条形码阅读器和cameraview。如果我用其他条形码读取器替换cameraview,则第一个选项卡中的视图将保持黑色。

android - 使用多个DecoratedBarcodeView时 View 保持黑色-LMLPHP

我在ScanFragmentsSectionsPagerAdapter中使用了两个TabbedScanning.java

@Override
public android.support.v4.app.Fragment getItem(int position) {
    if(position == 0) {
        return ScanFragment.newInstance();
    } else {
        return ScanFragment.newInstance();
    }
}


切换标签或更改屏幕方向后,一切正常,但在第一个标签保持黑色之前。

android - 使用多个DecoratedBarcodeView时 View 保持黑色-LMLPHP

我还在日志文件中发现以下错误,我不知道该如何解决。

02-22 09:37:42.164 20935-20974/example.zxing E/CameraInstance: Failed to configure camera
    java.lang.RuntimeException: getParameters failed (empty parameters)
    at android.hardware.Camera.native_getParameters(Native Method)
    at android.hardware.Camera.getParameters(Camera.java:3099)
    at com.journeyapps.barcodescanner.camera.CameraManager.setParameters(CameraManager.java:379)
    at com.journeyapps.barcodescanner.camera.CameraManager.configure(CameraManager.java:159)
    at com.journeyapps.barcodescanner.camera.CameraInstance$4.run(CameraInstance.java:203)
    at android.os.Handler.handleCallback(Handler.java:836)
    at android.os.Handler.dispatchMessage(Handler.java:103)
    at android.os.Looper.loop(Looper.java:203)
    at android.os.HandlerThread.run(HandlerThread.java:61)


我该怎么办才能使视图不保持黑色并显示有效的cameraview?

最佳答案

我想我已经找到解决该问题的方法:

在setUserVisibleHint中,您必须为本地字段分配该片段的当前可见性。

private boolean isVisibleToUser = false;

public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    this.isVisibleToUser = isVisibleToUser;
    ...


并在onResume中检查此值

@Override
public void onResume() {
    super.onResume();
    if (isVisibleToUser)
        barcodeView.resume();
}


我现在已经在2种不同的设备上对此进行了测试,并且在更改屏幕方向或将应用程序最小化后没有遇到任何其他问题。

09-11 19:32