本示例使用fileIo获取指定音频文件,并通过AudioPlayer完成了音乐的播放完成了基本的音乐播放、暂停、上一曲、下一曲功能;并使用DeviceManager完成了分布式设备列表的显示和分布式能力完成了音乐播放状态的跨设备迁移。
本示例用到了与用户进行交互的Ability的能力接口@ohos.ability.featureAbility
文件存储管理能力接口@ohos.fileio
屏幕属性接口@ohos.display
管理窗口能力接口@ohos.window
分布式数据管理接口@ohos.data.distributedData
音视频相关媒体业务能力接口@ohos.multimedia.media
分布式设备管理能力接口(设备管理),实现设备之间的kvStore对象的数据传输交互@ohos.distributedDeviceManager
首页 |
---|
使用说明
1.音乐播放,点击播放、暂停、上一曲、下一曲按钮可以对音乐进行操作。
2.跨设备迁移播放,组网条件下,点击流转按钮,选择设备,拉起对端设备上的音乐,本端退出。
音频播放:媒体子系统包含了音视频相关媒体业务,通过AudioPlayer实现音频播放的能力。
数据流转:分布式数据管理为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式数据各个接口,应用程序可将数据保存到分布式数据库中,并可对分布式数据库中的数据进行增/删/改/查等各项操作。
entry/src/main/ets/
|---pages/index
| |---index.css // 首页样式
| |---index.hml // 首页结构
| |---index.js // 首页逻辑
|---model
| |---PlayerModel.js // 播放器模块
| |---KvStoreModel.js // kvstore对象操作类
| |---RemoteDeviceModel.js // 远程设备操作类
|---common/media // 存放播放器图片资源
在分布式音乐播放器中,分布式设备管理包含了分布式设备搜索、分布式设备列表弹窗、远端设备拉起三部分。
首先在分布式组网内搜索设备,然后把设备展示到分布式设备列表弹窗中,最后根据用户的选择拉起远端设备。
通过SUBSCRIBE_ID搜索分布式组网内的远端设备,详见registerDeviceListCallback_(callback) {}模块源码参考。
使用continueAbilityDialog弹出分布式设备列表弹窗,参考首页。
通过startAbility(deviceId)方法拉起远端设备的包,源码参考。
(1) 管理分布式数据库
创建一个KVManager对象实例,用于管理分布式数据库对象。通过distributedData.createKVManager(config),并通过指定Options和storeId,创建并获取KVStore数据库,并通过Promise方式返回,此方法为异步方法,例如this.kvManager.getKVStore(STORE_ID, options).then((store) => {})
(2) 订阅分布式数据变化
通过订阅分布式数据库所有(本地及远端)数据变化实现数据协同源码参考。
(1)分布式设备管理器绑定应用包
deviceManager.createDeviceManager('ohos.samples.distributedmusicplayer') 源码参考。
(2) 初始化播放器
构造函数中通过'@ohos.multimedia.media'组件对播放器进行实例化,并调用播放器初始化函数,通过播放器的on函数,监听error、finish、timeUpdate
(3) 同步当前播放数据
播放器通过onRadioChange(),将当前播放的资源、时间、以及播放状态同步给选中的设备。
(4) 接收当前播放数据
播放通过onNewRequest(),调用this.restoreFromWant(), featureAbility获取want参数,kvstore组件获取播放列表,playerModel组件重新加载播放器状态和资源。
允许不同设备间的数据交换:ohos.permission.DISTRIBUTED_DATASYNC
允许系统应用获取分布式设备的认证组网能力:ohos.permission.ACCESS_SERVICE_DM
不涉及
1.本示例仅支持标准系统上运行。
2.本示例需要使用DevEco Studio 3.0 Beta4 (Build Version: 3.0.0.992, built on July 14, 2022)才可编译运行。
3.如果安装本示例报错为error:install sign info inconsistent,则有可能本应用被设置为系统预置应用,已安装在系统中,此时需使用命令进行替换安装,并在替换安装后对设备进行重启操作,具体命令如下:
hdc shell mount -o rw,remount /
hdc file send ./entry-default-signed.hap /system/app/com.ohos.distributedmusicplayer/Music_Demo.hap
hdc shell reboot
等设备重启后即可完成应用的替换安装,无需其他操作。
4.本示例需要使用@ohos.distributedDeviceManager系统权限的系统接口。使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考替换指南。
如需单独下载本工程,执行如下命令:
git init
git config core.sparsecheckout true
echo code/SuperFeature/DistributedAppDev/JsDistributedMusicPlayer/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。