android掃碼 超簡單零代碼

小序

這是一篇純新手教學,本人之前沒有任何安卓開發經驗(尷尬),本文也不涉及任何代碼就可以使用一個掃碼demo,華爲scankit真是新手的福音……

背景介紹

最近被導師要求做一個購物收費的app,畢設好難呀~ 網上找了半天全是zxing,但是掃碼效果真是有點小垃圾,無奈只能繼續尋尋覓覓……突然發現網上有篇講集成hms的文章,稍微借鑑了一下。由於在下是安卓小白,全篇沒有一點代碼,只是搬運一下華爲網站的codelab,抱着忐忑的心情,竟然可以一鍵運行……(^-^)V 開森~

前期準備

小女子用的是android studio

用過android studio的人直接忽略,沒用過的可以參考在https://developer.android.com/studio這裏下載,相關的安裝流程可以參考https://www.cnblogs.com/xiadewang/p/7820377.html。

zxing和華爲掃碼服務對比

回到我們的主題上—掃碼,我在選擇掃碼庫的時候,首先接觸到的是google的開源庫ZXing,也上手進行了實操,可以說集成過程還是蠻簡單的,但是針對我本身的業務場景和需求,識別率上還是不夠達標,自動對焦能力也不具備,不能夠達到即開即用的要求,所以我就繼續進行了調研,就瞭解到了華爲的一個掃碼服務,按照網站上的一些指引,20分鐘就搞出來一個小demo,然後就真香,能夠自定義UI界面,還能夠自動對焦,對於一些有反光,有污損,形變,超遠距離的場景都能很好地識別。特來分享,碼字不易哦。最主要的是華爲掃碼服務是安卓全機型覆蓋,太棒惹!~

開始搬運

當前華爲開發者網站上有一個叫做codelab的東西,鏈接我在下面分享了,親測可用哦https://developer.huawei.com/consumer/cn/codelab/ScanKit-DefaultView/index.html#0


  1. 進來以後頁面是這樣的,一堆廢話,密密麻麻的,可以略過
    在這裏插入圖片描述

  1. 第二步主要說了使用的工具和版本,注意,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過掉
在這裏插入圖片描述


  1. 在左側的菜單欄中如果上面是一個小機器人,可以下拉選擇一下爲project爲了保持以下統一,如果有經驗的可以忽略這步。
    在這裏插入圖片描述

6.這裏在app這個目錄下會發現有個叫agcconnect.json的奇怪文件,這個文件是在華爲官網上註冊自己的賬號以後生成的,這個文件主要是爲了起到雲端校驗的功能,因爲掃碼是純端側的服務,因此這裏只集成掃碼服務的話可以直接刪除,不影響使用。
在這裏插入圖片描述


7.細細研究了一下文檔發現scankit提供了兩種sdk,一種是大的3.3mb,一種是小的0.7mb,大的小的在華爲手機上效果一樣,但是大的在非華爲手機上也有很好的效果。所以果斷選擇大的sdk。
首先需要進入app目錄下的build.gradle。
在這裏插入圖片描述


然後找到最後,將scan替換成scanplus。(這個命名是學蘋果嗎)
在這裏插入圖片描述


8.點擊下圖中標紅的圖標(雲下有個箭頭),靜靜等待一杯咖啡的時間,,發現底下全部都是綠勾以後就大功告成了
在這裏插入圖片描述


9.我這裏準備了一個華爲手機,迫不及待地運行了一下
在這裏插入圖片描述


10.運行之後效果很棒,無論拉近拉遠,反光,模糊,污損效果下都很出色,而且不再需要自己寫zxing操蛋的自動縮放了。完美!

在這裏插入圖片描述


細細研究了一下代碼,發現代碼很簡單,點擊進入mainactivity之後就能看清楚這個app在幹嘛了。

在這裏插入圖片描述


品了一下代碼發現所有的東西都給封裝好了,在回調函數中返回了識別的結果。稍微改吧一下就添加到我的工程裏面了,大功告成,美滋滋。

if (requestCode == REQUEST_CODE_SCAN) {
    Object obj = data.getParcelableExtra(ScanUtil.RESULT);
    if (obj instanceof HmsScan) {
        if (!TextUtils.isEmpty(((HmsScan) obj).getOriginalValue())) {
            Toast.makeText(this, ((HmsScan) obj).getOriginalValue(), Toast.LENGTH_SHORT).show();
        }
        return;
    }
}

結語

做完集成之後又回去看了一下開發者文檔,內容很多,發現scankit的能力比想象中的還要強大,提供了默認掃碼模式,自定義模式,多碼識別模式,還可以生成碼,詳細的我會在接下來的文檔中繼續po出。感謝小哥哥們的關注。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章