HarmonyOS学习路之开发篇—设备管理(设备标识符)

这篇具有很好参考价值的文章主要介绍了HarmonyOS学习路之开发篇—设备管理(设备标识符)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NetworkID

简介

定义

网络设备节点通信标识符,是分布式软总线提供的一种非永久性标识符。NetworkID基于Java原生的UUID接口随机生成,长度为32字节,使用十六进制表示。主要用于业务调用分布式能力时,标识分布式网络内的设备节点。

NetworkID举例:6B97BC8F6F85A2A1A6E0E262111F42D6A8541CBFF6CAF688FA5293956EC3FD43

NetworkID特点

  • NetworkID为设备级标识符,不同APP在同一时间获取到同一设备的NetworkID相同。
  • NetworkID在设备下线、设备重启、恢复出厂设置后会发生变化,因此不可用于数据持久化存储的索引等场景。

NetworkID重置

为满足在分布式场景中的隐私要求,NetworkID在以下几个场景会发生变化:

  • 用户操作进行设备恢复出厂设置。
  • 设备重启。
  • 分布式组网的设备上线列表从非空转为空,并持续为空5分钟后。

使用场景

NetworkID是分布式网络设备节点在分布式组网中的通信标识符,用于在分布式业务中标识网络设备节点。上层业务在调用分布式能力的时候,使用NetworkID标识不同的网络设备节点。由于同一设备的NetworkID的值在多次组网中可能会发生变化,因此NetworkID不能用于数据持久化存储的索引等场景。

开发准备

HarmonyOS SDK提供NetworkID相关API,应用程序可通过API使用NetworkID的能力。

获取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 token
    private int abilityToken;
    // 用户在设备列表中选择设备后返回的NetworkID
    private String selectNetworkId;
    // 获取控制中心服务管理类
    private IContinuationRegisterManager continuationRegisterManager;

    // 设置控制中心设备状态变更的回调
    private IContinuationDeviceCallback callback = new IContinuationDeviceCallback() {
    @Override
    public void onDeviceConnectDone(String networkId,String deviceType) {
    // 在用户选择设备后回调获取NetworkID
    selectNetworkId = networkId;
    }

    @Override
    public void onDeviceDisconnectDone(String networkId) {
    }
    };

    // 设置注册控制中心服务回调
    private RequestCallback requestCallback = new RequestCallback() {
    @Override
    public void onResult(int result) {
    abilityToken = result;
    }
    };
    // 弹出选择设备列表
    private ClickedListener mShowDeviceListListener = new ClickedListener() {
        @Override
        public void onClick(Component arg0) {
            // 显示选择设备列表
            continuationRegisterManager.showDeviceList(abilityToken, null, null);
        }
    };
 
    @Override
    public 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, requestCallback);
    }
 
    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;
    }
 
    @Override
    public void onStop() {
        super.onStop();
        // 解注册控制中心
        continuationRegisterManager.unregister(abilityToken, null);
    }
}

DVID

简介

DVID(Distributed Virtual device Identifier), 分布式虚拟设备标识符。设备登录了HarmonyOS账号后,系统根据HarmonyOS帐号及应用程序信息生成分布式虚拟设备ID,即DVID。

应用程序可以根据DVID访问和管理分布式设备,具备类似管理本地设备的能力和体验。同时,为防止其他应用获取当前应用数据(比如用户行为收集),DVID与HarmonyOS帐号及应用程序信息强关联,在登录了相同HarmonyOS帐号的分布式设备上,相同应用获取到的DVID相同,不同应用获取的DVID不同。

使用场景

  • 场景一:应用程序一键式登录

    登录了相同的HarmonyOS帐号的多个分布式设备中,应用程序在某一设备上登录之后,可按需同步应用帐号认证信息(帐号名、Token或其他)到其他设备上,在其他设备上打开应用时不再需要输入应用帐号认证信息,可直接登录使用。

  • 场景二:应用程序管理多设备

    应用程序在服务器端可以根据DVID管理相同应用帐号关联/绑定的分布式虚拟设备列表。

开发准备

HarmonyOS SDK提供DVID相关API,应用程序可通过API使用DVID的能力。

获取DVID

private String getDVID() {
    return AccountAbility.getAccountAbility().getDistributedVirtualDeviceId();
}

UUID

简介

