iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
1
自我挑戰組

練習程式系列 第 25

Android,Barcode scanner、ML Kit

  • 分享至 

  • xImage
  •  

QR and Barcode Scanner | Android Tutorial
https://www.youtube.com/watch?v=otkz5Cwdw38

整理
1
Github第三方類別庫
https://github.com/dm77/barcodescanner

2
Zxing:https://github.com/zxing/zxing
[ 技術探討 ] Barcode 之 ZXing 元件初探

ZXing不僅在網路上被廣泛使用,在Barcode上也算是功能比較完整的套件,不管是透過Encode方法進行產生Barcode、還是透過Decode方法進行解析Barcode值等兩種功能均有提供;不過現在支援的Barcode類型還是有限,但以常用的Barcode類型如QRCode、Code39等來說也已經足夠。

3
ZBar:https://github.com/zxing/zxing

4
條碼

條碼或稱條形碼(barcode)是將寬度不等的多個黑條和空白,按照一定的編碼規則排列,用以表達一組資訊的圖形識別碼。常見的條碼是由反射率相差很大的黑條(簡稱條)和白條(簡稱空)排成的平行線圖案。

QR碼

QR圖碼是二維條碼的一種。QR碼使用四種標準化編碼模式(數字、字母數字、位元組(二進制)和日文(Shift_JIS))來儲存資料。。QR碼比普通一維條碼具有快速讀取和更大的儲存資料容量,也無需要像一維條碼般在掃描時需要直線對準掃描器。因此其應用範圍已經擴展到包括產品跟蹤,物品識別,文件管理,庫存營銷等方面。

QR碼呈正方形,常見的是黑白兩色。在3個角落,印有較小,像「回」字的正方圖案。這3個是幫助解碼軟體定位的圖案,使用者無論以任何角度掃描,資料仍然可以正確被讀取

5
Android activity
Android - Ch5 Android 最基本的元件:Activity、Intent、Fragment

了解一下Activity其生命週期(官網的圖):
https://developer.android.com/images/activity_lifecycle.png?hl=zh-tw

一 onPause():系統呼叫此方法做為使用者離開Activity的第一個指標(但並非一定表示該 Activity 遭到終止)。

二「版面配置」是衍生自 ViewGroup 的檢視,讓子檢視可具有獨特的版面配置模型,例如線性版面配置、網格版面配置或相對版面配置。

三 onPause就是 裝置進入睡眠或顯示對話方塊時,會呼叫 onPause()。
onPause是activity暫停((Activity 物件會保留在記憶體、維護所有狀態,以及繼續附加至視窗管理員))。
onStop()是activity不在顯示(Activity 物件會保留在記憶體,維護所有狀態,但「不會」附加至視窗管理員)。

四 所以可以在 onPause() 時,關閉相機。
如果使用者又回到原本的相機畫面,從onPause()回到onResume,就可以用onResume()開啟相機,
而不是只把開啟相機寫在onCreate()

覆寫每一個方法來測試生命週期:
返回桌面,沒關掉app,會是onPause-->onStop
在回到app會是onStart-->onResume
回前頁會是onPause-->onStop-->onDestroy

其他第三方類別庫:
journeyapps/zxing-android-embedded

6
Google I/O:機器學習服務集大成推出ML Kit,要讓App開發者隨呼即用開發AI應用
Android Studio Tutorial - Barcode QR Code Reader with Firebase ML
Android Text Recognition from Camera - Android Studio Tutorial Text Recogniser using ML KIT
ML4Mobile MLKitBarcodeAndroid
整理
1
ML Kit有 Text Recognition (文字識別)、 Face Detection(人臉檢測) 、Barcode Scanning、Image Labeling
(圖像標註) 、 Object Detection and Tracking(目標檢測與追踪) 、 Landmark Recognition(地標識別)、
...等等

所以可以來試試看條碼

2
遇到問題:
Android Studio 3.6.1 | Error: “This project uses AndroidX dependencies” [duplicate]
如果舊專案 還沒有androidx 要再gradle.properties補

android.useAndroidX=true
android.enableJetifier=true

3
遇到問題:
File google-services.json is missing
要到firebase載google-services.json ,放到 專案 :
https://ithelp.ithome.com.tw/upload/images/20200528/20111994MGumIU6ExP.png

4
barcode 的 套件 ,好像載了就可以直接用了,不用連網路也可以用

5

firebase app registration ERROR => no matching client found for package name
The Google Services Gradle Plugin

現在camerax ,也要加上google-services.json,package name 要跟 firebase的一樣:

"package_name": "com.arindam.camerax.debug"

後來有看了幾篇文章和教學 ,但辨識不到文字 。

所以目前想法,還是把圖片 ,送到伺服器 , 伺服器端在用python的openCV 和tesserect 完成文字辨識 。
How to use OCR (Optical Character Recognition) in an android app
https://stackoverflow.com/questions/62516824/how-to-use-ocr-optical-character-recognition-in-an-android-app

FirebaseVision, ML Kit FirebaseVisionTextRecognizer CUSTOM MODEL OCR for Android
https://stackoverflow.com/questions/63353711/firebasevision-ml-kit-firebasevisiontextrecognizer-custom-model-ocr-for-android

How can we improve Firebase ML kit text-recognition output result on-device?
https://stackoverflow.com/questions/60754920/how-can-we-improve-firebase-ml-kit-text-recognition-output-result-on-device

Extract Text From Image using Android and Google ML Kit
https://www.youtube.com/watch?v=-7pM5ficYoc&ab_channel=brightvarghese


上一篇
Android,camerax、Grid Layout(續)、圖片縮放
下一篇
c、c++ 指標 、 java call by value 和 call by reference
系列文
練習程式37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言