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

allprojects {    repositories {        maven{url 'https://dl.bintray.com/lizixian/MusicLibrary'}    }}

dependencies {    implementation 'com.lzx:MusicLibrary:1.3.6'}

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

implementation 'com.android.support:support-media-compat:27.1.1'
  1. 添加 MusicLibrary 到你的 Application 中

public class NiceMusicApplication extends Application {

    @Override    public void onCreate() {        if (!BaseUtil.getCurProcessName(this).contains(":musicLibrary")) {            MusicLibrary musicLibrary = new MusicLibrary.Builder(this)                              .build();            musicLibrary.init();        }    }}

初始化说明

  1. 因为音乐服务是运行在 musicLibrary 进程里面的,多进程的情况下,Application 会创建多次,所以需要加上以上判断,在非 musicLibrary 进程里面初始化。
    当然,如果你的项目中包含两个以上的进程,则判断方式需要改改,改成在你的主进程下初始化即可。

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

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

  • setUseMediaPlayer(boolean isUseMediaPlayer) 是否使用 MediaPlayer

  • setNotificationCreater(NotificationCreater creater) 通知栏配置

  • setCacheConfig(cacheConfig) 边播边存配置

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

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

SongInfo songInfo = new SongInfo();songInfo.setSongId("your song Id");songInfo.setSongUrl("your song url");

MusicManager.get().playMusicByInfo(songInfo);

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

使用文档

  1. Model字典

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

  2. 播放器API

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

  3. 通知栏集成

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

  4. 边播边存配置说明

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

  5. 代码实现以及原理

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

PS:

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

开源库

推荐几个开源库

MusicLibrary:一个丰富的音乐播放封装库相关推荐

  1. 一个丰富的音乐播放封装库,支持多种音频格式,完美解决你的问题。

    StarrySky 项目地址:EspoirX/StarrySky  简介:

  2. Swift - 制作一个在线流媒体音乐播放器(使用StreamingKit库)

    在之前的文章中,我介绍了如何使用  AVPlayer 制作一个简单的音乐播放器( 点击查看1. 点击查看2).虽然这个播放器也可以播放网络音频,但其实际上是将音频文件下载到本地后再播放的. 本文演示如 ...

  3. 完整打造一个多功能音乐播放器项目(初步设想跟酷狗类似)

    本人目前准备利用闲暇时间打造一个完整的音乐播放器项目,主要用于学习及分享!原创不易,转载请注明出处. 这是一个什么样的音乐播放器呢?整体的架构跟酷狗差不多吧,我的方式呢,是一个个组件一个个模块先做好, ...

  4. Python:通过网络爬虫实现一个简易控制台音乐播放器

    hello,大家好,我是wangzirui32,今天我们来学习如何通过网络爬虫实现一个简易控制台音乐播放器,开始学习吧! 1. 项目结构及库准备 app.py为项目入口程序,download.py为音 ...

  5. 用html制作一个音乐排行榜,使用原生JavaScript制作一个漂亮的音乐播放器

    简单介绍 起初在简书上发现了这篇博客--[html.css.jq]制作一个简洁的音乐播放器.这是一个用jQuery库实现的音乐播放器,界面简约大气. 我在这个基础上,反其道而行,使用原生JavaScr ...

  6. javascript实现一个自制网页音乐播放器

    序 接触简书也有一段日子了,这中间的时光还是比较轻松加愉快的,那种可以和他人分享知识的欣喜和愉悦的确是非常棒.我一向都是觉得专心写自己的文就可以了,不会总是纠结有多少人在看,有多少点击等等.用心写好自 ...

  7. Python制作一个多功能音乐播放器

    文章目录 一.制作播放器的思路 二.制作播放器知识点和所需模块 三.播放器的代码展示 一.制作播放器的思路 制作一个多功能音乐播放器的思路 确定播放器的需求和功能,例如支持哪些音频格式.播放列表管理. ...

  8. 自制一个简单的音乐播放器

    这两天刚学完了contentprovider和service组件,就综合下所学的,自制了一个简单的音乐播放器. 代码如下: 主activity代码 public class MainActivity ...

  9. HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)

    用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...

最新文章

  1. AngularJS中的指令全面解析(必看)
  2. 10个经典而简单的jQuery特效设计在线演示
  3. java生成电子证书_关于Java:使用Bouncycastle生成数字证书
  4. Linux Crontab 任务管理工具命令以及示例
  5. android软件百分比怎么实现,android 百分比布局
  6. linux段错误吐核怎么办,CentOS命令
  7. 蓝桥杯2017年第八届C/C++省赛A组第一题-迷宫
  8. PS2 键盘 变 USB 键盘 设计图
  9. 在利用计算机高级语言进行,2016计算机一级考试多选题专项训练及答案
  10. 如何申请:悟空问答,达人,金V认证!
  11. Latex 表格单元格内换行
  12. 用Python制作可视化GUI界面,一键实现证件照背景颜色的替换
  13. 如果今天是生命里的最后一天你想做点啥?
  14. linux 造字程序下载,truetype造字程序
  15. FDM 3D打印机常见故障列总 挨个排除
  16. 未明学院:Tableau安装详细教程,带你攻克第一个学习难关!
  17. mysql 1067 abouting_GitHub - chenxiao07150808/MySQL
  18. 55.跳跃游戏(Jump Game)
  19. 强调实体融合的当下,元宇宙当仁不让地成为各色玩家关注的焦点
  20. C语言中求π(pi)的方法

热门文章

  1. 【计算机系统基础4】程序的机器级表示
  2. C#读取Excel数据在CAD上展图
  3. 全概率公式与贝叶斯公式-机器学习
  4. 调用阿里短信通知平台
  5. android状态栏右上角增加图标的方法
  6. 24点游戏 java实现_java实现24点纸牌游戏
  7. 正版授权|FastStone Image Viewer 图像编辑转换浏览器软件,个人免费的图像浏览器、转换器和编辑器。
  8. c补week1(linux c基本操作及C语言部分基础知识)
  9. R语言 如何合并csv文件(批量读取csv文件)
  10. MAC Book Pro 使用 libmodbus