前幾天,小編外出shopping完,美滋滋的準備開車回家,結果被車庫的支付二維碼攔住了,距離太遠,一直沒法識別,後面的車主還使勁催促,搞得我很煩躁啊。回家後和朋友吐槽,沒獲得安慰不說,還強行加入了一個關於二維碼反光、遮擋的大型吐槽現場。java
掃碼功能不是已經使用好久了嗎?怎麼還有這麼多問題?android
後來無心中在外網上看到一篇關於華爲 HMS Scan kit的介紹,小編順着文章發如今華爲開發者聯盟網站上能夠下載APK體驗,趕忙試了試效果。華爲 HMS Scan kit功能果真強大,輕鬆解決遠距離、反光、損壞、遮擋等複雜掃碼場景。git
遠距離掃碼
反光掃碼
損壞、遮擋掃碼
github
小編髮現,華爲HMS Scan kit還能夠實現任意角度掃碼、曲面掃碼、同時識別多個碼等,支持13種全球主流碼,徹底能夠知足生活、工做等各種場景使用需求。json
你們能夠戳下方連接,親身感覺下:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Examples-V5/android-sample-code-0000001050734383-V5 瀏覽器
重點來了,這麼好用、強大的掃碼服務功能,怎麼得到呢? app
不要着急,小編已經幫你們把開發流程搬過來了,快來集成吧!maven
在開發應用前,須要在AppGallery Connect中配置相關信息。包括:ide
這裏就很少介紹了,你們能夠參考官網操做:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-get-started#createproject函數
2.1 添加當前應用的AppGallery Connect配置文件
若是在AppGallery Connect中開通了相關服務則須要將「agconnect-services.json」文件添加到您的App中。
一、登陸AppGallery Connect網站,點擊「個人項目」。
二、在項目列表中找到您的項目,在項目中點擊須要集成HMS Core SDK的應用。
三、在「項目設置 > 常規」頁面的「應用」區域,點擊「agconnect-services.json」下載配置文件。
四、將「agconnect-services.json」文件拷貝到應用級根目錄下。
2.2 配置HMS Core SDK的Maven倉地址
一、打開Android Studio項目級「build.gradle」文件。
二、添加HUAWEI agcp插件以及Maven代碼庫。
buildscript { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } dependencies { ... classpath 'com.huawei.agconnect:agcp:1.3.1.300' } } allprojects { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } }
說明:Maven倉地址沒法直接在瀏覽器中打開訪問,只能在IDE中配置。如需添加多個Maven代碼庫,請將華爲公司的Maven倉地址配置在最後。
2.3 添加編譯依賴
一、打開Android Studio項目級「build.gradle」文件。
二、引用SDK。
華爲Scan Kit提供兩種SDK,普通版和plus版。plus版在非華爲手機上效果好點兒但SDK略大。你們能夠根據需求選擇合適的SDK,版本填寫實際的SDK版本號就能夠了。
例如,使用Scan Kit SDK,在「dependencies」中添加以下編譯依賴,{version}須要替換爲SDK當前版本:implementation 'com.huawei.hms:scan:1.2.2.300'。
dependencies{ implementation 'com.huawei.hms:scan:1.2.2.300' }
三、在文件頭apply plugin: 'com.android.application'下一行添加以下配置。
**2.4 同步工程**   在完成以上的配置後,點擊工具欄中的gradle同步圖標,完成「build.gradle」文件的同步,將相關依賴下載到本地。 ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200928162619474.png#pic_center)
一、在調用Scan kit 時,開發者須要先在Manifest中指定相應的權限。
構建相機掃碼功能,須要申請「CAMERA」(相機權限);構建導入圖片掃碼功能,須要申請「READ_EXTERNAL_STORAGE」(讀文件權限)。
<!--相機權限--> <uses-permission android:name="android.permission.CAMERA" /> <!--讀文件權限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!--使用特性--> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />
二、在Manifest中指定權限後,還須要在代碼中動態申請一下權限。
//CAMERA_REQ_CODE爲用戶自定義,用於接收權限校驗結果 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_REQ_CODE);
三、校驗是否開啓相應的權限,決定是否繼續掃碼。
//實現「onRequestPermissionsResult」函數接收校驗權限結果 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { //判斷「requestCode」是否爲申請權限時設置請求碼CAMERA_REQ_CODE,而後校驗權限開啓狀態 if (requestCode == CAMERA_REQ_CODE && grantResults.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { //調用掃碼接口,構建掃碼能力,需開發者實現 ... } }
華爲HMS Scan kit提供Default view mode、Customized view mode、Bitmap mode 、Multi Processor mode 4種調用方式,開發者能夠根據需求構建掃碼功能。
小編這裏介紹下customized view mode開發過程。
一、自定義掃碼頁面元素。
(1)自定義標題
定義文本信息爲「title」變量。
<TextView android:layout_marginStart="10sp" android:layout_toEndOf="@+id/back_img" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:text="@string/title" android:textAllCaps="false" android:textColor="#FFFFFF" android:textSize="20sp" android:textStyle="bold" />
(2)自定義返回按鈕
定義id爲「back_img」的頁面視圖,並綁定點擊返回操做。
(3)自定義閃光燈按鈕
定義閃光燈按鈕的頁面視圖,並綁定開啓關閉操做。
(4)自定義掃碼界面
繪製掃碼框。
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:layout_centerHorizontal="true" android:background="#FF000000" android:alpha="0.1" /> <TextView android:layout_marginTop="225dp" android:layout_centerHorizontal="true" android:text="@string/scan_tip" android:textAllCaps="false" android:textColor="#FFFFFF" android:textSize="15sp" android:textStyle="bold" android:layout_height="20dp" android:layout_width="220dp" /> <!-- 設置掃碼框--> <ImageView android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:layout_centerHorizontal="true" android:background="@drawable/cloors" /> </RelativeLayout>
二、經過Customized view實現相機掃碼功能。
(1)建立Remote View,並加載到Activity佈局。
(2)對Remote View設置結果回調監聽,獲取掃碼結果對象HMS Scan。
@Override protected void onCreate(Bundle savedInstanceState) { … //識別結果回調事件訂閱 remoteView.setOnResultCallback(new OnResultCallback() { @Override public void onResult(HmsScan[] result) { //獲取到掃碼結果HmsScan showResult(result); } }); }
華爲Scan kit依託華爲計算機視覺領域強大能力,支持遠距離碼、小型碼的檢測和自動放大,有效處理反光、遮擋、污損、模糊等複雜掃碼場景,支持Android和iOS系統集成,幫助開發者快速構建關聯服務,提高用戶掃碼體驗和成功率。
Scan Kit的示例代碼已在Github開源:https://github.com/HMS-Core/h...
https://developer.huawei.com/...
欲瞭解更多詳情,請參閱:
華爲開發者聯盟官網:https://developer.huawei.com/consumer/cn/hms
獲取開發指導文檔:https://developer.huawei.com/consumer/cn/doc/development
參與開發者討論請到Reddit社區:https://www.reddit.com/r/HMSCore/
下載demo和示例代碼請到Github:https://github.com/HMS-Core
解決集成問題請到Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest
原文連接:https://developer.huawei.com/...做者:say hi