HarmonyOS鸿蒙Next手机与智慧屏协同交互

HarmonyOS鸿蒙Next手机与智慧屏协同交互

前言

本文关于【鸿蒙OS手机与智慧屏协同交互】

技术可行性研究

分布式遥控器的实现基于HarmonyOS分布式任务调度和公共事件服务。当TV端在搜索框聚焦时,自动拉起手机端的输入应用,在手机端输入时会将输入的内容同步显示在TV端搜索框;点击确定按钮会根据输入的内容搜索相关节目,还可以通过点击方向键将焦点移动到我们想要的节目上,再点击确定按钮进行播放。

1. 搭建HarmonyOS环境

我们首先需要完成HarmonyOS开发环境搭建,可参照如下步骤进行。

安装DevEco Studio,详情请参考下载和安装软件。

设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:

  1. 如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。

  2. 如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。

开发者可以参考以下链接,完成设备调试的相关配置:

  1. 使用真机进行调试

  2. 使用模拟器进行调试

您可以通过如下设备完成Codelab:

开启了开发者模式的两部HarmonyOS真机

2. 相关权限

本程序开发需要申请以下多端协同multi-device collaboration相关的四个权限,应用权限的申请可以参考权限章节。

  1. ohos.permission.DISTRIBUTED_DATASYNC:分布式数据管理权限,允许不同设备间的数据交换

  2. ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE:监听分布式组网内设备状态变化的权限

  3. ohos.permission.GET_DISTRIBUTED_DEVICE_INFO:获取分布式组网内设备列表和设备信息的权限

  4. ohos.permission.GET_BUNDLE_INFO:查询其他应用信息的权限

3. 代码结构解读

在本篇Codelab中我们只对核心代码进行讲解,您可以通过"获取示例代码"章节提供的链接,下载完整代码。首先来介绍下整个工程的代码结构:

  • adapter:DevicesListAdapter,用于向ListContainer控件中填充设备数据。

  • callBack:MainCallBack,抽取了MainAbilitySlice中的方法,供其回调使用。

  • component:SelectDeviceDialog封装了设备选择弹框,SimplePlayerController封装了视频播放控制栏。

  • constants:抽取了使用频繁的常量。

  • data:定义了影片数据类。

  • proxy:定义了连接远程和调用远程service(PA)的接口、实现类以及代理。

  • service:RemoteService为TV端service,供手机端远程调用。

  • slice:MainAbilitySlice为TV端默认主界面,RemoteInputAbilitySlice为手机端遥控器输入界面,MoviePlayAbilitySlice为视频播放界面。

  • utils:封装了公共方法,包括ability管理工具类、日志工具类、搜索工具类、窗口工具类。

  • resources:存放工程使用到的资源文件,其中resources\base\layout下存放XML布局文件,resources\base\media下存放图片资源和视频资源。

  • config.json:应用的配置文件。

本项目研究的基本思路和方法:将手机与华为智慧屏二和优势互补、相辅相成,以鸿蒙OS智能电视(智慧屏)为主要显示和影音I/O平台,以鸿蒙OS手机为主安装各种上网用的APP,基于鸿蒙OS手机与智慧屏的相互投屏、流转和协同功能。

(1)尝试将手机与智慧屏的设备连接。

public void openRemoteAbility(String deviceId, String bundleName, String abilityName) {
    Intent intent = new Intent();
    String localDeviceId = KvManagerFactory.getInstance()
            .createKvManager(new KvManagerConfig(abilitySlice)).getLocalDeviceInfo().getId();
    intent.setParam("localDeviceId", localDeviceId);

    Operation operation = new Intent.OperationBuilder()
            .withDeviceId(deviceId)
            .withBundleName(bundleName)
            .withAbilityName(abilityName)
            .withFlags(Intent.FLAG_ABILITYSLICE_MULTI_DEVICE)
            .build();
    intent.setOperation(operation);
    abilitySlice.startAbility(intent);
}

(2)实现手机远端控制智慧屏和播放内容。

private void initListener() {
    // 监听文本变化,远程同步
    textField.addTextObserver((ss, ii, i1, i2) -> {
        Map<String, Object> map = new HashMap<>(INIT_SIZE);
        map.put("inputString", ss);
        connectManager.sendRequest(ConnectManagerIml.REQUEST_SEND_DATA, map);
    });
    okButton.setClickedListener(component -> {
        // 点击OK按钮
        buttonClickSound();
        String searchString = textField.getText();
        Map<String, Object> map = new HashMap<>(INIT_SIZE);
        map.put("inputString", searchString);
        connectManager.sendRequest(ConnectManagerIml.REQUEST_SEND_SEARCH, map);
    });
    leftButton.setClickedListener(component -> {
        // 点击左键按钮
        sendMoveRequest(Constants.MOVE_LEFT);
    });
    rightButton.setClickedListener(component -> {
        // 点击右键按钮
        sendMoveRequest(Constants.MOVE_RIGHT);
    });
    upButton.setClickedListener(component -> {
        // 点击向上按钮
        sendMoveRequest(Constants.MOVE_UP);
    });
    downButton.setClickedListener(component -> {
        // 点击向下按钮
        sendMoveRequest(Constants.MOVE_DOWN);
    });
    goBackButton.setClickedListener(component -> {
        // 返回TV主页
        sendMoveRequest(Constants.GO_BACK);
    });
    closeButton.setClickedListener(component -> {
        // 返回主页
        sendMoveRequest(Constants.GO_BACK);
        terminateAbility();
    });
}

4. 参考视频

鸿蒙设备开发Hi3516烧录与调试 - 罗除博士做客深圳讯方

5. 参考示例代码

https://github.com/huaweicodelabs/harmonyos-codelabs/tree/main/RemoteInputDemo


更多关于HarmonyOS鸿蒙Next手机与智慧屏协同交互的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

HarmonyOS鸿蒙Next手机与智慧屏的协同交互主要依赖于分布式技术,实现设备间的无缝连接与资源共享。通过分布式软总线技术,手机与智慧屏可以快速发现并连接,形成统一的设备网络。在协同交互中,手机可以作为智慧屏的遥控器,通过触摸屏或语音指令控制智慧屏的操作。同时,手机上的应用可以无缝流转到智慧屏上显示,用户可以在大屏幕上继续操作手机应用,享受更佳的视觉体验。此外,手机与智慧屏之间还可以实现文件、图片、视频等内容的快速传输与共享,提升多设备协同工作的效率。这种协同交互不仅增强了用户体验,也展示了鸿蒙系统在跨设备协同方面的技术优势。

更多关于HarmonyOS鸿蒙Next手机与智慧屏协同交互的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS Next在手机与智慧屏的协同交互上实现了无缝连接。通过分布式技术,用户可以在智慧屏上直接操作手机应用,实现多屏协同。例如,手机上的视频、游戏等内容可一键投屏至智慧屏,享受更大屏幕的视觉体验。同时,智慧屏可作为手机的扩展屏幕,支持跨设备文件拖拽、消息同步等功能,提升办公效率。这种协同交互不仅增强了设备的互联性,也为用户带来了更智能、便捷的使用体验。

回到顶部