您好,登錄后才能下訂單哦!
小編給大家分享一下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上的,但是由于需要權限才能訪問下載,所以我將它上傳到了百度網盤上共享給大家。
鏈接:https://pan.baidu.com/s/1yhVQqQUZ9goLaT8P4OzTVA?pwd=1234
提取碼:1234
下載完成后,在你電腦的當前登錄用戶目錄下創建一個.m2/repository目錄,并將下載好的庫移到這個目錄當中解壓(注意解壓后的頂層目錄必須是com目錄)。
Linux或Mac用戶可以使用以下命令完成上述操作,Windows用戶請手動操作。
mkdir -p ~/.m2/repository
cd ~/.m2/repository
unzip <downloaded SDK zip file>
接下來在Android Studio中創建一個新的項目,并在項目根目錄的build.gradle文件中添加以下配置:
allprojects {
repositories {
google()
mavenCentral()
mavenLocal() // added
}
}
注意一定要加入mavenLocal()這行,這樣才可以加載到我們本地下載下來的二維碼掃描庫。
然后在app目錄下的build.gradle文件中添加如下依賴:
dependencies {
...
implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-eap1'
}
到這里為止,我們就成功將Google的這個二維碼掃描庫集成到我們項目當中了。
接下來介紹用法,用法就更加簡單了。因為它的本質是發起一個Intent來調起系統的相機程序,然后獲取掃描的結果值就可以了。不需要權限聲明,也不需要動態申請權限,調用一個API即可搞定。代碼如下所示:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById<Button>(R.id.button) val textView = findViewById<TextView>(R.id.text_view) button.setOnClickListener { val scanner = GmsBarcodeScanning.getClient(applicationContext) scanner.startScan().addOnSuccessListener { val result = it.rawValue textView.text = result } } } }
這里當我們點擊一個按鈕時,會調用GmsBarcodeScanning的getClient()方法來獲取一個GmsBarcodeScanner的實例。
然后調用startScan()即可開始掃描二維碼,調用addOnSuccessListener()方法注冊一個回調監聽。當獲取到二維碼掃描結果的時候,我們將掃描出的結果顯示在TextView上面。
整體代碼非常簡單,另外再附上activity_main.xml的布局內容,同樣也非常簡單:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/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的完整版本集成到我們的項目當中才行。
以上是“Android中谷歌推出的官方二維碼掃描庫怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。