91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙系統(tǒng)生成二維碼技術(shù)

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:鴻蒙技術(shù)社區(qū) ? 作者:軟通動(dòng)力HOS ? 2021-10-19 09:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在實(shí)際應(yīng)用開發(fā)中,時(shí)不時(shí)的會(huì)遇到 AI 領(lǐng)域相關(guān)的一些技術(shù),本節(jié)主要詳細(xì)講述一下生成二維碼技術(shù),二維碼可能涉及在各領(lǐng)域中,如:社交或通訊類應(yīng)用、購(gòu)物或支付類應(yīng)用等。

所以對(duì)于 HarmonyOS 開發(fā)者而言,也需要了解和掌握 HarmonyOS AI 領(lǐng)域相關(guān)技術(shù),這對(duì)于每一個(gè) HarmonyOS 開發(fā)者,也是一項(xiàng)必不可少的專業(yè)技能。

功能介紹

生成二維碼主要根據(jù)開發(fā)者給定的字符串信息和二維碼圖片尺寸,返回相應(yīng)的二維碼圖片字節(jié)流。調(diào)用方可以通過(guò)二維碼字節(jié)流生成二維碼圖片。

開發(fā)指南

①創(chuàng)建二維碼

實(shí)例化接口,獲取二維碼偵測(cè)器:
IBarcodeDetectorbarcodeDetector
=VisionManager.getBarcodeDetector(QRCodeAbilitySlice.this);

定義碼生成圖像的尺寸:
finalintSAMPLE_LENGTH=500;
根據(jù)圖像的大小,分配字節(jié)流數(shù)組的空間:
byte[]byteArray=newbyte[SAMPLE_LENGTH*SAMPLE_LENGTH*4];
調(diào)用 IBarcodeDetector 的 detect() 方法,根據(jù)輸入的字符串信息 barText 生成相應(yīng)的二維碼圖片字節(jié)流:
barcodeDetector.detect(barText,byteArray,SAMPLE_LENGTH,SAMPLE_LENGTH);
釋放偵測(cè)器:
barcodeDetector.release();
通過(guò) SourceOptions 指定數(shù)據(jù)源的格式信息:
ImageSource.SourceOptionssrcOpts=newImageSource.SourceOptions();
定義圖片格式:
srcOpts.formatHint="image/png";
創(chuàng)建圖片源:
ImageSourceimgSource=ImageSource.create(byteArray,srcOpts);
創(chuàng)建圖像解碼選項(xiàng):
ImageSource.DecodingOptionsdecodingOpts=new
ImageSource.DecodingOptions();
decodingOpts.desiredPixelFormat=PixelFormat.ARGB_8888;

通過(guò)圖片源創(chuàng)建 PixelMap:
PixelMappMap=imgSource.createPixelmap(decodingOpts);
賦值到圖片標(biāo)簽
imgQrCode.setPixelMap(pMap);
釋放資源:
barcodeDetector.release();
imgSource.release();
if(pMap!=null)
{
pMap.release();
}

斷開與能力引擎的連接:
VisionManager.destroy();

②定義 ConnectionCallback 回調(diào),實(shí)現(xiàn)連接能力引擎成功與否后的操作

代碼如下:
ConnectionCallbackconnectionCallback=newConnectionCallback(){
@Override
publicvoidonServiceConnect(){
需要生成二維碼的字符串:
StringbarText="";

連接成功生成二維碼:
createQRCode(barText);
}
@Override
publicvoidonServiceDisconnect(){
//Dosomethingwhenserviceconnectsunsuccessfully
}
};

③調(diào)用 VisionManager.init() 方法,將此工程的 context 和 connectionCallback作為入?yún)ⅲ⑴c能力引擎的連接

代碼如下:
intresult=VisionManager.init(context,connectionCallback);

示例代碼

xml 布局:


<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:orientation="vertical">

<Image
ohos:id="$+id:imgQrCode"
ohos:height="500vp"
ohos:width="500vp"
ohos:layout_alignment="center"/>

DirectionalLayout>

案例代碼:

MainAbilitySlice.java
packagecom.isoftstone.qrcode.slice;

importcom.isoftstone.qrcode.ResourceTable;
importohos.aafwk.ability.AbilitySlice;
importohos.aafwk.content.Intent;
importohos.agp.components.Text;

