HarmonyOS鸿蒙Next手机与智慧屏协同交互
HarmonyOS鸿蒙Next手机与智慧屏协同交互
前言
本文关于【鸿蒙OS手机与智慧屏协同交互】
技术可行性研究
分布式遥控器的实现基于HarmonyOS分布式任务调度和公共事件服务。当TV端在搜索框聚焦时,自动拉起手机端的输入应用,在手机端输入时会将输入的内容同步显示在TV端搜索框;点击确定按钮会根据输入的内容搜索相关节目,还可以通过点击方向键将焦点移动到我们想要的节目上,再点击确定按钮进行播放。
1. 搭建HarmonyOS环境
我们首先需要完成HarmonyOS开发环境搭建,可参照如下步骤进行。
安装DevEco Studio,详情请参考下载和安装软件。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
-
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
-
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
开发者可以参考以下链接,完成设备调试的相关配置:
-
使用真机进行调试
-
使用模拟器进行调试
您可以通过如下设备完成Codelab:
开启了开发者模式的两部HarmonyOS真机
2. 相关权限
本程序开发需要申请以下多端协同multi-device collaboration相关的四个权限,应用权限的申请可以参考权限章节。
-
ohos.permission.DISTRIBUTED_DATASYNC:分布式数据管理权限,允许不同设备间的数据交换
-
ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE:监听分布式组网内设备状态变化的权限
-
ohos.permission.GET_DISTRIBUTED_DEVICE_INFO:获取分布式组网内设备列表和设备信息的权限
-
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
HarmonyOS鸿蒙Next手机与智慧屏的协同交互主要依赖于分布式技术,实现设备间的无缝连接与资源共享。通过分布式软总线技术,手机与智慧屏可以快速发现并连接,形成统一的设备网络。在协同交互中,手机可以作为智慧屏的遥控器,通过触摸屏或语音指令控制智慧屏的操作。同时,手机上的应用可以无缝流转到智慧屏上显示,用户可以在大屏幕上继续操作手机应用,享受更佳的视觉体验。此外,手机与智慧屏之间还可以实现文件、图片、视频等内容的快速传输与共享,提升多设备协同工作的效率。这种协同交互不仅增强了用户体验,也展示了鸿蒙系统在跨设备协同方面的技术优势。
更多关于HarmonyOS鸿蒙Next手机与智慧屏协同交互的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS Next在手机与智慧屏的协同交互上实现了无缝连接。通过分布式技术,用户可以在智慧屏上直接操作手机应用,实现多屏协同。例如,手机上的视频、游戏等内容可一键投屏至智慧屏,享受更大屏幕的视觉体验。同时,智慧屏可作为手机的扩展屏幕,支持跨设备文件拖拽、消息同步等功能,提升办公效率。这种协同交互不仅增强了设备的互联性,也为用户带来了更智能、便捷的使用体验。