随机生成的字符串,同一时空下所有设备生成的UUID都不同。应用在其生命周期内可以用该标识唯一识别相同设备。

格式说明:string型,标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。

使用场景

应用使用情况统计分析:

应用在后台统计分析在相同设备上的应用的使用情况,该标识作为设备的唯一标识,区别其它设备。但需要注意,当应用卸载后该标识销毁。再次重新安装后调用获取UUID接口时会重新生成不同的ID。所以不会持久的标识同一台设备。

开发准备

集成Java JDK。文章来源地址https://www.toymoban.com/news/detail-541077.html

获取UUID

import java.util.UUID
UUID uuid  =  UUID.randomUUID() 

到了这里,关于HarmonyOS学习路之开发篇—设备管理(设备标识符)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 二)

    @Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。 @Prop装饰的变量和父组件建立单向的同步关系: @Prop变量允许在本地修改,但修改后的变化不会同步回父组件。 当父组件中的数据源更改时,与之相关的@Prop装饰的变

    2024年02月14日
    浏览(14)
  • HarmonyOS学习路之开发篇—数据管理(轻量级数据存储)

    轻量级数据存储适用于对Key-Value结构的数据进行存取和持久化操作。应用获取某个轻量级存储对象后,该存储对象中的数据将会被缓存在内存中,以便应用获得更快的数据存取速度。应用也可以将缓存的数据再次写回文本文件中进行持久化存储,由于文件读写将产生不可避免

    2024年02月13日
    浏览(13)
  • HarmonyOS学习路之开发篇—数据管理(关系型数据库)

    关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。HarmonyOS关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。Harmo

    2024年02月13日
    浏览(17)
  • HarmonyOS学习路之开发篇—数据管理(对象关系映射数据库)

    HarmonyOS对象关系映射(Object Relational Mapping,ORM)数据库是一款基于SQLite的数据库框架,屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的SQL语句, 以操作对象的形式来操作数据库,提升效率的同时也

    2024年02月13日
    浏览(16)
  • 开发基于 LoRaWAN 的设备--设备联网管理

    物联网 (IoT) 以及基于 LoRa® 的设备和 LoRaWAN® 网络使其成为可能,数十亿个传感器将改变我们与世界互动的方式。这些传感器将提供广泛的监控可能性,这在几年前还是不可想象的。各行业的数据分析师对农业、工业控制、医疗保健和计量等各个领域的数亿字节数据的可能性

    2024年02月15日
    浏览(11)
  • HarmonyOS学习路之开发篇—流转

    随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常

    2024年02月15日
    浏览(10)
  • HarmonyOS学习路之开发篇—AI功能开发(分词)

    随着信息技术的发展,网络中的信息量成几何级增长逐步成为当今社会的主要特征。准确提取文本关键信息,是搜索引擎等领域的技术基础,而分词作为文本信息提取的第一步则尤为重要。 分词作为自然语言处理领域的基础研究,衍生出各类不同的文本处理相关应用。 分词

    2024年02月11日
    浏览(19)
  • 软件测试/测试开发/全日制/测试管理丨跨平台设备管理方案 Selenium Grid

    Selenium Grid是一个用于实现分布式测试的工具,允许在多个机器和多个浏览器上同时运行Selenium测试。它可以有效地管理和分发测试任务,支持跨平台和跨浏览器的测试。以下是关于Selenium Grid的一些关键特点和使用方案: 分布式测试:  Selenium Grid支持在不同的计算机和操作系

    2024年01月20日
    浏览(16)
  • HarmonyOS学习路之开发篇—AI功能开发(实体识别)

    实体识别能够从自然语言中提取出具有特定意义的实体,并在此基础上完成搜索等一系列相关操作及功能。 实体识别覆盖范围大,能够满足日常开发中对实体识别的需求,让应用体验更好。识别准确率高,能够准确地提取到实体信息,对应用基于信息的后续服务形成关键影响

    2024年02月11日
    浏览(15)
  • HarmonyOS学习路之开发篇—AI功能开发(语音播报)

    语音播报(Text to Speech,下文简称TTS),基于华为智慧引擎(HUAWEI HiAI Engine)中的语音播报引擎,向开发者提供人工智能应用层API。该技术提供将文本转换为语音并进行播报的能力。 支持超长文本播报,最大文本长度为100000个字符。 语音播报不支持多线程调用。 实时语音交

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包