【问题标题】:zxing qr code scanner camera showing white screenzxing qr 码扫描仪摄像头显示白屏
【发布时间】:2020-08-18 16:59:12
【问题描述】:

美好的一天!我在使用我在项目中作为依赖项添加的库的 android marshmallow 和 nougat 中的 qr 代码扫描仪出现问题,相机显示白屏。代码在棒棒糖和奇巧中完美运行。请让我知道我是否遗漏了什么或者我会做些什么来让它发挥作用。我在下面粘贴了我的 sn-ps 代码。如果你给我一些时间来注意到我的担忧,我很高兴。我已经看到了与我的问题类似的主题,但它并没有帮助我解决问题,或者我执行错误。先感谢您。

我有用于生成二维码的zxing jar 库,我使用me.dm7.barcodescanner:zxing:1.8.4 来扫描二维码:

dependency {
 compile fileTree(dir: 'libs', include: ['*.jar'])
 compile files('libs/zxing-2.1.jar')
 compile('me.dm7.barcodescanner:zxing:1.8.4'){
    exclude group: 'com.google.zxing'
   }
}

打开相机的Activity:

public class ScanQRCodeActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private String strDataEncrypted;
private ZXingScannerView mScannerView;
public static String strEncrypt;
public static String strEncrypted;
public static String strIV;
public static boolean isScanSuccess = false;

@Override
public void onCreate(Bundle state) {
    super.onCreate(state);
    mScannerView = new ZXingScannerView(this);
    setContentView(mScannerView);
}

@Override
public void onResume() {
    super.onResume();
    mScannerView.setResultHandler(this);
    mScannerView.startCamera();
}

@Override
public void onPause() {
    super.onPause();
    mScannerView.stopCamera();
}

@Override
public void handleResult(Result result) {
    strDataEncrypted = result.getText();
    Log.wtf("handleResult", strDataEncrypted);
    String[] strSplit = strDataEncrypted.split("\\|\\|");
    strEncrypted = strSplit[0].trim();
    strIV = strSplit[1];
    CryptLibHelper cryptLibHelper = new CryptLibHelper();
    cryptLibHelper.decrypt(strEncrypted, strIV, new CryptLibHelper.CryptLibDecryptCallback() {
        @Override
        public void onDecryptFailed(String str_message) {
            Log.wtf("onDecryptFailed", str_message);
        }

        @Override
        public void onDecryptSuccess(String str_message) {
            if (str_message.contains("}")) {
                strEncrypt = str_message.replace("}", "");
                Log.wtf("onDecryptSuccess", strEncrypt);
            }
        }
    });
    onBackPressed();
    isScanSuccess = true;
    mScannerView.resumeCameraPreview(this);
}

}

【问题讨论】:

    标签: android android-activity qr-code zxing


    【解决方案1】:

    您是否在您的应用中添加了 CAMERA 权限检查?因为从棉花糖开始,您需要向用户询问一些权限。

    您可以先尝试从设备设置中手动授予您的应用权限。

    【讨论】:

    • 感谢它现在正在工作。 :) 在我的应用程序中检查相机权限是我错过的。非常感谢。
    • 我已经在我的应用程序中拥有相机权限,但仍然获得相同的行为
    • 尝试在棒棒糖中运行你的代码,看看它是否有效。此外,如果您在具有 android 6.0 或更高版本的设备中测试您的代码,请转到设置 > 应用程序 > 您的应用程序并查看您的应用程序的相机权限是否实际启用。如果您仍然面临类似的问题,那么您的代码中似乎一定有一些错误。您也可以尝试问题中发布的上述代码,因为它有效。
    【解决方案2】:

    我时不时遇到这个问题,我的问题是我的应用程序请求相机权限太晚了!确保您的应用程序在创建 ZXing qr 扫描仪实例之前请求相机权限。

    【讨论】:

      最近更新 更多