Android详细讲解⾕歌推出的官⽅⼆维码扫描
相信⼆维码扫描现在⼤家都已经不稀奇了,⼏乎所有的App⾥都会⽀持这个功能。
这⾥我要问⼤家⼀个问题,你们都是如何在⾃⼰的App中加⼊⼆维码扫描功能的呢?
相信会有⼀⼤部分朋友说,使⽤的是ZXing或者ZBar这种开源库。
但是不知道⼤家有没有思考过,⼆维码功能这么常见,为什么Google却没有提供⼀个官⽅的⼆维码扫描库呢?
于小伟主演的电视剧反正我是没思考过。有需求,开源,这可能已经成了很多Android开发者的常态化思维。
但令我没想到的是,官⽅的⼆维码扫描库,它真的要来了。
由于我是Google的GDE,有的时候可以提前体验到⼀些Google还未正式对外开放,仍在开发当中的API。
就在不久之前,我收到了⼀封Google发来的邮件,内容如下:
当我看到邮件⾥提到了Google官⽅要推出⼀个⼆维码、条形码扫描库时,我⽴刻被吸引到了,并且跟Google表达了我想尝鲜的意愿。
⼏经折腾之后,我终于将这个库的⼀整套流程跑通了。总体来说,体验还不错,有优点也有缺点,下⾯我来逐条分析。
第⼀个优点是,API⾮常简单,傻⽠式接⼝,初学者都会⽤。⽐起ZXing和ZBar的学本成本要低很多。
其次,更加保护⽤户隐私性。因为它的功能实现是基于Intent机制委托Android系统来调起⼿机摄像头的,系统扫描出结果之后再将信息返回给我们,这样我们就不⽤在⾃⼰的App当中去申请摄像头权限了。
⾄于缺点的话,最⼤的问题就是,它依赖于Google Play Service,所以对于国内⼿机⽽⾔的话,基本就是完全⽆法使⽤的(不过下⽂也有其他解决⽅案)。⽽如果你们的产品是⾯向海外市场的话,这条就算不上什么缺点了。庆祝警察节话语
另外我测试了⼀下,⼆维码的识别效率不算很⾼,⾄少⽬前跟的识别效率是没法⽐的。但是毕竟后期升级维护都是靠Google,服务有保障,相信以后识别效率会有显著的提升。
优缺点就介绍到这⾥吧,如果你对这个库感兴趣,也想跟我⼀样尝鲜的话,那么本篇⽂章接下来的内
容就是教你如何集成并使⽤这个库来进⾏⼆维码扫描。
⾸先确保你的⼿机有安装Google Play Service,并且版本在21.45.15以上,不然后⾯的代码是跑不通的。
另外这个库暂时还没有上线,所以不能通过在线maven仓库的⽅式集成到我们项⽬当中。⽽是要先将这个库下载到本地,再通过本地maven仓库的⽅式集成进来。
牛年的吉祥语四字成语
我们⼀步步操作。
这个库的下载地址本来是在Google Drive上的,但是由于需要权限才能访问下载,所以我将它上传到了百度⽹盘上共享给⼤家。
下载完成后,在你电脑的当前登录⽤户⽬录下创建⼀个.m2/repository⽬录,并将下载好的库移到这个⽬录当中解压(注意解压后的顶层⽬录必须是com⽬录)。
Linux或Mac⽤户可以使⽤以下命令完成上述操作,Windows⽤户请⼿动操作。
mkdir -p ~/.m2/repository
cd ~/.m2/repository
unzip <downloaded SDK zip file>
接下来在Android Studio中创建⼀个新的项⽬,并在项⽬根⽬录的adle⽂件中添加以下配置:
allprojects {
repositories {
google()
mavenCentral()
mavenLocal() // added
}
}
注意⼀定要加⼊mavenLocal()这⾏,这样才可以加载到我们本地下载下来的⼆维码扫描库。
然后在app⽬录下的adle⽂件中添加如下依赖:
dependencies {
...
implementation 's:play-services-code-scanner:16.0.0-eap1'
}
到这⾥为⽌,我们就成功将Google的这个⼆维码扫描库集成到我们项⽬当中了。
接下来介绍⽤法,⽤法就更加简单了。因为它的本质是发起⼀个Intent来调起系统的相机程序,然后获取扫描的结果值就可以了。不需要权限声明,也不需要动态申请权限,调⽤⼀个API即可搞定。代码如下所⽰:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setContentView(R.layout.activity_main)
val button = findViewById<Button>(R.id.button)
val textView = findViewById<TextView>(_view)
button.setOnClickListener {
val scanner = Client(applicationContext)
scanner.startScan().addOnSuccessListener {
val result = it.rawValue
< = result
}
}
}
摩托化油器}
这⾥当我们点击⼀个按钮时,会调⽤GmsBarcodeScanning的getClient()⽅法来获取⼀个GmsBarcodeScanner的实例。
然后调⽤startScan()即可开始扫描⼆维码,调⽤addOnSuccessListener()⽅法注册⼀个回调监听。当获取到⼆维码扫描结果的时候,我们将扫描出的结果显⽰在TextView上⾯。
整体代码⾮常简单,另外再附上l的布局内容,同样也⾮常简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">张嘉倪八卦
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan Code" />
<TextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
现在运⾏⼀下程序,效果如下图所⽰:高清网络电视机顶盒
可以看到,整个⼆维码扫描界⾯都是由Google给我们提供的,扫描框也是典型的Google风格。我们只需要调⽤API,获取扫描结果即可,接⼊成本⾮常⾮常低。
但是如此⽅便的⼆维码扫描库却只能造福海外的开发者,国内由于没有Google Play Service,我们⽆法直接享受到这个库所带来的便利性。
于是我也将这个问题提给了Google,对于中国的开发者,如果也想要⽤这个⼆维码扫描库怎么办?
得到的答复是,Google是将ML Kit barcode scanner绑定成为了Google Play Service的⼀部分安装到各个⼿机上的,如果我们的⼿机上没有Google Play Service,那么就需要将ML Kit barcode scanner的完整版本集成到我们的项⽬当中才⾏。
完整版本的集成⽂档我也讨来了,链接如下:
上述⽂档中还包含了如何从⼀张图⽚、或者⼀个Bitmap对象中解析⼆维码的功能,具体详情请参考⽂档即可,这⾥就不再展开讲解了。
⼀篇技术尝鲜⼩短⽂送给⼤家。
到此这篇关于Android详细讲解⾕歌推出的官⽅⼆维码扫描库的⽂章就介绍到这了,更多相关Android ⼆维码扫描库内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!