最近被導師要求做一個購物收費的app杨赤,畢設(shè)好難呀~ 網(wǎng)上找了半天全是zxing,但是掃碼效果真是有點小垃圾枯跑,無奈只能繼續(xù)尋尋覓覓……突然發(fā)現(xiàn)網(wǎng)上有篇講集成hms的文章旷坦,稍微借鑒了一下。由于在下是安卓小白搀崭,全篇沒有一點代碼叨粘,只是搬運一下華為網(wǎng)站的codelab,抱著忐忑的心情瘤睹,竟然可以一鍵運行……(^-^)V 開森~
小女子用的是android studio
3.5.1升敲,用過android studio的人直接忽略,沒用過的可以參考在https://developer.android.com/studio這里下載轰传,相關(guān)的安裝流程可以參考https://www.cnblogs.com/xiadewang/p/7820377.html驴党。
回到我們的主題上---掃碼,我在選擇掃碼庫的時候获茬,首先接觸到的是google的開源庫ZXing港庄,也上手進行了實操倔既,可以說集成過程還是蠻簡單的,但是針對我本身的業(yè)務(wù)場景和需求攘轩,識別率上還是不夠達標叉存,自動對焦能力也不具備码俩,不能夠達到即開即用的要求度帮,所以我就繼續(xù)進行了調(diào)研,就了解到了華為的一個掃碼服務(wù)稿存,按照網(wǎng)站上的一些指引笨篷,20分鐘就搞出來一個小demo,然后就真香瓣履,能夠自定義UI界面率翅,還能夠自動對焦,對于一些有反光袖迎,有污損冕臭,形變,超遠距離的場景都能很好地識別燕锥。特來分享辜贵,碼字不易哦。
當前華為開發(fā)者網(wǎng)站上有一個叫做codelab的東西归形,鏈接我在下面分享了托慨,親測可用哦https://developer.huawei.com/consumer/cn/codelab/ScanKit-DefaultView/index.html#0
1.進來以后頁面是這樣的,一堆廢話暇榴,密密麻麻的厚棵,可以略過
2. 第二步主要說了使用的工具和版本,注意蔼紧,android4.4婆硬,新下Android studio的朋友們可以略過,小哥哥們可能需要更新一下
3.直接下載sample code奸例,talk is cheap,
show me the code彬犯。
4.打開android studio,在file下拉菜單中找到open哩至,選擇剛剛解壓好的文件目錄躏嚎,在我這里是D:\codelab\Codelab_ScanKit_DefaultView_Full_Demo。然后跳出來這個玩意菩貌,直接ok過掉
5. 在左側(cè)的菜單欄中如果上面是一個小機器人卢佣,可以下拉選擇一下為project為了保持以下統(tǒng)一,如果有經(jīng)驗的可以忽略這步箭阶。
6.這里在app這個目錄下會發(fā)現(xiàn)有個叫agcconnect.json的奇怪文件虚茶,這個文件是在華為官網(wǎng)上注冊自己的賬號以后生成的戈鲁,這個文件主要是為了起到云端校驗的功能,因為掃碼是純端側(cè)的服務(wù)嘹叫,因此這里只集成掃碼服務(wù)的話可以直接刪除婆殿,不影響使用。
7.細細研究了一下文檔發(fā)現(xiàn)scankit提供了兩種sdk罩扇,一種是大的3.3mb婆芦,一種是小的0.7mb,大的小的在華為手機上效果一樣喂饥,但是大的在非華為手機上也有很好的效果消约。所以果斷選擇大的sdk。
首先需要進入app目錄下的build.gradle员帮。
然后找到最后或粮,將scan替換成scanplus。(這個命名是學蘋果嗎)
8.點擊下圖中標紅的圖標(云下有個箭頭)捞高,靜靜等待一杯咖啡的時間氯材,蜂科,發(fā)現(xiàn)底下全部都是綠勾以后就大功告成了
9.我這里準備了一個華為手機潦嘶,迫不及待地運行了一下
10.運行之后效果很棒漠趁,無論拉近拉遠椰于,反光蚓耽,模糊歉闰,污損效果下都很出色装悲,而且不再需要自己寫zxing操蛋的自動縮放了椅您。完美贱除!
細細研究了一下代碼生闲,發(fā)現(xiàn)代碼很簡單,點擊進入mainactivity之后就能看清楚這個app在干嘛了月幌。
品了一下代碼發(fā)現(xiàn)所有的東西都給封裝好了碍讯,在回調(diào)函數(shù)中返回了識別的結(jié)果。稍微改吧一下就添加到我的工程里面了扯躺,大功告成捉兴,美滋滋。
if (requestCode == REQUEST_CODE_SCAN) {
??? Object obj =data.getParcelableExtra(ScanUtil.
RESULT);
??? if
(obj instanceofHmsScan) {
if (!TextUtils.isEmpty(((HmsScan)obj).getOriginalValue())) {
??????????? Toast.makeText(
this, ((HmsScan) obj).getOriginalValue(), Toast.LENGTH_SHORT).show();
}
return;
}
}
做完集成之后又回去看了一下開發(fā)者文檔录语,內(nèi)容很多倍啥,發(fā)現(xiàn)scankit的能力比想象中的還要強大,提供了默認掃碼模式澎埠,自定義模式虽缕,多碼識別模式,還可以生成碼蒲稳,詳細的我會在接下來的文檔中繼續(xù)po出氮趋。感謝小哥哥們的關(guān)注伍派。筆芯哦~