zxing qr代码扫描仪相机显示白色屏幕

时间:2017-08-31 03:00:29

标签: android android-activity qr-code zxing

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

我有zxing jar库用于生成qr代码,我使用了我.dm7.barcodescanner:zxing:1.8.4扫描qr代码:

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'
   }
}

打开相机的活动:

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);
}

}

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

我经常遇到这个问题,我的问题是我的应用程序请求相机权限太晚了!确保您的应用程序正在之前请求相机权限。