成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙軟總線的簡單使用

系統
分布式軟總線是手機、平板、智能穿戴、智慧屏、車機等分布式設備的通信基座,為設備之間的互聯互通提供了統一的分布式通信能力。

[[418675]]

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

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

https://harmonyos.51cto.com

軟總線是什么?

分布式軟總線是手機、平板、智能穿戴、智慧屏、車機等分布式設備的通信基座,為設備之間的互聯互通提供了統一的分布式通信能力。

本篇講到的知識點:

  • 啟動遠程FA(Feature Ability)
  • 連接遠程PA(Particle Ability),發送控制命令&遠端處理數據(場景1:傳遞加法數據,遠端計算后返回給客戶端。場景2:傳遞數據,遠端Service接收后更新遠端的UI。)
  • FA跨設備遷移(可回遷)
  • 混合打包
  • 其他奇怪的知識

技術要求和環境要求:

基本組件熟練使用,ServiceAbility,CommonEventManager(公共事件開發)

兩臺HarmonyOS 2.0的真機 或 DevEco Studio 2.2 Beta1(分布式模擬器的自動開啟,可同時模擬運行兩臺設備,且自動組網)。

獲取DevEco Studio 2.2 Beta1

Service Ability

公共事件開發指導

其他

  • 真機分布式通信要求:同一局域網內,登錄相同華為賬號,開啟藍牙 (可行方案),這樣在 設定-超級終端 中 附近我的設備 即可查看到另外一臺設備。
  • 分布式模擬器 會自動組網,不需要手動做其他操作。(設定的超級終端中看不出來已經組網成功)
  • 運行到真機上需要進行簽名,模擬器則不需要。

代碼下載

gitee HarmonySoftBus

github HarmonySoftBus

先看下效果

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區
鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區
鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

代碼結構

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區
  • adapter:DevicesListAdapter,用于向ListContainer控件中填充設備數據。
  • component:SelectDeviceDialog封裝了設備選擇彈框
  • proxy:定義了連接遠程和調用遠程service(PA)的接口、實現類以及代理。
  • service:RemoteService為被控制端service,供手機端遠程調用。

申請權限

在entry\src\main\config.json中申請以下4個權限:

  1. ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE:用于允許監聽分布式組網內的設備狀態變化。
  2. ohos.permission.GET_DISTRIBUTED_DEVICE_INFO:用于允許獲取分布式組網內的設備列表和設備信息。
  3. ohos.permission.GET_BUNDLE_INFO:用于查詢其他應用的信息。
  4. ohos.permission.DISTRIBUTED_DATASYNC:用于允許不同設備間的數據交換。

此外,還需要在實現Ability的代碼中顯式聲明需要使用多設備協同訪問的權限,示例代碼如下:

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

獲取組網內在線的其他設備DeviceInfo(Id&Name)

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

獲取自身設備的Id

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

啟動遠程FA

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

和普通畫面的啟動類似,withDeviceId("") 為本地畫面跳轉。

跨設備啟動需要攜帶 遠程設備的DeviceID,以及設置 "支持分布式調度系統中的多設備啟動"Flag。

連接遠程PA,發送控制命令&遠端處理數據

