精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

鴻蒙開源第三方組件—Zbar_ohos條形碼閱讀器

開源
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[389913]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言

基于安卓平臺的條形碼閱讀器控件ZBar(https://github.com/ZBar/ZBar),實現了鴻蒙化遷移和重構,代碼已經開源到(https://gitee.com/isrc_ohos/ZBar),歡迎各位下載使用并提出寶貴意見!

背景

Zbar-ohos是基于鴻蒙系統的條形碼閱讀器,支持EAN-13 / UPC-A、UPC-E、EAN-8、Code 128、CODE39、Codabar和QR碼的識別,目前已經廣泛應用于掃碼登記、掃碼觀影、掃碼登錄等多個領域。

組件效果展示

1、添加權限

打開軟件后,會顯示如圖1所示的添加攝像頭權限提示。點擊“始終允許”按鈕,并重啟該軟件(刷新UI界面),即可掃描條形碼。

圖1 掃描二維碼界面

2、掃描效果

掃描界面包含兩個部分:對準器和狀態欄。對準器顯示攝像頭拍攝的畫面,條形碼需要置于此范圍內,才可以被掃描。狀態欄用于顯示當前的掃描狀態或掃描結果。

(1)一維條形碼掃描

一維條形碼一般是在水平方向上表達信息,而在垂直方向不表達任何信息。為了方便對準器的讀取,其高度通常是固定的。

ZBar組件掃描一維條形碼的效果圖2所示。攝像頭掃到條形碼時,下方狀態欄的顯示內容由“掃描中”更新為條形碼的掃描結果。掃到下一個條碼時,狀態欄的掃描結果也實時更新。

圖2 條形碼掃描結果

(2)二維條形碼掃描

二維條形碼在水平和垂直方向上都表示信息,信息容量大,結構通常為方形結構,保密級別高,可直接顯示英文、中文、數字、符號、圖型等。

ZBar組件掃描二維條形碼的效果圖3所示。掃描過程與上述一維條形碼一致,狀態欄會顯示二維條形碼的掃描結果。

圖3 二維碼掃描結果

Sample解析

Sample部分首先創建相機設備并合理配置,然后將相機獲得的原始數據傳遞給Library掃描處理,最后獲取掃描結果并顯示在屏幕上。下面對Sample部分的代碼進行具體解釋:

1、生成Camera類對象

CameraKit類可以提供使用相機功能的條目,CameraStateCallbackImpl 類是相機創建和相機運行時的回調。此處通過CameraKit類來生成Camera對象,不同尋常的是,CameraKit類并沒有將Camera對象直接返回,而是需要從CameraStateCallbackImpl 回調中獲取。

  1. private void openCamera(){ 
  2.     // 獲取 CameraKit 對象 
  3.     cameraKit = CameraKit.getInstance(this); 
  4.     if (cameraKit == null) { 
  5.         return
  6.     } 
  7.     try { 
  8.         // 獲取當前設備的邏輯相機列表cameraIds 
  9.         String[] cameraIds = cameraKit.getCameraIds(); 
  10.         if (cameraIds.length <= 0) { 
  11.             System.out.println("cameraIds size is 0"); 
  12.         } 
  13.         // 用于相機創建和相機運行的回調 
  14.         CameraStateCallbackImpl cameraStateCallback = new CameraStateCallbackImpl(); 
  15.         if(cameraStateCallback ==null) { 
  16.             System.out.println("cameraStateCallback is null"); 
  17.         } 
  18.         // 創建用于運行相機的線程 
  19.         EventHandler eventHandler = new EventHandler(EventRunner.create("CameraCb")); 
  20.         if(eventHandler ==null) { 
  21.             System.out.println("eventHandler is null"); 
  22.         } 
  23.         // 創建相機 
  24.         cameraKit.createCamera(cameraIds[0], cameraStateCallback, eventHandler); 
  25.     } catch (IllegalStateException e) { 
  26.         System.out.println("getCameraIds fail"); 
  27.     } 

2、綁定相機的Surface

Surface用于實現相機的預覽、拍照、錄像等功能。此處為相機添加:previewSurface和 dataSurface。前者用來展示相機拍攝到的界面;后者用來讀取并處理相機拍攝到的數據信息。

  1. private final class CameraStateCallbackImpl  extends CameraStateCallback { 
  2.         // 相機創建和相機運行時的回調 
  3.         @Override 
  4.         public void onCreated(Camera camera) { 
  5.                  mcamera = camera;//獲取到Camera 對象 
  6.                  CameraConfig.Builder cameraConfigBuilder = camera.getCameraConfigBuilder(); 
  7.                  if (cameraConfigBuilder == null) { 
  8.                 System.out.println("onCreated cameraConfigBuilder is null"); 
  9.                 return
  10.                  } 
  11.                 // 配置預覽的 Surface 
  12.                 cameraConfigBuilder.addSurface(previewSurface); 
  13.                 // 配置處理數據的Surface 
  14.                 dataSurface = imageReceiver.getRecevingSurface(); 
  15.                 cameraConfigBuilder.addSurface(dataSurface); 
  16.                 try { 
  17.                      // 相機設備配置 
  18.                      camera.configure(cameraConfigBuilder.build()); 
  19.                 } catch (IllegalArgumentException e) { 
  20.                      System.out.println("Argument Exception"); 
  21.                 } catch (IllegalStateException e) { 
  22.                      System.out.println("State Exception"); 
  23.               } 
  24.            } 

3、開啟循環幀捕獲

用戶一般在畫面生成后,才執行拍照或者其他操作。開啟循環幀捕獲后,dataSurface可以獲得來自相機的數據。

  1. @Override 
  2.  public void onConfigured(Camera camera) { 
  3.             // 獲取預覽配置模板  
  4.             FrameConfig.Builder frameConfigBuilder = mcamera.getFrameConfigBuilder(FRAME_CONFIG_PREVIEW); 
  5.             // 配置預覽 Surface 
  6.             frameConfigBuilder.addSurface(previewSurface); 
  7.             // 配置拍照的 Surface 
  8.             frameConfigBuilder.addSurface(dataSurface); 
  9.             try { 
  10.                 // 啟動循環幀捕獲 
  11.                 int triggerId = mcamera.triggerLoopingCapture(frameConfigBuilder.build()); 
  12.             } catch (IllegalArgumentException e) { 
  13.                 System.out.println("Argument Exception"); 
  14.             } catch (IllegalStateException e) { 
  15.                 System.out.println("State Exception"); 
  16.             } 

4、掃描相機數據

dataSurface中的數據為相機原始數據,其格式為YUV420,需要將其封裝為Image類的數據才能執行傳入ImageScanner類進行正式掃描。

  1. // 相機原始數據封裝為Image數據 
  2. Image barcode =  new Image(mImage.getImageSize().width,mImage.getImageSize().height, "Y800"); 
  3. barcode.setData(YUV_DATA); 
  4. //Image數據掃描 
  5. int result = scanner.scanImage(barcode); 

5、顯示預覽數據的掃描結果

由于對準器中的條形碼可能不止一個,ImageScanner類的掃描結果可能也有多個,因此最后返回的掃描結果是SymbolSet類型,此數據類型是可以盛納多個Symbol數據的容器,每個Symbol數據代表一個條形碼的掃描結果。

  1. //創建可以盛納多個Symbol數據的容器SymbolSet  
  2. SymbolSet syms = scanner.getResults(); 
  3. //遍歷SymbolSet 中的每個元素 
  4. for (Symbol sym : syms) {  
  5.     handler.postTask(new Runnable() { 
  6.         @Override 
  7.         public void run() { 
  8.             scanText.setText("掃描結果:" + sym.getData());//獲取Symbol中的信息 
  9.             scanText.invalidate(); 
  10.         } 
  11. }); 

Library解析

Library部分主要是對dataSurface的數據進行掃描,此處主要涉及兩個功能:(1)相機原始數據封裝為Image數據;(2)對Image數據進行掃描。由于這部分主要由C語言實現,所以此處只解析大概原理,展示主要接口,不再進行底層代碼的展示。

(1)相機原始數據封裝為Image數據

Image支持多種數據格式,包括常見的YUV以及RGB數據。此處需要的Image數據是“Y800”類型或者“GRAY”類型,即條形碼的掃描數據僅需要圖像的灰度數據。

  1. public native void setData(byte[] data); 

(2)對Image數據進行掃描

使用scanImage()方法對傳入的Image數據進行掃描。該過程首先對傳入的圖像進行配置校驗,然后以一個像素點為增量逐行掃描,掃描路徑為Z字型,并且完成對掃描數據的濾波,求取邊緣梯度,梯度閾值自適應,確定邊緣等操作,最后將掃描數據轉化成明暗寬度流。 通過明暗寬度流的變化格律可以知道當前正在被掃描的條形碼的種類,然后依據固定的解碼方法進行解碼,便可得到條形碼信息。

  1. public native int scanImage(Image image); 

項目貢獻人

陳叢笑 鄭森文 朱偉 陳美汝 張馨心

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-07-06 18:21:31

鴻蒙HarmonyOS應用

2021-08-30 17:55:58

鴻蒙HarmonyOS應用

2021-04-20 15:06:42

鴻蒙HarmonyOS應用

2021-04-08 14:57:52

鴻蒙HarmonyOS應用

2021-11-02 14:54:21

鴻蒙HarmonyOS應用

2021-11-17 15:37:43

鴻蒙HarmonyOS應用

2021-07-20 15:20:40

鴻蒙HarmonyOS應用

2021-04-15 17:47:38

鴻蒙HarmonyOS應用

2021-08-10 15:23:08

鴻蒙HarmonyOS應用

2021-10-19 10:04:51

鴻蒙HarmonyOS應用

2021-06-29 09:28:16

鴻蒙HarmonyOS應用

2021-06-17 14:56:00

鴻蒙HarmonyOS應用

2021-08-26 16:07:46

鴻蒙HarmonyOS應用

2021-03-10 15:03:40

鴻蒙HarmonyOS應用

2021-04-29 14:32:24

鴻蒙HarmonyOS應用

2021-07-28 09:40:04

鴻蒙HarmonyOS應用

2021-03-24 09:30:49

鴻蒙HarmonyOS應用

2021-08-03 10:07:41

鴻蒙HarmonyOS應用

2021-03-01 14:00:11

鴻蒙HarmonyOS應用

2021-03-03 09:42:26

鴻蒙HarmonyOS圖片裁剪
點贊
收藏

51CTO技術棧公眾號

九色精品美女在线| 91精品欧美综合在线观看最新| 精品乱码一区| 人妻 日韩精品 中文字幕| 精品国产网站| 日韩一区二区电影网| 日韩中文字幕在线免费| 国产专区在线播放| 国精品**一区二区三区在线蜜桃| 欧美激情视频网址| 免费观看a级片| 亚洲一区网址| 欧美在线视频全部完| 欧美日韩激情四射| 你懂得在线网址| 国产一区在线不卡| 国产成人av在线播放| 日本 欧美 国产| 亚洲bt欧美bt精品777| 欧美高清视频一二三区| 青青在线视频观看| 日本理论片午伦夜理片在线观看| 国产日韩欧美精品一区| 国产二区不卡| 97人妻精品一区二区三区| 一道本一区二区| 欧美精品日韩三级| 国产破处视频在线观看| 欧美久久精品| 日韩欧美你懂的| www.日本一区| 日韩伦理三区| 狠狠干狠狠久久| 好吊色视频988gao在线观看| av天在线观看| 久久一区二区视频| 亚洲va男人天堂| 亚洲综合精品国产一区二区三区 | 26uuu久久综合| 波多野结衣精品久久| 国产一区二区三区三州| 日韩av中文字幕一区二区| 97在线视频免费| 精品无码久久久久久久| 你懂的亚洲视频| 久久精品亚洲94久久精品| 丰腴饱满的极品熟妇| 亚洲免费福利一区| 国产视频精品xxxx| 少妇一级淫免费观看| 国产精品白浆| 精品国产一二三| 久久久久亚洲AV成人网人人小说| 国产精品亚洲综合在线观看 | 偷拍自拍在线视频| www.久久精品| 久久久久久久久久久久久久久久av | 亚洲黄色在线观看| 大尺度在线观看| 超碰精品在线观看| 亚洲精品国精品久久99热| 美女久久久久久久久| 超碰成人97| 日韩理论片久久| 成人午夜福利一区二区| 欧美最新另类人妖| 日韩综合视频在线观看| 永久免费看mv网站入口| 欧美日本中文| 97在线看免费观看视频在线观看| 国产精品999在线观看| 国产精品老牛| 国产精品aaaa| 国产一区二区在线播放视频| 激情综合亚洲精品| 高清视频一区二区三区| 三级视频在线| 国产精品第一页第二页第三页| 亚洲女人毛片| 手机在线免费看av| 五月婷婷欧美视频| 玩弄japan白嫩少妇hd| 成人四虎影院| 欧美成人aa大片| 人妻熟女aⅴ一区二区三区汇编| 欧美极品中文字幕| 久久九九免费视频| 九九热国产视频| 日韩福利电影在线观看| 91久久国产综合久久91精品网站| 亚洲精品18在线观看| 91首页免费视频| 亚洲最大免费| 91豆花视频在线播放| 91电影在线观看| 欧美69精品久久久久久不卡 | 亚洲欧美日韩精品在线| 午夜羞羞小视频在线观看| 精品国产精品自拍| 最新天堂中文在线| 欧美日韩直播| 欧美乱大交xxxxx| 国产99免费视频| 成人小视频在线| 亚洲成人自拍视频| 51精品视频| 宅男噜噜噜66一区二区66| 91丝袜在线观看| 国产精品成人一区二区不卡| 26uuu久久噜噜噜噜| 国产精品久久久久久久久久久久久久久久 | 偷拍欧美精品| 91地址最新发布| av老司机久久| 中文字幕乱码亚洲精品一区| 国产在线无码精品| 国产精品66| 日韩大陆毛片av| 91嫩草|国产丨精品入口| 欧美一级专区| 国产高清精品一区二区| 色综合久久久久综合一本到桃花网| 亚洲va中文字幕| www,av在线| 日韩欧美午夜| 日本高清久久天堂| 男人的天堂a在线| 亚洲欧洲中文日韩久久av乱码| 亚洲熟妇av一区二区三区| 97se亚洲| 久久伊人精品天天| 在线视频精品免费| 久久综合色之久久综合| 97免费视频观看| 久久国产精品美女| 日韩视频欧美视频| 国产精品成人久久久| 91蝌蚪porny| 少妇无码av无码专区在线观看 | 欧美日韩在线播放一区二区| 51漫画成人app入口| 日韩欧美一卡二卡| 青青青在线免费观看| 精品一区二区三区免费| 亚洲欧洲精品一区二区三区波多野1战4 | 黄色一级片免费的| 欧美限制电影| 国产精品无码专区在线观看| 日本一级在线观看| 黑人巨大精品欧美一区二区| 日本精品一二三区| 国产一区日韩一区| 99久久99久久| 欧美寡妇性猛交xxx免费| 日韩精品一区二区三区在线观看| 欧美肥妇bbwbbw| 国产精品资源网| 337p亚洲精品色噜噜狠狠p| 久久伊人影院| 国内免费久久久久久久久久久| 黄色三级网站在线观看| 亚洲不卡av一区二区三区| 中国av免费看| 久久久久久夜| 亚洲国产精品久久久久婷婷老年| 99久久伊人| 久久深夜福利免费观看| 精品毛片一区二区三区| 亚洲图片欧美色图| 在线免费观看日韩av| 日韩av网站免费在线| 亚洲国产欧美日韩| 精品网站999| 国内精品小视频| 精品视频一二区| 555夜色666亚洲国产免| 国产亚洲自拍av| 91麻豆精品在线观看| 国产视频手机在线播放| 亚洲精品极品少妇16p| 国产乱子伦精品| 国模视频一区| 久久av在线播放| 午夜成人鲁丝片午夜精品| 欧美中文字幕一区二区三区 | 精品人伦一区二区三区蜜桃免费| 精品久久久久久中文字幕人妻最新| 久久久综合网| 黄色a级在线观看| 欧美黑白配在线| 国产精品免费一区豆花| bt在线麻豆视频| 亚洲欧洲美洲在线综合| 国产一区二区女内射| 欧美日韩免费一区| 日韩成人短视频| 久久蜜臀精品av| 被黑人猛躁10次高潮视频| 性欧美暴力猛交另类hd| 日本黄色播放器| 亚洲最好看的视频| 91传媒在线免费观看| 欲香欲色天天天综合和网| 久久精品男人天堂| 青草久久伊人| 精品卡一卡二卡三卡四在线| 亚洲av人无码激艳猛片服务器| 亚洲一区二区三区四区中文字幕| 蜜桃无码一区二区三区| 国产精品自拍一区| 亚洲一二三区av| 亚洲国产免费| 欧美日韩一区二区三区电影| 久久av网址| 国产91亚洲精品一区二区三区| 本网站久久精品| 欧美最顶级丰满的aⅴ艳星| 91蜜桃在线视频| 日韩在线观看免费全| 黄色电影免费在线看| 亚洲精美色品网站| 性中国古装videossex| 欧美日韩国产免费| 麻豆精品久久久久久久99蜜桃| 亚洲一区二区三区中文字幕在线| www.黄色com| 久久久久99精品一区| v天堂中文在线| 高清成人免费视频| 国产探花在线看| 日本亚洲三级在线| 男人操女人免费| 久久av一区二区三区| 国产伦精品一区二区三区四区视频_| 欧美二区不卡| 久久久无码中文字幕久...| 97国产精品| 一卡二卡3卡四卡高清精品视频| 精品视频99| 亚洲国产精品综合| 成人看的视频| 亚洲精品白虎| 精品国产一级毛片| 污视频在线免费观看一区二区三区| 宅男在线一区| 牛人盗摄一区二区三区视频| 色爱av综合网| 欧美激情导航| 国产影视一区| 亚洲高清123| 91精品国产调教在线观看| 综合视频免费看| 亚洲电影影音先锋| 视频一区二区视频| 欧美激情成人在线| www.成年人视频| 亚洲综合日本| 少妇激情一区二区三区| 日本不卡一区二区三区高清视频| 国产高清视频网站| 精品一区二区三区视频| 能看毛片的网站| 成人黄色在线看| jizz欧美性20| 久久久99精品免费观看| 中文字幕欧美激情极品| 中文字幕在线免费不卡| 日韩视频中文字幕在线观看| 樱花影视一区二区| 日本免费一二三区| 色狠狠色噜噜噜综合网| 96亚洲精品久久久蜜桃| 日韩三级中文字幕| 神马久久久久久久久久| 国产亚洲精品久久久久动| 成人影院在线看| 96精品视频在线| 成人性片免费| av一区二区三区四区电影| 日韩有码一区| 伊人久久大香线蕉精品| 亚洲午夜黄色| 免费黄色一级网站| 国产成人鲁色资源国产91色综| 日本一区二区三区网站| 中文字幕日韩一区| 日韩精品视频播放| 欧美日韩欧美一区二区| 丰满肥臀噗嗤啊x99av| 在线观看国产欧美| 丁香花高清在线观看完整版| 国产精品444| 亚洲一区二区三区日本久久九| 欧美一区1区三区3区公司| 午夜精品久久久久99热蜜桃导演 | 中文字幕国产日韩| 污视频在线看网站| 国产激情999| aiss精品大尺度系列| 日韩不卡av| 91久久久久| 亚洲女人在线观看| 欧美激情综合在线| 日韩黄色a级片| 欧美精品乱码久久久久久按摩| 天天爱天天干天天操| 久青草国产97香蕉在线视频| 台湾佬中文娱乐久久久| 国产欧美韩日| 真实国产乱子伦精品一区二区三区| 日韩激情免费视频| 国产成人精品一区二| 亚洲国产av一区| 亚洲一区二区三区国产| 91精品中文字幕| 亚洲视频在线免费看| www.色在线| 99热在线国产| 亚洲一区二区日韩| 午夜宅男在线视频| 久久新电视剧免费观看| 日韩av免费网址| 欧美岛国在线观看| 50度灰在线| 91久久在线播放| 久久精品青草| 亚洲美女性囗交| 国产精品人妖ts系列视频| 无码人妻精品一区二区三区9厂 | eeuss影院在线播放| 欧美专区在线观看| 日韩高清成人在线| xxxx18hd亚洲hd捆绑| 国产精品一区二区三区99| 亚洲天堂网av在线| 欧美精品一级二级| 亚洲成人三级| 成人精品aaaa网站| 97精品一区二区| 亚洲精品免费一区亚洲精品免费精品一区| 久久精品亚洲乱码伦伦中文| 黄色片网站在线免费观看| 亚洲国产欧美自拍| 捆绑调教日本一区二区三区| 国产精品xxxx| 亚洲精品激情| 波多野结衣影院| 色综合久久综合中文综合网| 日本一二三区在线视频| 日韩av电影在线播放| 精品国产一区二区三区香蕉沈先生 | 成人高清免费在线| 成人午夜黄色影院| 欧美在线观看天堂一区二区三区| 免费观看黄网站| 亚洲第一狼人社区| 你懂的在线观看视频网站| 欧洲午夜精品久久久| 国产精品中文字幕亚洲欧美| 熟女人妇 成熟妇女系列视频| 国产亚洲一区二区在线观看| 欧美成人精品网站| 色婷婷**av毛片一区| 成人污版视频| 国产69精品久久久久999小说| 91免费观看视频在线| 日本一区二区三区久久| 久久亚洲成人精品| 国产精品天天看天天狠| 黄色网页免费在线观看| 久久久亚洲午夜电影| 亚洲视频一区二区三区四区| 欧美精品免费在线| 日韩一级电影| 中文字幕久久av| 亚洲国产精品一区二区尤物区| 青青久在线视频| 91精品国产自产在线老师啪| 狠狠色丁香久久综合频道| 国产精品九九九九九| 欧美日本韩国一区| 丁香花在线影院| 日韩福利一区二区三区| 国产精品一二三四区| 亚洲欧美自拍视频| 久久电影一区二区| 五月天亚洲一区| 亚洲天堂av一区二区三区| 婷婷国产在线综合| 在线免费观看黄色网址| 国产精品免费观看高清| 琪琪一区二区三区| 精品无码免费视频| 中文字幕视频在线免费欧美日韩综合在线看| 国产麻豆精品| 久久国产色av免费观看| 一区二区三区四区五区视频在线观看 | 精品国产乱码一区二区| 久久亚洲精品小早川怜子66| 偷拍自拍亚洲色图|