publicclassMainAbilitySliceextendsAbilitySlice{

@Override
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
TextqrCode=(Text)findComponentById(ResourceTable.Id_qrCode_text);
qrCode.setClickedListener(component->present(newQRCodeAbilitySlice(),newIntent()));
}

@Override
publicvoidonActive(){
super.onActive();
}

@Override
publicvoidonForeground(Intentintent){
super.onForeground(intent);
}
}
QRCodeAbilitySlice.java

packagecom.isoftstone.qrcode.slice;

importcom.isoftstone.qrcode.ResourceTable;
importohos.aafwk.ability.AbilitySlice;
importohos.aafwk.content.Intent;
importohos.agp.components.Image;
importohos.ai.cv.common.ConnectionCallback;
importohos.ai.cv.common.VisionManager;
importohos.ai.cv.qrcode.IBarcodeDetector;
importohos.media.image.ImageSource;
importohos.media.image.PixelMap;
importohos.media.image.common.PixelFormat;

/**
*二維碼生成
*/
publicclassQRCodeAbilitySliceextendsAbilitySlice{

privateImageimgQrCode;
@Override
publicvoidonStart(Intentintent){
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_qrcode);
imgQrCode=(Image)findComponentById(ResourceTable.Id_imgQrCode);
}

@Override
publicvoidonActive(){
super.onActive();
ConnectionCallbackconnectionCallback=newConnectionCallback(){
@Override
publicvoidonServiceConnect(){
//需要生成二維碼的字符串
StringbarText="www.baidu.com";
//連接成功生成二維碼
createQRCode(barText);
}

@Override
publicvoidonServiceDisconnect(){
//Dosomethingwhenserviceconnectsunsuccessfully
}
};
//初始化,建立與能力引擎的連接
VisionManager.init(this,connectionCallback);
}

@Override
publicvoidonForeground(Intentintent){
super.onForeground(intent);
}

/**
*創(chuàng)建二維碼
*@parambarText需要生成二維碼的字符串
*/
privatevoidcreateQRCode(StringbarText){
//實(shí)例化接口,獲取二維碼偵測(cè)器
IBarcodeDetectorbarcodeDetector=VisionManager.getBarcodeDetector(QRCodeAbilitySlice.this);
//定義碼生成圖像的尺寸
finalintSAMPLE_LENGTH=500;
//根據(jù)圖像的大小,分配字節(jié)流數(shù)組的空間
byte[]byteArray=newbyte[SAMPLE_LENGTH*SAMPLE_LENGTH*4];
//調(diào)用IBarcodeDetector的detect()方法,根據(jù)輸入的字符串信息生成相應(yīng)的二維碼圖片字節(jié)流
barcodeDetector.detect(barText,byteArray,SAMPLE_LENGTH,SAMPLE_LENGTH);
//釋放偵測(cè)器
barcodeDetector.release();
//通過(guò)SourceOptions指定數(shù)據(jù)源的格式信息
ImageSource.SourceOptionssrcOpts=newImageSource.SourceOptions();
//定義圖片格式
srcOpts.formatHint="image/png";
//創(chuàng)建圖片源
ImageSourceimgSource=ImageSource.create(byteArray,srcOpts);
//創(chuàng)建圖像解碼選項(xiàng)
ImageSource.DecodingOptionsdecodingOpts=newImageSource.DecodingOptions();
decodingOpts.desiredPixelFormat=PixelFormat.ARGB_8888;
//通過(guò)圖片源創(chuàng)建PixelMap
PixelMappMap=imgSource.createPixelmap(decodingOpts);
//賦值到圖片標(biāo)簽
imgQrCode.setPixelMap(pMap);
//釋放資源
barcodeDetector.release();
imgSource.release();
if(pMap!=null)
{
pMap.release();
}
//斷開與能力引擎的連接
VisionManager.destroy();
}
}

責(zé)任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2642

    瀏覽量

    69871
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2153

    瀏覽量

    36072

