前言

最近用原生MediaPlayer 各种无法解决的问题
于是找第三方优秀框架
推荐 音频框架 StarrySky 亲测效果极佳 是满意的效果!

StarrySky音频框架

项目依赖
需要在工程的build.gradle里配置下载依赖

		//音乐插件
        maven{
            url "https://dl.bintray.com/lizixian/StarrySky/"
        }

需要在app的build.gradle

	//音频
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.lzx:StarrySkyX:2.5.9'

第一步

需要在BaseApplication初始化该控件

 @Override
    public void onCreate() {
        super.onCreate();
        //检测内存泄漏
//        if (LeakCanary.isInAnalyzerProcess(this)) {
//            return;
//        }
//        LeakCanary.install(this);
        //初始化音乐播放器
        StarrySky.init(this).apply();
        initX5();
    }

第二步

在你的代码中使用播放器

 //准备
 StarrySky.with().prepare();
 
 //开始播放
StarrySky.with().playMusicByUrl(mWangYiYunBean.getMp3_url());

//暂停播放
 StarrySky.with().pauseMusic();

PlayerControl 类 API:

通过 StarrySky.with() 调用
编号 API 作用 编号 API 作用
1 playMusicById 根据 songId 播放 31 getNowPlayingSongUrl 获取当前播放的歌曲url
2 playMusicByUrl 根据 songUrl 播放 32 getNowPlayingIndex 获取当前播放歌曲的下标
3 playMusicByInfo 根据 SongInfo 播放 33 getBufferedPosition 获取缓存位置 毫秒为单位
4 playMusic 播放,传入播放列表和下标 34 getPlayingPosition 获取播放位置 毫秒为单位
5 addInterceptor 添加拦截器 35 isSkipToNextEnabled 是否有下一首
6 pauseMusic 暂停 36 isSkipToPreviousEnabled 是否有上一首
7 restoreMusic 恢复播放(暂停后恢复) 37 getPlaybackSpeed 获取播放速度
8 stopMusic 停止播放 38 isPlaying 是否在播放
9 prepare 准备播放,准备的是队列当前下标的音频 39 isPaused 是否暂停
11 prepareById 根据 songId 准备 40 isIdea 是否空闲
12 prepareByUrl 根据 songUrl 准备 41 isBuffering 是否缓冲
13 prepareByInfo 根据 SongInfo 准备 42 isCurrMusicIsPlayingMusic 判断传入的音乐是不是正在播放的音乐
14 skipToNext 下一首 43 isCurrMusicIsPlaying 判断传入的音乐是否正在播放
15 skipToPrevious 上一首 44 isCurrMusicIsPaused 判断传入的音乐是否正在暂停
16 fastForward 快进 每调一次加 speed 倍 45 isCurrMusicIsIdea 判断传入的音乐是否空闲
17 rewind 快退 每调一次减 speed 倍 46 isCurrMusicIsBuffering 判断传入的音乐是否缓冲
18 onDerailleur 配置任意倍速 47 setVolume 设置音量, 范围 0到1
19 seekTo 移动到媒体流中的新位置,以毫秒为单位 48 getVolume 获取音量
20 setRepeatMode 设置播放模式 49 getDuration 获取媒体时长,单位毫秒
21 getRepeatMode 获取播放模式 50 getAudioSessionId 获取 AudioSessionId
22 getPlayList 获取播放列表 51 querySongInfoInLocal 扫描本地媒体信息
23 updatePlayList 更新播放列表 52 cacheSwitch 缓存开关,可控制是否使用缓存功能
24 addPlayList 添加更多播放列表 53 stopByTimedOff 定时暂停或停止
25 addSongInfo 添加一首歌 54 addPlayerEventListener 添加一个状态监听
26 addSongInfo 添加一首歌,指定位置 55 removePlayerEventListener 删除一个状态监听
27 removeSongInfo 删除歌曲 56 clearPlayerEventListener 删除所有状态监听
28 clearPlayList 清除播放列表 57 focusStateChange 焦点变化监听,LiveData 方式
29 getNowPlayingSongInfo 获取当前播放的歌曲信息 58 playbackState 状态监听,LiveData 方式
30 getNowPlayingSongId 获取当前播放的歌曲songId 59 setOnPlayProgressListener 设置进度监听
60 skipMediaQueue 是否跳过播放队列 61 setWithOutCallback 是否需要状态回调
62 updateCurrIndex 根据当前播放信息更新下标
具体详细注释,参数和实现请查看源代码或者参考 demo。

StarrySky 总结

StarrySky 是一个音频集成库,鉴于在一些项目中如果需要集成音频播放功能的话,都离不开对播放器的封装,对播放控制的封装,对 API 的 封装等操作,其实这些操作在不同项目中都是大同小异的,所以 StarrySky 就是这样一个集成了播放音频所需的操作的一个库。

StarrySky 主打集成简单,代码小巧简单易读懂,扩展性强,使用方便等方向。经本人和众多开发者在实际项目中使用,证明了 灵活运用 StarrySky 是可以能够应付项目中足够复杂的播放场景的。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