HarmonyOS Sample 之 DistributedMusicPlayer分布式音乐播放器 原创 精华
目录
- DistributedMusicPlayer分布式音乐播放器
- 介绍
- 效果展示
- 搭建环境
- 代码结构
- 实现步骤
- 1.实现跨设备迁移标准步骤,参见[HarmonyOS Sample 之 AbilityInteraction设备迁移](https://harmonyos.51cto.com/posts/7547)
- 2.实现一个播放器管理者PlayerManager
- 2.1.定义播放器的状态,包括: 播放、暂停、完成、播放中
- 2.2.实现基本的方法,包括:播放、暂停、切换歌曲、更新播放进度方法
- 2.3.PlayerStateListener播放器状态监听器有如下方法:
- 2.4.PlayCallBack播放器回调类实现了Player.IPlayerCallback接口,实现了如下方法:
- 3.MainAbilitySlice 中 implements PlayerStateListener , IAbilityContinuation接口
- 问题总结
- 1.onMusicFinished 音乐播放完成时应该被调用,但是多数没被调用,只是偶尔会调用,难道是我电脑性能跟不上了?
- 2.优化了源码中应用启动后,点击播放无法播放的问题
- 3.优化了播放器播放完当前歌曲更新播放图标
- 4.增加了相关的注释说明
- 完整代码
DistributedMusicPlayer分布式音乐播放器
介绍
本示例主要演示了如何通过迁移数据进行音乐的分布式播放。实现了音乐播放的跨设备迁移,包括:播放哪首歌曲、播放进度、以及播放状态的保持。
效果展示
搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
下载源码,导入项目。
代码结构
实现步骤
1.实现跨设备迁移标准步骤,参见HarmonyOS Sample 之 AbilityInteraction设备迁移
2.实现一个播放器管理者PlayerManager
2.1.定义播放器的状态,包括: 播放、暂停、完成、播放中
2.2.实现基本的方法,包括:播放、暂停、切换歌曲、更新播放进度方法
还有一些辅助方法,包括:设置媒体资源、定时更新播放进度、获取播放总时长、
要用到Player/Timer/自定义的PlayerStateListener/EventHandler事件处理/PlayCallBack播放器回调类
2.3.PlayerStateListener播放器状态监听器有如下方法:
onPlaySuccess播放成功时被调用
onPauseSuccess暂停时被调用
onPositionChange进度发生变化时被调用
onMusicFinished音乐播放完成时被调用
onUriSet资源被设置时被调用
2.4.PlayCallBack播放器回调类实现了Player.IPlayerCallback接口,实现了如下方法:
onPrepared 当媒体文件准备好播放时调用。
onMessage当收到播放器消息或警报时调用。
onError收到播放器错误消息时调用。
onResolutionChanged当视频大小改变时调用。
onPlayBackComplete播放完成时调用。
onRewindToComplete 当播放位置被 Player.rewindTo(long) 改变时调用。
onBufferingChange当缓冲百分比更新时调用。
onNewTimedMetaData当有新的定时元数据可用时调用。
onMediaTimeIncontinuity当媒体时间连续性中断时调用,例如播放过程中出现错误,播放位置被Player.rewindTo(long)改变,或者播放速度突然改变。
3.MainAbilitySlice 中 implements PlayerStateListener , IAbilityContinuation接口
3.1.实现PlayerStateListener接口方法
3.2.实现IAbilityContinuation接口方法
3.3.定义ValueChangedListenerImpl进度值变化的监听事件
实现 Slider.ValueChangedListener 接口方法
3.4.定义迁移数据的KEY,音乐当前的播放时间、播放的歌曲索引(位置)、播放状态
3.5.定义播放的音乐URI,这里准备了2首,还有对应的海报
3.6.onStart完成数据的初始化
初始化界面组件,实现对应按钮的监听事件
播放或暂停、上一首、下一首、迁移以及进度条的进度变化事件的监听
3.7.初始化媒体对象
当前播放歌曲资源,播放器管理者
3.8.远端迁移后恢复播放界面
恢复播放器的播放进度、播放状态、海报、当前时间和总时长、slider播放进度
问题总结
1.onMusicFinished 音乐播放完成时应该被调用,但是多数没被调用,只是偶尔会调用,难道是我电脑性能跟不上了?
2.优化了源码中应用启动后,点击播放无法播放的问题
3.优化了播放器播放完当前歌曲更新播放图标
4.增加了相关的注释说明
完整代码
附件直接下载
看着这详细的注释,膜拜一波。
注释详细,大佬可以出书出视频了。
大佬,这个怎么加个播放列表