text android(trustaccess安卓闪退)

未标题-1-4 (1).png

之前使用过Zxing扫描二维码,一直是好用的。方法是:
1.在build文件中添加依赖#

dependencies {
//ZXing
implementation ‘com.google.zxing:core:3.3.3’
implementation { transitive = false }

2.之后只需要一行代码就可以调用扫码功能#
new IntentIntegrator.initiateScan;

然后在当前的Activity中重写onActivityResult去获取结果就ok了。

可是,蕞近开发一个新的项目,使用上述方法扫码的时候却闪退了。看了之前的项目代码,没有什么不一样的地方,而且之前的项目扫码依旧好用,真是百思不得其解。

打开android studio 里面的module setting,发现zxing:core 和zxing-android-embedded都有新版本了,于是就升级到新版本,这时候没有修改之前的任何代码,扫码画面可以出来了,但是扫码之后,返回的结果却是空,什么也没有,而且代码中IntentIntegrator被划上了横线,说是废弃了。建议用ScanOptions和ScanContract替代。

到bing,百度上查了半天,也没有找到解决方法,同样也没有找到能看懂的新版本的用法。想去谷歌查一下,那里总是能得到想要的结果,但是谷歌打不开啊…,why?…
难道是版本升级的问题?
到github上看了一下zxing-android-embedded,发现有好多版本,于是下载了zxing-android-embedded-master.zip ,看了其中的readme,里面是这样写的:
## Older SDK versions

By default, only SDK 24+ will work, even though the library specifies 19 as the minimum version.

For SDK versions 19+, one of the changes below are required.
Some older SDK versions below 19 may work, but this is not tested or supported.

### Option 1. Downgrade zxing:core to 3.3.0

“`groovy
repositories {
mavenCentral
}

dependencies {
implementation { transitive = false }
implementation ‘com.google.zxing:core:3.3.0’
}

我的sdk是21,应该使用这段说明中的代码吧。于是照着改了一下,那么这个新的版本如何扫码呢?里面是这样写的:
## Usage with ScanContract

Note: `startActivityForResult` is deprecated, so this example uses `registerForActivityResult` instead.
See for details: https://developer.android.com/training/basics/intents/result

`startActivityForResult` can still be used via `IntentIntegrator`, but that is not recommended anymore.

“`java
// Register the launcher and result handler
private final ActivityResultLauncher<ScanOptions> barcodeLauncher = registerForActivityResult,
result -> {
if == null) {
Toast.makeText.show;
} else {
Toast.makeText, Toast.LENGTH_LONG).show;
}
});

// Launch
public void onButtonClick {
barcodeLauncher.launch);
}
“`

Customize options:
“`java
ScanOptions options = new ScanOptions;
options.setDesiredBarcodeFormats;
options.setPrompt;
options.setCameraId; // Use a specific camera of the device
options.setBeepEnabled;
options.setBarcodeImageEnabled;
barcodeLauncher.launch;
“`

See [BarcodeOptions][5] for more options.

看来原来的IntentIntegrator是被废弃了,应该用上面的写法。

但是,我没有改之前的代码,之前是这样写的:
try {
IntentIntegrator intentIntegrator = new IntentIntegrator;
intentIntegrator.setPrompt;
intentIntegrator.setOrientationLocked;
intentIntegrator.setBeepEnabled;
intentIntegrator.setDesiredBarcodeFormats;
//intentIntegrator.setTimeout;
intentIntegrator.initiateScan;
}
catch
{
Toast t= Toast.makeText,Toast.LENGTH_LONG);
t.show;
Log.e);
}

然后测试了一下,居然好用了。看来要用蕞新版本的zxing-android-embedded才行。之前的版本莫名其妙的不好用了,谁能告诉我原因呢?看来还是要去github上弟三方库的文档。

zxing-android-embedded是什么呢?
zxing是谷歌开源的让开发者更方便使用摄像头的库,而我们常用的扫码功能就是其中之一。

github地址:https://github.com/zxing/zxing

但是因为zxing的功能太强大了,包含了很多我们用不上的功能,所以一般都会抽取其中的扫码功能单独使用,这个抽取的过程还是有点麻烦的,但是已经有很多开发者为我们省去了这个过程,而zxing-android-embedded就是一个很棒的弟三方zxing库。它就是一个弟三方zxing库,让我们能够简单的调用zxing功能。

github地址:https://github.com/journeyapps/zxing-android-embedded

海外精品引流脚本–最强海外引流  

官网:www.facebook18.com

唯一TG:https://t.me/Facebook181818

Facebook.png

更多海外引流脚本方案

如果你需要脚本演示、部署咨询或海外获客方案,可以通过下面入口继续查看。

官网首页 | 演示视频 | TG 在线客服 | TG 频道

相关阅读

© 版权声明
广告也精彩

相关文章