日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HarmonyOS之深入解析设备标识符的功能和使用

發布時間:2024/5/21 编程问答 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HarmonyOS之深入解析设备标识符的功能和使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、NetworkID

① NetworkID 簡介
  • 網絡設備節點通信標識符,是分布式軟總線提供的一種非永久性標識符。NetworkID 基于 Java 原生的 UUID 接口隨機生成,長度為 32 字節,使用十六進制表示。主要用于業務調用分布式能力時,標識分布式網絡內的設備節點。如 NetworkID 示例:
6B97BC8F6F85A2A1A6E0E262111F42D6A8541CBFF6CAF688FA5293956EC3FD43
  • NetworkID 為設備級標識符,不同 APP 在同一時間獲取到同一設備的 NetworkID 相同。
  • NetworkID 在設備下線、設備重啟、恢復出廠設置后會發生變化,因此不可用于數據持久化存儲的索引等場景。
  • 為滿足在分布式場景中的隱私要求,NetworkID 在以下幾個場景會發生變化,發生重置:
    • 用戶操作進行設備恢復出廠設置;
    • 設備重啟;
  • 分布式組網的設備上線列表從非空轉為空,并持續為空 5 分鐘后。
② 應用場景
  • NetworkID 是分布式網絡設備節點在分布式組網中的通信標識符,用于在分布式業務中標識網絡設備節點。
  • 上層業務在調用分布式能力的時候,使用 NetworkID 標識不同的網絡設備節點。
  • 由于同一設備的 NetworkID 的值在多次組網中可能會發生變化,因此 NetworkID 不能用于數據持久化存儲的索引等場景。
③ 獲取 NetworkID
  • HarmonyOS SDK 提供 NetworkID 相關 API,應用程序可通過 API 使用 NetworkID 的能力。
public class MainAbility extends Ability {// 建議開發者自行設計界面,示例代碼僅供參考private static final int OFFSET_X = 100;private static final int OFFSET_Y = 100;private static final int ADD_OFFSET_Y = 150;private static final int BUTTON_WIDTH = 800;private static final int BUTTON_HEIGHT = 100;private static final int TEXT_SIZE = 50;private int offsetY = 0;// 應用包名private String BUNDLE_NAME = "com.example.continuationdemo";// 注冊控制中心服務后返回的Ability tokenprivate int abilityToken;// 用戶在設備列表中選擇設備后返回的NetworkIDprivate String selectNetworkId;// 獲取控制中心服務管理類private IContinuationRegisterManager continuationRegisterManager;// 設置控制中心設備狀態變更的回調private IContinuationDeviceCallback callback = new IContinuationDeviceCallback() {@Overridepublic void onDeviceConnectDone(String networkId,String deviceType) {// 在用戶選擇設備后回調獲取NetworkIDselectNetworkId = networkId;}@Overridepublic void onDeviceDisconnectDone(String networkId) {}};// 設置注冊控制中心服務回調private RequsetCallback requsetCallback = new RequsetCallback() {@Overridepublic void onResult(int result) {abilityToken = result;}};// 彈出選擇設備列表private ClickedListener mShowDeviceListListener = new ClickedListener() {@Overridepublic void onClick(Component arg0) {// 顯示選擇設備列表continuationRegisterManager.showDeviceList(abilityToken, null, null);}};@Overridepublic void onStart(Intent intent) {super.onStart(intent);continuationRegisterManager = getContinuationRegisterManager();// 開發者可以自行進行界面設計// 為按鈕設置統一的背景色// 例如通過PositionLayout可以實現簡單界面PositionLayout layout = new PositionLayout(this);LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);layout.setLayoutConfig(config);ShapeElement buttonBg = new ShapeElement();buttonBg.setRgbColor(new RgbColor(0, 125, 255));Button btnShowDeviceList = createButton("ShowDeviceList", buttonBg);btnShowDeviceList.setClickedListener(mShowDeviceListListener);linear.addComponent(btnShowDeviceList);super.setUIContent(layout);// 注冊控制中心continuationRegisterManager.register(BUNDLE_NAME, null, callback, requsetCallback);}private Button createButton(String text, ShapeElement buttonBg) {Button button = new Button(this);button.setContentPosition(OFFSET_X, OFFSET_Y + offsetY);offsetY += ADD_OFFSET_Y;button.setWidth(BUTTON_WIDTH);button.setHeight(BUTTON_HEIGHT);button.setTextSize(TEXT_SIZE);button.setTextColor(Color.YELLOW);button.setText(text);button.setBackground(buttonBg);return button;}@Overridepublic void onStop() {super.onStop();// 解注冊控制中心continuationRegisterManager.unregister(abilityToken, null);}}

二、DVID

① DVID 簡介
  • DVID(Distributed Virtual device Identifier), 分布式虛擬設備標識符。設備登錄了 HarmonyOS 賬號后,系統根據 HarmonyOS 帳號及應用程序信息生成分布式虛擬設備 ID,即 DVID。
  • 應用程序可以根據 DVID 訪問和管理分布式設備,具備類似管理本地設備的能力和體驗。同時,為防止其他應用獲取當前應用數據(比如用戶行為收集),DVID 與 HarmonyOS 帳號及應用程序信息強關聯,在登錄了相同 HarmonyOS 帳號的分布式設備上,相同應用獲取到的 DVID 相同,不同應用獲取的 DVID 不同。
② 應用場景
  • 應用程序一鍵式登錄:登錄了相同的 HarmonyOS 帳號的多個分布式設備中,應用程序在某一設備上登錄之后,可按需同步應用帳號認證信息(帳號名、Token 或其他)到其他設備上,在其他設備上打開應用時不再需要輸入應用帳號認證信息,可直接登錄使用。
  • 應用程序管理多設備:應用程序在服務器端可以根據 DVID 管理相同應用帳號關聯/綁定的分布式虛擬設備列表。
③ 獲取 DVID
  • HarmonyOS SDK 提供 DVID 相關 API,應用程序可通過 API 使用 DVID 的能力。
private String getDVID() {return AccountAbility.getAccountAbility().getDistributedVirtualDeviceId();}

三、UUID

① UUID 簡介
  • 隨機生成的字符串,同一時空下所有設備生成的 UUID 都不同。應用在其生命周期內可以用該標識唯一識別相同設備。
  • 格式說明:string 型,標準的 UUID 格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。
② 應用場景
  • 應用在后臺統計分析在相同設備上的應用的使用情況,該標識作為設備的唯一標識,區別其它設備。
  • 但需要注意,當應用卸載后該標識銷毀,再次重新安裝后調用獲取 UUID 接口時會重新生成不同的 ID,所以不會持久的標識同一臺設備。
③ 獲取 UUID
import java.util.UUIDUUID uuid = UUID.randomUUID()

總結

以上是生活随笔為你收集整理的HarmonyOS之深入解析设备标识符的功能和使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。