原文標(biāo)題:在鴻蒙上生成二維碼的方法!

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    有哪些常見的二維碼模組類型?

    二維碼模組是集成了掃描引擎、解碼芯片、光學(xué)組件的核心模塊(也叫二維碼模塊),可直接嵌入自助終端、工業(yè)PDA、智能閘機(jī)等設(shè)備,實(shí)現(xiàn)二維碼的快速識(shí)別與數(shù)據(jù)傳輸。其常見類型可按安裝方式、掃描原理、通信接口
    的頭像 發(fā)表于 01-24 00:00 ?779次閱讀
    有哪些常見的<b class='flag-5'>二維碼</b>模組類型?

    二維影像掃描引擎在門禁二維碼刷卡梯控行業(yè)中的應(yīng)用

    門禁二維碼刷卡梯控系統(tǒng)中的應(yīng)用及其帶來(lái)的多方面優(yōu)勢(shì)。一、二維影像掃描引擎的靈活性與便捷性門禁二維碼刷卡梯控行業(yè)利用手機(jī)生成
    的頭像 發(fā)表于 12-17 15:42 ?351次閱讀
    <b class='flag-5'>二維</b>影像掃描引擎在門禁<b class='flag-5'>二維碼</b>刷卡梯控行業(yè)中的應(yīng)用

    二維碼模塊是什么?它和普通條碼識(shí)別設(shè)備有什么不同

    在物聯(lián)網(wǎng)技術(shù)飛速發(fā)展的今天,條碼與二維碼已成為信息傳遞的重要載體,從超市結(jié)賬到工業(yè)生產(chǎn)溯源,從移動(dòng)支付到醫(yī)療耗材管理,相關(guān)識(shí)別設(shè)備無(wú)處不在。其中,二維碼模塊作為核心識(shí)別部件,正憑借
    的頭像 發(fā)表于 11-06 15:54 ?518次閱讀
    <b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>模塊是什么?它和普通條碼識(shí)別設(shè)備有什么不同

    門禁二維碼掃描模塊使用哪個(gè)產(chǎn)品合適?

    在現(xiàn)代門禁系統(tǒng)中,二維碼掃描模塊的選擇至關(guān)重要。它不僅關(guān)系到門禁管理的效率,還影響著用戶的使用體驗(yàn)。那么,究竟哪款產(chǎn)品更適合作為門禁二維碼掃描模塊呢?答案是新大陸FM25-Std二維
    的頭像 發(fā)表于 09-16 15:30 ?686次閱讀
    門禁<b class='flag-5'>二維碼</b>掃描模塊使用哪個(gè)產(chǎn)品合適?

    哪款二維碼模組適合嵌入戶外取餐柜,用于掃二維碼

    在智能取餐柜普及的當(dāng)下,二維碼模組作為核心交互組件,其性能直接影響用戶體驗(yàn)與設(shè)備穩(wěn)定性。針對(duì)戶外場(chǎng)景的特殊需求,深圳遠(yuǎn)景達(dá)物聯(lián)網(wǎng)推出的LV4300Pro系列二維碼模組,憑借工業(yè)級(jí)設(shè)計(jì)與場(chǎng)景化技術(shù)優(yōu)化
    的頭像 發(fā)表于 09-10 15:00 ?627次閱讀
    哪款<b class='flag-5'>二維碼</b>模組適合嵌入戶外取餐柜,用于掃<b class='flag-5'>二維碼</b>

    【嘉楠堪智K230開發(fā)板試用體驗(yàn)】+二維碼識(shí)別

    二維碼識(shí)別 二維碼識(shí)別本質(zhì)上是一個(gè)通過(guò)圖像處理技術(shù)定位并矯正圖像中的二維碼區(qū)域,然后根據(jù)其特定編碼規(guī)則讀取黑白模塊的進(jìn)制數(shù)據(jù),并利用內(nèi)置的
    發(fā)表于 08-22 20:16

    掃描條碼模塊、二維碼模塊,廣泛應(yīng)用于定制的手持設(shè)備

    在信息高速流轉(zhuǎn)的時(shí)代,二維碼作為信息承載的重要載體,推動(dòng)著各類識(shí)別技術(shù)的革新。其中,掃描條碼模塊與二維碼模塊作為核心組件,衍生出了眾多適配不同場(chǎng)景的設(shè)備,安卓手持終端便是典型代表——它以嵌入式
    的頭像 發(fā)表于 08-18 15:18 ?642次閱讀
    掃描條碼模塊、<b class='flag-5'>二維碼</b>模塊,廣泛應(yīng)用于定制的手持設(shè)備

    GM861條二維碼識(shí)別模塊用戶手冊(cè)

    GM861條二維碼識(shí)別模塊用戶手冊(cè)
    發(fā)表于 07-09 14:56 ?1次下載

    基于STM32的二維碼識(shí)別源碼+二維碼解碼庫(kù)lib

    基于STM32的二維碼識(shí)別源碼+二維碼解碼庫(kù)lib,推薦下載!
    發(fā)表于 05-28 22:04

    基于STM32的二維碼識(shí)別源碼+二維碼解碼庫(kù)lib

    基于STM32的二維碼識(shí)別源碼+二維碼解碼庫(kù)lib項(xiàng)目實(shí)例下載! 純分享帖,需要者可點(diǎn)擊附件免費(fèi)獲取完整資料~~~【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)第一時(shí)間告知,刪除內(nèi)容!
    發(fā)表于 05-23 20:45

    為什么說(shuō)二維碼模塊是智能終端的“眼睛”?

    系統(tǒng)到物流的包裹追蹤,這些看似簡(jiǎn)單的掃動(dòng)作背后,都離不開這個(gè)微型"視覺系統(tǒng)"的高效運(yùn)作。在物聯(lián)網(wǎng)技術(shù)飛速發(fā)展的今天,二維碼
    的頭像 發(fā)表于 05-21 14:39 ?863次閱讀
    為什么說(shuō)<b class='flag-5'>二維碼</b>掃<b class='flag-5'>碼</b>模塊是智能終端的“眼睛”?

    基于RK3576開發(fā)板的二維碼生成

    檔介紹了如何快速上手二維碼生成,包括源碼工程下載、開發(fā)環(huán)境搭建、例程編譯與運(yùn)行。通過(guò)EASY-EAI API,用戶可輕松生成二維碼圖片,API封裝了
    的頭像 發(fā)表于 05-10 15:19 ?1125次閱讀
    基于RK3576開發(fā)板的<b class='flag-5'>二維碼</b><b class='flag-5'>生成</b>

    二維碼讀取器是干嘛的

    二維碼讀取器(用于二維碼讀取的機(jī)器),作為一種現(xiàn)代化的自動(dòng)識(shí)別技術(shù)設(shè)備,正日益滲透到我們生活的方方面面。從商場(chǎng)購(gòu)物到物流配送,從醫(yī)療管理到工業(yè)生產(chǎn)線,二維碼讀取器憑借其高效、準(zhǔn)確的讀取
    的頭像 發(fā)表于 03-17 15:57 ?1346次閱讀
    <b class='flag-5'>二維碼</b>讀取器是干嘛的

    一“”當(dāng)先!看二維碼模組如何重塑智能門鎖掃體驗(yàn)

    在科技日新月異的今天,智能門鎖正逐步取代傳統(tǒng)機(jī)械鎖,成為現(xiàn)代家庭安全防護(hù)的首選。在這場(chǎng)門鎖智能化革命中,二維碼模組以其獨(dú)特的識(shí)別技術(shù)和便捷的操作方式,成為智能門鎖的重要組成部分。本文將深入探討二維碼
    的頭像 發(fā)表于 03-12 16:17 ?1071次閱讀
    一“<b class='flag-5'>碼</b>”當(dāng)先!看<b class='flag-5'>二維碼</b>模組如何重塑智能門鎖掃<b class='flag-5'>碼</b>體驗(yàn)

    嵌入式二維碼識(shí)別引擎是什么設(shè)備?哪些場(chǎng)景用得到?

    在科技日新月異的今天,嵌入式技術(shù)已廣泛滲透到我們生活的方方面面,其中,嵌入式二維碼識(shí)別引擎作為一種高效、便捷的信息采集工具,正逐漸成為眾多行業(yè)智能化升級(jí)的重要推手。本文將帶您深入探索二維碼識(shí)讀引擎
    的頭像 發(fā)表于 03-10 14:57 ?829次閱讀
    嵌入式<b class='flag-5'>二維碼</b>識(shí)別引擎是什么設(shè)備?哪些場(chǎng)景用得到?