Android | 帶你零代碼實現安卓掃碼功能


小序

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


背景介紹

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


前期准備

  開發工具用的是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. 進來以后頁面是這樣的,一堆廢話,密密麻麻的,可以略過。

在這里插入圖片描述
  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. 在左側的菜單欄中如果上面是一個小機器人,可以下拉選擇一下為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出。


往期鏈接:Android | 教你如何使用HwCameraKit接入相機人像模式
內容來源:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201211373637380068
原作者:Wisteria


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM