MusicLibrary:一个丰富的音乐播放封装库

code小生,一个专注 Android 领域的技术分享平台

作者:lizixian18

链接:https://github.com/lizixian18/MusicLibrary

声明:本文是 lizixian18 投稿,转载等请联系作者获得授权。

MusicLibrary

一个丰富的音乐播放封装库,针对快速集成音频播放功能,你值得拥有。

前序

在日常开发中,如果项目中需要添加音频播放功能,是一件很麻烦的事情。一般需要处理的事情大概有音频服务的封装,播放器的封装,通知栏管理,联动系统媒体中心,音频焦点的管理,播放列表维护,各种API方法的编写等等…如果完善一点,还需要用到IPC去实现。

可见需要处理的事情非常多。

所以 MusicLibrary 就这样编写出来了,它的目标是帮你全部实现好所有音频功能相关的事情,让你可以专注于其他事情。

特点

MusicLibrary 具有下面特点:

轻松播放本地和网络音频

基于IPC实现音频服务,减少应用内存峰值,避免OOM。

集成和调用API非常简单,音频功能几乎可以集成到一个语句中。

提供丰富的API方法来轻松实现各种功能。

用一句话,您可以自定义通知栏和系统通知栏来自定义通知栏的控件。

集成MediaPlayer和ExoPlayer播放器,可自由切换

支持多种音频格式并支持音频直播流(DASH, SmoothStreaming, HLS,rtmp.)。

支持保存播放进度。

支持边播边存功能,没网也能播。

支持改变播放速度和改变播放音调。

项目状态

经过几个版本的迭代,MusicLibrary 已经基本稳定,并已经在多个项目中实践使用。

使用例子

为了更好地展示 MusicLibrary 的功能,所以写了一个简单的音乐播放器,在里面可以看到具体的使用方法, 具体请参考 NiceMusic

使用方式

1.导入library

如果你的 appcompat-v7 包使用的是 27+,那么需要额外引用 support-media-compat 例如:

添加 MusicLibrary 到你的 Application 中

初始化说明

因为音乐服务是运行在 musicLibrary 进程里面的,多进程的情况下,Application 会创建多次,所以需要加上以上判断,在非 musicLibrary 进程里面初始化。

当然,如果你的项目中包含两个以上的进程,则判断方式需要改改,改成在你的主进程下初始化即可。

初始化的时候通过 Bulider 模式还有一些参数可以配置:

setAutoPlayNext(boolean autoPlayNext) 是否在播放完当前歌曲后自动播放下一首

setUseMediaPlayer(boolean isUseMediaPlayer) 是否使用 MediaPlayer

setNotificationCreater(NotificationCreater creater) 通知栏配置

setCacheConfig(cacheConfig) 边播边存配置

giveUpAudioFocusManager() 放弃音频焦点管理,放弃后,多个音频一起会混播

简单应用 (播放一首音乐):

最少要设置 songId 和 songUrl 才能播放。若要播放本地音频或者 assets 文件夹下的音频,或者 m3u8 等流式音频,用法一样,只要设置对 songUrl 和 songId 就行。

使用文档

Model字典

详细见 Model字典说明(https://github.com/lizixian18/MusicLibrary/blob/master/readme/model.md)

播放器API

详细见 API说明(https://github.com/lizixian18/MusicLibrary/blob/master/readme/api.md)

通知栏集成

详细见 通知栏集成(https://github.com/lizixian18/MusicLibrary/blob/master/readme/notification.md)

边播边存配置说明

详细见 配置边播边存功能(https://github.com/lizixian18/MusicLibrary/blob/master/readme/playcache.md)

代码实现以及原理

详细见 代码实现以及原理(https://github.com/lizixian18/MusicLibrary/blob/master/readme/principle.md)

PS:

如果你有想法或者意见和建议,欢迎提issue,喜欢点个star。欢迎各位大佬指点指点。

开源库

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180612G08OYB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券