StarrySky
MusicLibrary
Music
音频集成
一个丰富的音乐播放封装库,针对快速集成音频播放功能,减少大家搬砖的时间,你值得拥有。
- 轻松播放本地和网络音频
- 集成和调用API非常简单,音频功能几乎可以集成到一个语句中。
- 提供丰富的API方法来轻松实现各种功能。
- 方便集成自定义通知栏和系统通知栏。
- 使用 ExoPlayer 作为默认底层播放器,但支持自定义实现
- 基于 ExoPlayer 支持多种普通音频格式并支持多种流式音频格式(DASH, SmoothStreaming, HLS,rtmp,flac)。
- 支持边播边存功能,没网也能播。支持自定义缓存实现。
- 支持改变播放速度。
- 几乎所有组件都支持自定义实现,高度的扩展性。
- 支持 SoundPool 使用
- 等等等等
若在使用中发现 Bug 或者有什么建议问题的可以在 issues 中提出或者添加 QQ 群交流,欢迎反馈。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.lzx:StarrySkyX:x.x.x'
}
x.x.x 填的是当前的版本号。(有些人反馈说看不到版本号,版本号在 Readme 一开始就有标明,若看不到可以查看代码 gradle 文件或者加群咨询)
请使用 Java8。此为 androidx 版本,请支持 androidx。
如果导入不了可以试试加上这个:
maven{
url "https://dl.bintray.com/lizixian/StarrySky/"
}
因为目前默认播放器 ExoPlayer 使用的是 2.12.0 版本,所以以下依赖都使用相同版本
若要支持 dash 类流音频,请另外导入
dependencies {
implementation 'com.google.android.exoplayer:exoplayer-dash:2.12.0'
}
若要支持 hls 类流音频,请另外导入
dependencies {
implementation 'com.google.android.exoplayer:exoplayer-hls:2.12.0'
}
若要支持 smoothstreaming 类流音频,请另外导入
dependencies {
implementation 'com.google.android.exoplayer:exoplayer-smoothstreaming:2.12.0'
}
若要支持 rtmp 类流音频,请另外导入
dependencies {
implementation 'com.google.android.exoplayer:extension-rtmp:2.12.0'
}
若需支持 flac 无损音频,请另外导入
dependencies {
implementation 'com.lzx:StarrySkyFlacExt:1.0.0'
}
flac 音频特别说明:
ExoPlayer 要播放 flac 音频,是需要自己编译 so 的,具体怎么操作可以看 ExoPlayer 的 github,本项目已经把编译好的代码放在了 extension-flac2120
这个 module 里面,2120 代表 版本号是 2.12.0。大家可以通过上面说明添加依赖即可轻松使用。
若不知道要导入哪一种,可以在播放时抛出的异常崩溃中根据异常信息提示导入。
下面是最简单的初始化以及播放音频代码,更多功能请阅读使用文档或者查看项目demo。
注意:项目 demo 中的音乐接口皆为白嫖得来,不知道哪天会请求不了,若运行 demo 时发现崩溃什么的,很大可能是接口问题导致的,不影响框架的使用。
open class TestApplication : Application() {
@Override
override fun onCreate() {
super.onCreate()
StarrySky.init(this)
}
}
//简单播放一首歌曲
val info = SongInfo()
info.songId = "111"
info.songUrl = "https://music.163.com/song/media/outer/url?id=317151.mp3"
StarrySky.with().playMusicByInfo(info)
几乎所有 API 都是通过 StarrySky.with() 方法去调用,API 本身也会有注释。
PS:
- 如果有兴趣,建议稍微阅读一下源码,这样对使用或者解决问题有很大帮助。
- 如果发现库中功能满足不了你的需求,建议通过下载源码修改成你要的样子来使用。
- 如果该项目对你有所帮助,欢迎 star 或 fork,谢谢各位。
尽管修改了很多次,但在实际应用中总会遇到各种各样的问题,所以接下来的计划是:
- 单例有时候并不方便,所以想可以创建多个实例
- 播放队列跟播放逻辑绑定在一块有时候也很麻烦,所以想相互独立分开
- 拦截器放在 Application 里面也不太方便,计划添加一个拦截器 api,可以随时添加
- 系统和自定义通知栏增加一个自由切换api
- 各种bug的修复
- 有问题欢迎加群咨询,有建议也可以提出来,谢谢。
StarrySky 目前为止有 8100+ 的下载量,感谢各位开发者的支持,下面是部分 app 成功案例。
(还有很多 App,只不过没要到 😂 。如有违法或者侵权行为请联系我删除!)
An android developer in GuangZhou
掘金:https://juejin.im/user/5861c3bb128fe10069e69f0a
语雀:https://www.yuque.com/espoir
Email:[email protected]
If you want to make friends with me, You can give me a Email and follow me。
MIT License
Copyright (c) [2018] [lizixian]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.