第一步: 客戶端創建遠程連接代理類

  1. public class MyRemoteProxy implements IRemoteBroker { 
  2.     /** 
  3.      * 遠端響應成功的標識 
  4.      */ 
  5.     public static final int ERR_OK = 0; 
  6.     private static final String TAG = MyRemoteProxy.class.getSimpleName(); 
  7.     private final IRemoteObject remote; 
  8.     public MyRemoteProxy(IRemoteObject remote) { 
  9.         this.remote = remote; 
  10.     } 
  11.  
  12.     @Override 
  13.     public IRemoteObject asObject() { 
  14.         return remote; 
  15.     } 
  16.      
  17.     // 攜帶數據向遠端Sevice發送請求 
  18.     public int senDataToRemote(int requestType, Map paramMap) { 
  19.         MessageParcel data = MessageParcel.obtain(); 
  20.         MessageParcel reply = MessageParcel.obtain(); 
  21.         MessageOption option = new MessageOption(MessageOption.TF_SYNC); 
  22.         int ec = 1; 
  23.         int result = -1; 
  24.         try { 
  25.             if (paramMap.get("inputString") instanceof String) { 
  26.                 String inputString = (String) paramMap.get("inputString"); 
  27.                 data.writeInt(requestType); 
  28.                 data.writeString(inputString); 
  29.                 remote.sendRequest(requestType, data, reply, option); 
  30.             } 
  31.             ec = reply.readInt(); 
  32.             if (ec != ERR_OK) { 
  33.                 LogUtils.error(TAG, "RemoteException:"); 
  34.             } else { 
  35.                 if (requestType == ConnectManagerIml.REQUEST_PLUS) { 
  36.                     result = reply.readInt();   // 返回成功后拿到遠端計算的結果。 
  37.                 } 
  38.             } 
  39.         } catch (RemoteException e) { 
  40.             LogUtils.error(TAG, "RemoteException:"); 
  41.         } finally { 
  42.             ec = ERR_OK; 
  43.             if (result != -1) { 
  44.                 ec = result; 
  45.             } 
  46.             data.reclaim(); 
  47.             reply.reclaim(); 
  48.         } 
  49.         return ec; 
  50.     } 
  • 實現IRemoteBroker接口, asObject返回遠程RemoteObject對象
  • 創建構造方法(參數為connectAbility成功時回調方法onAbilityConnectDone中的遠程操作對象)
  • 封裝向遠端發送請求的方法,便于后續進行控制 (本例中是簡單的加法請求)
鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

MessageOption.TF_SYNC代表同步,意味著會在sendRequest時阻塞等待來自遠端Service的返回。

遠端Service返回值是 reply,reply.readInt() 默認會返回0,代表請求成功。若是想攜帶其他返回值,需要在遠端Service中進行處理,下一步會講到。

第二步: 遠端Service中,創建RemoteObject并處理請求

  1. public class MyRemote extends RemoteObject implements IRemoteBroker { 
  2.     private MyRemote() { 
  3.         super("===MyService_Remote"); 
  4.     } 
  5.     @Override 
  6.     public IRemoteObject asObject() { 
  7.         return this; 
  8.     } 
  9.     @Override 
  10.     public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) { 
  11.         LogUtils.info(TAG, "===onRemoteRequest......"); 
  12.         int requestType = data.readInt(); 
  13.         String inputString = ""
  14.         if (code == REQUEST_SEND_DATA) { 
  15.             inputString = data.readString(); 
  16.             publishInput(requestType, inputString); 
  17.         } else if (code == REQUEST_PLUS) { 
  18.             int a = data.readInt(); 
  19.             int b = data.readInt(); 
  20.             reply.writeInt(ERR_OK); 
  21.             reply.writeInt(a + b); 
  22.             publishPlusResult(requestType, String.valueOf(a + b)); 
  23.         } 
  24.         return true
  25.     } 
  26. @Override 
  27. protected IRemoteObject onConnect(Intent intent) { 
  28.     super.onConnect(intent); 
  29.     return remote.asObject(); 

onRemoteRequest 接收來自 sendRequest(requestType, data, reply, option); 傳遞過來的請求類型,數據,返回值,請求類型。

一般不需要處理reply,客戶端reply.readInt() 也會拿到0(表示請求成功),若是需要在遠端接收到請求后,需要額外返回數據給客戶端,則需要進行write操作。

第三步: 連接遠端Service

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

重點都標記了下,這塊沒啥好講的,ServiceAbility的基本連接操作。

第四步: 發送命令,遠端Service處理數據(返回數據、更新UI)

場景1:傳遞加法數據,遠端計算后返回給客戶端

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

場景2:傳遞數據,遠端Service接收后更新遠端的UI

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

遠端Service在onRemoteRequest中處理更新UI的請求,遠端利用公共事件,進行UI的更新。(意味著也就可以 控制音樂的播放,暫停 等等)

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

FA跨設備遷移(可回遷)

跨端遷移開發指導 目的: 實現正在編輯的頁面,流轉的另外一臺設備,利用分布式的能力提高用戶的體驗。

步驟一

想要遷移的Ability以及其下所有的AbilitySlice都必須需要實現一個接口: IAbilityContinuation

坑點1:哪怕你知識想將Ability其中一個Slice進行遷移,也必須將Ability的所有的slice都要實現該接口

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

onStartContinuation FA請求遷移后,系統首先回調此方法,開發者可以在此回調中決策當前是否可以執行遷移,比如,彈框讓用戶確認是否開始遷移。

onSaveData(IntentParams saveData) 如果onStartContinuation()返回true,則系統回調此方法,開發者在此回調中保存必須傳遞到目標端設備上,用于恢復FA狀態的數據。

onRestoreData(IntentParams restoreData) 發起端設備上FA完成保存數據后,系統在目標端設備上回調此方法,開發者在此回調中接受用于恢復FA狀態的數據。

onCompleteContinuation(int result) 目標端設備上恢復數據一旦完成,系統就會在發起端設備上回調FA的此方法,以便通知應用遷移流程已結束。

坑點2: 不要忘記 return true; Ability中也要。

坑點3: onRestoreData進行UI的恢復時,需要切換到UI線程,否則...(沒報錯Log)

步驟二

可回遷的遷移

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

回遷(若是已經回遷了,再進行回遷,會報錯。 先try-catch了)

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

混合打包

目前鴻蒙上的應用有以下三種

  • 直接運行的 安卓應用
  • 使用DevEco Studio編寫的鴻蒙應用
  • 已有開發好的 安卓應用,想擁有 鴻蒙的一些特性,從而進行混合打包。apk邏輯無需變化,即可擁有鴻蒙特性,例如 服務卡片

如何進行混合打包?

篇幅原因,將會在另外一篇中詳細介紹。 請移步: 安卓應用如何混合打包擁有鴻蒙的卡片服務?

奇怪的知識

針對:分布式數據服務開發指導

設計字段:

單版本分布式數據庫的介紹比較簡單。存儲key-value, value若是復雜點沒介紹。若想value中存儲很多其他數據,可進行以下操作。

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

以上時創建單版本分布式數據庫時,設置Schema對象,從而設計了數據庫中的字段。

數據存儲:

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

存入的時候,需要以json的格式進行寫入。

查詢:

鴻蒙軟總線的簡單使用-鴻蒙HarmonyOS技術社區

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

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

https://harmonyos.51cto.com

 

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

2022-03-18 15:29:02

Harmony鴻蒙架構

2024-05-13 08:40:02

Go事件驅動編程

2021-03-29 09:59:09

鴻蒙HarmonyOS應用開發

2022-01-12 14:45:26

鴻蒙HarmonyOS應用

2022-12-04 22:41:15

IPC分布式機制

2020-11-16 11:29:40

HarmonyOS

2021-07-02 09:16:21

鴻蒙HarmonyOS應用

2022-11-28 15:42:39

分布式軟總線鴻蒙

2010-07-06 16:02:30

HART協議

2010-08-29 21:17:48

DHCP中繼

2014-07-17 11:36:27

Android Stu使用教程

2021-06-30 07:19:36

Netty簡單使用

2013-03-28 16:31:48

AIDL的簡單使用Android中AID

2010-06-09 11:05:28

SPI總線協議

2010-06-08 16:55:46

CANopen總線協議

2010-06-08 15:55:14

CAN總線協議

2010-06-08 16:31:16

LIN總線協議

2010-06-08 16:35:24

LIN總線協議

2010-03-02 11:32:39

Linux判斷符

2019-11-25 11:20:08

FlutterWeb應用軟件開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲三区在线观看 | 日韩在线视频免费观看 | 天天操网| 欧美日韩成人一区二区 | 天堂中文av | 日韩视频在线一区 | 国产成人精品免费视频大全最热 | 日韩av免费在线观看 | 中文字幕国产精品 | 在线一区视频 | 99久热在线精品视频观看 | 日韩a v在线免费观看 | 成人激情视频免费在线观看 | 免费色网址 | 最新免费黄色网址 | 日韩欧美国产一区二区 | 国产一级特黄真人毛片 | 午夜婷婷激情 | 啪视频在线| 91免费看片神器 | 亚洲精品99| 国产草草视频 | 亚洲高清在线观看 | 欧美日韩亚洲国产 | 精品免费观看 | www.黄色在线观看 | 国产精品成av人在线视午夜片 | 欧美一区二区三区 | 久久久久久久av | 天天射天天干 | 久久久一区二区 | 中文字幕久久精品 | 一区二区视频免费观看 | 99精品视频免费观看 | 在线日韩 | 91久久久久久久 | 欧美激情精品久久久久久 | 国产女人与拘做受视频 | 国产一区影院 | 欧美aⅴ| 日韩国产在线 |