使用多个 DecoratedBarcodeViews 时视图保持黑色

Posted

技术标签:

【中文标题】使用多个 DecoratedBarcodeViews 时视图保持黑色【英文标题】:View stays black when using multiple DecoratedBarcodeViews 【发布时间】:2018-08-02 03:47:33 【问题描述】:

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

我尝试了他们的标签式示例,其中包含一个条形码阅读器和一个摄像头视图。如果我用额外的条形码阅读器替换相机视图,第一个选项卡中的视图将保持黑色。

我在SectionsPagerAdapter中使用了两个ScanFragmentsTabbedScanning.java

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

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

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

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)

我该怎么做才能使视图不保持黑色并显示正常工作的相机视图?

【问题讨论】:

【参考方案1】:

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

在 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 个不同的设备上对此进行了测试,并且在更改屏幕方向或最小化应用程序后没有遇到任何其他问题。

【讨论】:

以上是关于使用多个 DecoratedBarcodeViews 时视图保持黑色的主要内容,如果未能解决你的问题,请参考以下文章

将多个 CTE 与多个临时表一起使用

PHPUnit:如何使用多个参数模拟多个方法调用?

iOS:使用多个相同的视图控制器处理多个 uilocalnotification

在 MySQL 中使用 LEFT JOINing 多个表搜索多个值

多个视口与多个帧缓冲区之间的使用差异是啥?

使用 iOS 地理围栏跟踪多个(20 多个)位置