使用多个 DecoratedBarcodeView 时视图保持黑色
View stays black when using multiple DecoratedBarcodeViews
我正在尝试在多个选项卡中使用二维码 reader。在 Google Vision API 出现问题后,我尝试切换到 zxing。首先我尝试使用库 zxing-android-embedded.
我尝试了他们的标签式样本,其中包含条形码reader 和相机视图。如果我用额外的条形码替换相机视图reader,第一个选项卡中的视图将保持黑色。
我在TabbedScanning.java
中的SectionsPagerAdapter
中使用了两个ScanFragments
:
@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.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)
我该怎么做才能使视图不保持黑色并显示有效的相机视图?
我想我已经找到解决该问题的方法:
在 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 种不同的设备上对此进行了测试,并且在更改屏幕方向或最小化应用程序后没有遇到任何其他问题。
我正在尝试在多个选项卡中使用二维码 reader。在 Google Vision API 出现问题后,我尝试切换到 zxing。首先我尝试使用库 zxing-android-embedded.
我尝试了他们的标签式样本,其中包含条形码reader 和相机视图。如果我用额外的条形码替换相机视图reader,第一个选项卡中的视图将保持黑色。
我在TabbedScanning.java
中的SectionsPagerAdapter
中使用了两个ScanFragments
:
@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.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)
我该怎么做才能使视图不保持黑色并显示有效的相机视图?
我想我已经找到解决该问题的方法:
在 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 种不同的设备上对此进行了测试,并且在更改屏幕方向或最小化应用程序后没有遇到任何其他问题。