一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于OpenHarmony實(shí)現(xiàn)智能貓眼

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:HarmonyOS官方合作社區(qū) ? 作者:HarmonyOS官方合作社 ? 2022-05-20 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

智能貓眼是一種家居安防產(chǎn)品。是安裝在防盜門(mén)上的一種嵌入式設(shè)備,可以通過(guò)攝像頭獲取圖像顯示至手機(jī)應(yīng)用中,這樣老人或者小孩就可以看清門(mén)外的情況。

智能貓眼的實(shí)現(xiàn)是采用流媒體協(xié)議 RTSP。該協(xié)議定義了程序如何通過(guò) IP 網(wǎng)絡(luò)傳送多媒體數(shù)據(jù)。RTSP 多用于安防攝像頭、車載監(jiān)控、網(wǎng)絡(luò)直播等場(chǎng)景應(yīng)用。本文檔旨在講解在 OpenAtom OpenHarmony(以下簡(jiǎn)稱“OpenHarmony") 1.0.1 release 下將 Hi3518EV300 編碼后的 H.265 視頻格式(H.265 是一種視頻編碼格式,可以由 OpenHarmony 媒體子系統(tǒng)產(chǎn)生),通過(guò) RTSP 傳輸顯示到手機(jī)的應(yīng)用中。

6b99ea50-d7d6-11ec-bce3-dac502259ad0.jpg

注:Hi3518EV300是 潤(rùn)和Hi3518 HiSpark IPC AI攝像頭開(kāi)發(fā)板套件

如上圖片:Hi3518EV300 設(shè)備將捕獲到的圖像通過(guò) RTSP 發(fā)送到手機(jī)應(yīng)用中并顯示出來(lái)。

開(kāi)發(fā)流程

RTSP 采用 Server/Client 模式,在本樣例場(chǎng)景中 Hi3518EV300為RTSP Server,手機(jī)應(yīng)用為 RTSP Client。在 RTSP 體系結(jié)構(gòu)包含 RTSP和RTP(實(shí)時(shí)傳輸協(xié)議)兩種協(xié)議,其中 RTSP 協(xié)議用于建立連接與傳輸多媒體控制命令(開(kāi)始、暫停、結(jié)束等),RTP 協(xié)議用來(lái)傳輸多媒體數(shù)據(jù)(音頻、視頻)。

RTSP Server 的實(shí)現(xiàn)分為如下幾步:

●設(shè)置 Wi-Fi:將手機(jī)與 Hi3518EV300 在同一網(wǎng)絡(luò)中;

環(huán)形緩存區(qū):將媒體子系統(tǒng)中編碼出的 H.265 數(shù)據(jù)存入環(huán)形緩存中;

●RTSP:RTSP Server 通過(guò) RTSP 與 RTSP Client 交互控制信息;

●RTP :RTSP Server 收到PLAY命令后從環(huán)形緩存中獲取 H.265 數(shù)據(jù)并使用 RTP 協(xié)議發(fā)送。

如下圖所示:

6bb71738-d7d6-11ec-bce3-dac502259ad0.jpg

如何運(yùn)行 RTSP Server 可以參考文章智能貓眼 3518 開(kāi)發(fā)樣例,下面根據(jù)該文章講解 RTSP Server 的實(shí)現(xiàn)流程。

代碼結(jié)構(gòu):


├── smart_door_viewer_3518│   ├── BUILD.gn                                      // 編譯構(gòu)建│   ├── include│   │   ├── camera_sample.h                   // 攝像頭操作頭文件│   │   ├── rtp.h                                         // rtp協(xié)議傳輸頭文件│   │   ├── rtsp_log.h                                // 打印調(diào)試頭文件│   │   └── rtsp_server.h                           // rtsp頭文件│   └── src│       ├── camera_sample.cpp                 // 攝像頭實(shí)現(xiàn)│       ├── main.cpp                                   // 主函數(shù)│       ├── rtp.cpp                                       // rtp協(xié)議實(shí)現(xiàn)│       └── rtsp_server.cpp                         // rtsp協(xié)議實(shí)現(xiàn)├── foundation              │   └── multimedia│       └── media_lite│           ├── frameworks│           │   └── recorder_lite │           │       ├── recorder.cpp                //增加獲取攝像頭H.265數(shù)據(jù)實(shí)現(xiàn)類接口│           │       ├── recorder_impl.cpp       //增加獲取攝像頭H.265數(shù)據(jù)實(shí)現(xiàn)│           │       └── recorder_impl.h           //增加獲取攝像頭H.265數(shù)據(jù)實(shí)現(xiàn)定義│           └── interfaces│               └── kits│                   └── recorder_lite│└──recorder.h//增加應(yīng)用層獲取攝像頭H.265數(shù)據(jù)實(shí)現(xiàn)類接口定義

設(shè)置Wi-Fi

設(shè)置 Wi-Fi 連接熱點(diǎn) ssid 為“Smedia”psk為“12345678”。

在文件 wpa_supplicant.conf 中修改如下:


country=GBctrl_interface=udpnetwork={    ssid="SMedia"    psk="12345678"}

設(shè)備啟動(dòng)后輸入:


./bin/wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf

輸入 ifconfig 可查看到連接成功后的 IP 地址:

6bd472ce-d7d6-11ec-bce3-dac502259ad0.jpg

環(huán)形緩存區(qū)

在媒體子系統(tǒng)中,為了同步 RTSP Server 應(yīng)用獲取 H.265 數(shù)據(jù)須設(shè)計(jì)一個(gè)環(huán)形緩沖區(qū)。緩沖區(qū)總大小為 16*256K 長(zhǎng)度的數(shù)組。put 為媒體子系統(tǒng)存放緩沖區(qū)的偏移值,get 為 RTSP Server(Hi3518EV300)線程獲取緩沖區(qū)的偏移值,緩存區(qū)定義在文件 recorder_impl.h 下。


constexpr uint32_t RING_BUFF_MAX_CNT = 16;constexpruint32_tRING_BUFF_SIZE=256*1024;

具體實(shí)現(xiàn)如下:

初始情況下偏移值 put 與 get 的位置均在開(kāi)頭。

6bf0b614-d7d6-11ec-bce3-dac502259ad0.jpg

當(dāng) RTSP Server 啟動(dòng)后媒體子系統(tǒng)填充 buff,偏移值 put 向前移。

6c433c72-d7d6-11ec-bce3-dac502259ad0.jpg

RTSP Server 通過(guò)偏移值 get 獲取到視頻編碼數(shù)據(jù)后釋放 buff,偏移值 get 向前移。

6c5dd136-d7d6-11ec-bce3-dac502259ad0.jpg

當(dāng) put 與 get 偏移超過(guò) 16 時(shí)重新置 1 因此形象地稱為環(huán)形緩沖區(qū),其中 get 永遠(yuǎn)在 put 后且間距不會(huì)超過(guò) 3 個(gè) buff,實(shí)現(xiàn)是在 rtsp Server 中設(shè)置同步時(shí)間。

6c8bef44-d7d6-11ec-bce3-dac502259ad0.jpg

代碼實(shí)現(xiàn)邏輯:當(dāng) RTSP Server 運(yùn)行到 RTP 時(shí)才會(huì)往緩沖區(qū)存放數(shù)據(jù)(ringStatus 標(biāo)志位設(shè)置為 true)。存入緩沖區(qū)的首幀是從關(guān)鍵幀(幀頭為 0x40 與 0x01 與 startFramFlag 標(biāo)志位為 true)開(kāi)始,后續(xù)所有幀都會(huì)保存到緩沖區(qū)中(saveFlag 標(biāo)志位設(shè)置為 true,startFramFlag 標(biāo)志位為 false),在函數(shù) VideoSourceProcess 下實(shí)現(xiàn)。


if ((iNumber < RING_BUFF_MAX_CNT) && (ringStatus == true)) {    if((startFramFlag == true) &&(buffer.dataAddr[4]==0x40)        && (buffer.dataAddr[5]==0x01)) {        if (memcpy_s(ringFifo[iPut].buffer, RING_BUFF_SIZE, buffer.dataAddr, buffer.dataLen) != EOK) {            MEDIA_INFO_LOG("[Error] memcpy_s");         } else {            ringFifo[iPut].size = buffer.dataLen;            iPut = addring(iPut);            iNumber++;            startFramFlag = false;            saveFlag = true;        }     } else {         if(saveFlag == true) {             if (memcpy_s(ringFifo[iPut].buffer, RING_BUFF_SIZE, buffer.dataAddr, buffer.dataLen) != EOK) {                MEDIA_INFO_LOG("[Error] memcpy_s");              } else {                 ringFifo[iPut].size = buffer.dataLen;                 iPut = addring(iPut);                 iNumber++;                       }          }      }}

RTSP

RTSP Server 與 RTSP Client 通過(guò) RTSP 協(xié)議收發(fā)控制命令,其基本流程如下:

●OPTION:首先 Client 連接到 Server 并發(fā)送 OPTION 命令,Server 立刻返回所支持的命令(OPTION、DESCRIBE、SETUP、PLAY、TEARDOWN);

●DESCRIBE:Client 發(fā)送描述命令(DESCRIBE),Server 通過(guò)一個(gè) SDP 描述來(lái)進(jìn)行反饋,反饋信息包括流數(shù)量、媒體類型等信息;

●SETUP:Client 分析 SDP 描述,并為會(huì)話中發(fā)送建立命令(SETUP),告訴 Server 用于接收媒體數(shù)據(jù)的端口;

●PLAY:連接建立完成后,Client 發(fā)送一個(gè)播放命令(PLAY),Server 就開(kāi)始在 UDP 上傳送媒體流(RTP包)到 Client;

●TERADOWN:最后 Client 可發(fā)送一個(gè)終止命令(TERADOWN)來(lái)結(jié)束流媒體會(huì)話。

其交互流程如下所示:

6cb7920c-d7d6-11ec-bce3-dac502259ad0.jpg

在文件 rtsp_server.cpp 中,RTSP Server 收到 OPTION 后回復(fù)服務(wù)器提供的可用命令(OPTION、DESCRIBE、SETUP、PLAY、TEARDOWN)。

函數(shù)實(shí)現(xiàn)如下:


static void RtspOptions(char* sendBuff, RtspClientInfo &rtspCliInfo){    sprintf(sendBuff, "RTSP/1.0 200 OK
"                    "CSeq: %d
"                    "Public: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN
"                    "
",                    rtspCliInfo.rtspCseq);}

RTSP Server 收到 DESCRIBE 后回復(fù) SDP (SDP 信息為會(huì)話名稱和目的、會(huì)話持續(xù)時(shí)間、媒體類(音頻、視頻等)、傳輸協(xié)議(RTP/UDP/IP等)、媒體編碼格式(H.264、H.265 等)、接收媒體的相關(guān)信息端口和格式等。)信息。

函數(shù)實(shí)現(xiàn)如下:


static void RtspDescribe(char* sendBuff, RtspClientInfo &rtspCliInfo){    char sdp[512];
    memset(sdp, 0, sizeof(sdp));    sprintf(sdp, "v=0
"                 "o=- 973 1 IN IP4 192.168.1.103
"                 "t=0 0
"                 "a=control:*
"                 "m=video 0 RTP/AVP 96
"                 "a=rtpmap:96 H265/90000
"                 "a=control:track0

");    sprintf(sendBuff, "RTSP/1.0 200 OK
CSeq: %d
"                    "Content-Base: %s
"                    "Content-type: application/sdp
"                    "Content-length: %d

"                    "%s",                    rtspCliInfo.rtspCseq,                    "rtsp://192.168.1.127:8554/test.264",                    strlen(sdp),                    sdp);}

RTSP Server 收到 SETUP 后回復(fù)傳輸模式(采用 RTP 傳輸)、端口號(hào)信息準(zhǔn)備 play。

函數(shù)實(shí)現(xiàn)如下:


static void RtspStep(char* sendBuff, RtspClientInfo &rtspCliInfo){    sprintf(sendBuff,             "RTSP/1.0 200 OK
"            "CSeq: %d
"            "Transport: RTP/AVP;unicast;client_port=55532-55532;"            "server_port=%d-%d
"            "Session: 66334873
"            "
",            rtspCliInfo.rtspCseq, rtspCliInfo.clientPort, rtspCliInfo.clientPort + 1);}

RTSP Server 收到 PLAY 后回復(fù) Range 的值為"npt=0.0000-",表示從開(kāi)始播放,默認(rèn)一直播放!隨后發(fā)送視頻流數(shù)據(jù)。


static void RtspPlay(char* sendBuff, RtspClientInfo &rtspCliInfo){    sprintf(sendBuff, "RTSP/1.0 200 OK
"                "CSeq: %d
"                "Range: npt=0.000-
"                "Session: 66334873; timeout=60

",                rtspCliInfo.rtspCseq);}

程序運(yùn)行后使用 wireshark 抓取報(bào)文如下:

6ce890c8-d7d6-11ec-bce3-dac502259ad0.jpg

RTP

RTSP 會(huì)話進(jìn)行到 PLAY 后就可啟動(dòng) RTP 發(fā)送視頻流數(shù)據(jù),RTP 包分為 RtpHeader(Rtp 頭)加 payload(負(fù)載數(shù)據(jù)),在文件 rtp.cpp 下的 UdpSendFrame 函數(shù)中。

RtpHeader

csrcLen csrc 計(jì)數(shù),在沒(méi)有 RTP 混頻器的情況下通常為 0

●extension 擴(kuò)展名,必須為 0

●padding 填充位,不得使用填充,默認(rèn)為 0

●version 版本號(hào)為 2

●payloadType 數(shù)據(jù)幀類型 96(H.265)

●marker 將一幀分片時(shí)區(qū)分頭片

●seq 序列號(hào)為了以每片為單位

●timestamp 時(shí)間戳以每幀為單位

●ssrc 數(shù)據(jù)信源號(hào)


rtpPacket.rtpHeader.csrcLen = 0;rtpPacket.rtpHeader.extension = 0;rtpPacket.rtpHeader.padding = 0;rtpPacket.rtpHeader.version = 2;
rtpPacket.rtpHeader.payloadType = 96;
rtpPacket.rtpHeader.ssrc = 10;
rtpPacket.rtpHeader.timestamp = timestamp;timestamp+=90000/25;

payload

RTP 包最大為 1400 個(gè)字節(jié),因此打包分為兩種:

1.若 H.265 幀小于 1400 個(gè)字節(jié)時(shí)可放至一個(gè) rtp 包中;

2.若 H.265 幀大于 1400 個(gè)字節(jié)時(shí),則需要分片打包在多個(gè) rtp 中;

當(dāng)文件小于 1400 時(shí)直接放到 pyahload 中發(fā)送。


if (s32NalBufSize <= RTP_MAX_PKT_SIZE) {      if (memcpy_s(rtpPacket.payload, s32NalBufSize, pNalBuf, s32NalBufSize) != EOK){        SAMPLE_INFO("memcpy_s");    return -1;    }    rtpPacket.rtpHeader.marker   = 1;    rtpPacket.rtpHeader.seq = seq++;    ret = UdpSendPacket(&rtpPacket, s32NalBufSize);    sendBytes += ret;    SAMPLE_INFO("sendBytes->%d", sendBytes);}

若 H.265 幀大于 1400 個(gè)字節(jié)時(shí)就必須進(jìn)行分片封包處理。則要設(shè)置 PayloadHdr、FU(Fragmentation Units)、DONL 暫不涉及可以省略,其中 PayloadHdr 固定為 49。


   0                   1                   2                   3    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   |    PayloadHdr (Type=49)       |   FU header   | DONL (cond)   |   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|   | DONL (cond)   |                                               |   |-+-+-+-+-+-+-+-+                                               ||FUpayload|

FUheader 格式為:S 置 1 表示起始片,E 置 1 表示最后片,F(xiàn)uType 就是實(shí)際的 Nal type 類型。


  +---------------+  |0|1|2|3|4|5|6|7|  +-+-+-+-+-+-+-+-+  |S|E|  FuType   |+---------------+

函數(shù)中實(shí)現(xiàn)如下:


int pktNum = s32NalBufSize / RTP_MAX_PKT_SIZE;         int remainPktSize = s32NalBufSize % RTP_MAX_PKT_SIZE;    int i, pos, head_len;    head_len = 2;    pos = head_len;     for(i = 0; i < pktNum; i++)    {      rtpPacket.rtpHeader.seq = seq++;            rtpPacket.payload[0] = 49 << 1;      rtpPacket.payload[1] = 1;      rtpPacket.payload[2] = (naluType & 0x7E)>>1;      if (i == 0) {         rtpPacket.rtpHeader.marker = 1;        rtpPacket.payload[2] |= 0x80; // start      }      else if (remainPktSize == 0 && i == (pktNum - 1)){        rtpPacket.rtpHeader.marker = 0;        rtpPacket.payload[2] |= 0x40; // end      }      if (memcpy_s(rtpPacket.payload + head_len + 1, RTP_MAX_PKT_SIZE, pNalBuf+pos, RTP_MAX_PKT_SIZE) != EOK) {        SAMPLE_INFO("memcpy_s");          return -1;      }            ret = UdpSendPacket(&rtpPacket, RTP_MAX_PKT_SIZE + head_len + 1);      if (ret < 0) {        SAMPLE_ERROR("rtpSendPacket is error");        goto cleanup;      }      sendBytes += ret;      pos += RTP_MAX_PKT_SIZE;    }    if (remainPktSize > 0)    {      {        rtpPacket.payload[0] = 49 << 1;        rtpPacket.payload[1] = 1;        rtpPacket.payload[2] = (naluType & 0x7E)>>1;        rtpPacket.payload[2] |= 0x40; // end      }      if (memcpy_s(rtpPacket.payload + head_len + 1, remainPktSize, pNalBuf+pos, remainPktSize) != EOK) {        SAMPLE_INFO("memcpy_s");          return -1;      }      rtpPacket.rtpHeader.seq = seq++;      ret = UdpSendPacket(&rtpPacket, remainPktSize+head_len+1);      if(ret < 0)      {        SAMPLE_ERROR("rtpSendPacket is error");        goto cleanup;      }      sendBytes += ret;    }

程序運(yùn)行后使用 wireshark 抓取報(bào)文如下:

6d057cba-d7d6-11ec-bce3-dac502259ad0.jpg

RTSP Client

RTSP Client 實(shí)現(xiàn)使用手機(jī) APP”完美播放器“。

準(zhǔn)備一臺(tái)手機(jī),在手機(jī)應(yīng)用市場(chǎng)中搜索”完美播放器“并下載安裝。

6d405bbe-d7d6-11ec-bce3-dac502259ad0.jpg

打開(kāi)菜單選擇網(wǎng)址播放。

6d51cd90-d7d6-11ec-bce3-dac502259ad0.jpg

輸入 rtsp 播放地址,其中 ip 地址 10.42.0.54為Hi3518EV300中Wi-Fi 的地址。

6d70f68e-d7d6-11ec-bce3-dac502259ad0.jpg

總結(jié)

豐富多樣的 OpenHarmony 開(kāi)發(fā)樣例離不開(kāi)廣大合作伙伴和開(kāi)發(fā)者的貢獻(xiàn),如果你也想把自己開(kāi)發(fā)的樣例分享出來(lái),歡迎把樣例提交到 OpenHarmony 知識(shí)體系 SIG 倉(cāng)來(lái),共建開(kāi)發(fā)樣例請(qǐng)參考如何共建開(kāi)發(fā)樣例。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • 攝像頭
    +關(guān)注

    關(guān)注

    61

    文章

    4980

    瀏覽量

    98368
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3854

    瀏覽量

    18605

原文標(biāo)題:基于 OpenHarmony 實(shí)現(xiàn)智能貓眼

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    基于OpenHarmony打造新一代智能化解決方案

    RK3568 OpenHarmony方案以Core-RK3568主控板為核心載體,采用瑞芯微自主研發(fā)的RK3568高性能處理器,并搭載國(guó)產(chǎn)自主可控的OpenHarmony開(kāi)源操作系統(tǒng),通過(guò)深度整合
    的頭像 發(fā)表于 05-23 17:45 ?817次閱讀

    OpenHarmony城市技術(shù)論壇第12期——合肥站圓滿舉辦

    2024年12月23日,OpenHarmony城市技術(shù)論壇(以下簡(jiǎn)稱“技術(shù)論壇”)第12期——合肥站于中國(guó)科學(xué)技術(shù)大學(xué)高新校區(qū)圓滿舉辦。本次技術(shù)論壇聚焦于“智能時(shí)代基礎(chǔ)軟件與數(shù)據(jù)管理”的主題,深入
    的頭像 發(fā)表于 12-26 09:14 ?837次閱讀
    <b class='flag-5'>OpenHarmony</b>城市技術(shù)論壇第12期——合肥站圓滿舉辦

    OpenHarmony怎么修改DPI密度值?觸覺(jué)智能RK3566鴻蒙開(kāi)發(fā)板演示

    開(kāi)源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示,搭載了瑞芯微RK3566四核處理器,Laval鴻蒙社區(qū)推薦開(kāi)發(fā)板,已適配全新開(kāi)源鴻蒙OpenHarmony5.0 Re
    的頭像 發(fā)表于 12-24 11:46 ?735次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺(jué)<b class='flag-5'>智能</b>RK3566鴻蒙開(kāi)發(fā)板演示

    畢業(yè)設(shè)計(jì)競(jìng)賽選題推薦 | 嵌入式Linux應(yīng)用之智能貓眼項(xiàng)目實(shí)戰(zhàn)(含文檔及源碼)

    算法,實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控、自動(dòng)告警、人臉識(shí)別等高級(jí)功能。智能貓眼能夠?yàn)橛脩籼峁└踩?、便捷的生活體驗(yàn),無(wú)論是住宅安全防護(hù)還是商鋪的訪客管理,智能貓眼
    的頭像 發(fā)表于 12-23 14:12 ?792次閱讀
    畢業(yè)設(shè)計(jì)競(jìng)賽選題推薦 | 嵌入式Linux應(yīng)用之<b class='flag-5'>智能</b><b class='flag-5'>貓眼</b>項(xiàng)目實(shí)戰(zhàn)(含文檔及源碼)

    OpenHarmony默認(rèn)30秒熄屏太麻煩?觸覺(jué)智能鴻蒙開(kāi)發(fā)板教你輕松取消

    OpenHarmony系統(tǒng)開(kāi)機(jī)后 30 秒會(huì)自動(dòng)息屏,教大家兩招輕松取消自動(dòng)息屏,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示,已適配全新OpenHarmony5.0 Release系統(tǒng)!
    的頭像 發(fā)表于 12-09 11:45 ?778次閱讀
    <b class='flag-5'>OpenHarmony</b>默認(rèn)30秒熄屏太麻煩?觸覺(jué)<b class='flag-5'>智能</b>鴻蒙開(kāi)發(fā)板教你輕松取消

    觸覺(jué)智能亮相OpenHarmony人才生態(tài)大會(huì)2024

    11月27日,OpenHarmony人才生態(tài)大會(huì)2024在武漢隆重舉行,深圳觸覺(jué)智能科技受邀參與,并在OpenHarmony南向生態(tài)社區(qū)發(fā)展論壇分享發(fā)言!
    的頭像 發(fā)表于 11-28 18:27 ?597次閱讀
    觸覺(jué)<b class='flag-5'>智能</b>亮相<b class='flag-5'>OpenHarmony</b>人才生態(tài)大會(huì)2024

    通過(guò)WebSocket操作OpenHarmony機(jī)器

    OpenHarmony機(jī)器人中運(yùn)行 ArkTS APP,在APP中通過(guò)WebScoket客戶端接收指令,然后調(diào)用機(jī)器人接口實(shí)現(xiàn)相關(guān)動(dòng)作。
    發(fā)表于 11-27 16:41

    OpenHarmony屬性信息怎么修改?觸覺(jué)智能RK3566鴻蒙開(kāi)發(fā)板來(lái)演示

    本文介紹開(kāi)源鴻蒙OpenHarmony系統(tǒng)下,修改產(chǎn)品屬性信息的方法,觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板演示,已適配全新OpenHarmony5.0 Release系統(tǒng)!
    的頭像 發(fā)表于 11-27 09:31 ?750次閱讀
    <b class='flag-5'>OpenHarmony</b>屬性信息怎么修改?觸覺(jué)<b class='flag-5'>智能</b>RK3566鴻蒙開(kāi)發(fā)板來(lái)演示

    觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板成功適配OpenHarmony5.0 Release,開(kāi)啟新征程

    觸覺(jué)智能Purple Pi OH鴻蒙開(kāi)發(fā)板,成功適配OpenHarmony5.0 Release版本!為大家?guī)?lái)OpenHarmony5.0特性講解!關(guān)注觸覺(jué)智能,為大家?guī)?lái)更多
    的頭像 發(fā)表于 10-25 10:51 ?1123次閱讀
    觸覺(jué)<b class='flag-5'>智能</b>Purple Pi OH鴻蒙開(kāi)發(fā)板成功適配<b class='flag-5'>OpenHarmony</b>5.0 Release,開(kāi)啟新征程

    第三屆OpenHarmony技術(shù)大會(huì)星光璀璨、致謝OpenHarmony社區(qū)貢獻(xiàn)者

    (技術(shù)專家組)、TSG星光貢獻(xiàn)者和星光OpenHarmony技術(shù)俱樂(lè)部、星光導(dǎo)師、星光貢獻(xiàn)者、星光活動(dòng)等OpenHarmony社區(qū)貢獻(xiàn)者,大會(huì)同步舉行了授牌儀式。作為智能終端領(lǐng)域發(fā)展速度最快的開(kāi)源
    的頭像 發(fā)表于 10-21 14:10 ?551次閱讀

    第三屆OpenHarmony技術(shù)大會(huì)在上海成功舉辦

    成長(zhǎng)為全球最活躍的智能終端操作系統(tǒng)開(kāi)源社區(qū)之一。同時(shí)他指出OpenHarmony也是一個(gè)高校和企業(yè)、和全社會(huì)協(xié)作融合,以產(chǎn)學(xué)研高效協(xié)同的創(chuàng)新體系,上海交通大學(xué)作為OpenHarmony的首批共建單位
    發(fā)表于 10-13 11:14

    請(qǐng)回答OpenHarmony | 關(guān)于開(kāi)源生態(tài)的未來(lái)想象,我們現(xiàn)場(chǎng)回答

    第三屆OpenHarmony技術(shù)大會(huì)即將啟幕 今年相聚,OpenHarmony又迎來(lái)了怎樣的突破與發(fā)展? 在萬(wàn)物智聯(lián)的時(shí)代,如何通過(guò)技術(shù)創(chuàng)新引領(lǐng)智能未來(lái)? OpenHarmony的開(kāi)源
    發(fā)表于 10-12 00:09

    基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開(kāi)發(fā):HelloOpenharmony

    1、程序簡(jiǎn)介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫(xiě)的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開(kāi)發(fā)。本案例已在OpenHarmony凌蒙派-RK3568開(kāi)發(fā)
    的頭像 發(fā)表于 09-15 08:09 ?871次閱讀
    基于ArkTS語(yǔ)言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用開(kāi)發(fā):Hello<b class='flag-5'>Openharmony</b>

    基于ArkTS語(yǔ)言的OpenHarmony APP應(yīng)用開(kāi)發(fā):HelloOpenharmony

    : IPerson = { // 創(chuàng)建一個(gè)接口的實(shí)例 name: \"OpenHarmony\",// 設(shè)置屬性值 say: () => { // 實(shí)現(xiàn)接口方法
    發(fā)表于 09-14 12:47

    一芯解鎖「看家」新體驗(yàn),航芯高性價(jià)比貓眼智能鎖方案,讓安全看得見(jiàn)!

    的性價(jià)比。而在智能門(mén)鎖的眾多技術(shù)功能中,以「集成貓眼」為功能代表的產(chǎn)品在市場(chǎng)上頗受消費(fèi)者的青睞。這種集成化的創(chuàng)新設(shè)計(jì),賦予了智能門(mén)鎖安防監(jiān)控的能力,讓用戶能夠?qū)崟r(shí)掌
    的頭像 發(fā)表于 08-01 08:27 ?707次閱讀
    一芯解鎖「看家」新體驗(yàn),航芯高性價(jià)比<b class='flag-5'>貓眼</b><b class='flag-5'>智能</b>鎖方案,讓安全看得見(jiàn)!