此项目中应用到了自行收藏的歌单列表、酷狗API、开眼API,纯属Demo演示,无任何商业用途,禁止任何人将示例项目中的第三方API应用于商业用途,如果使用了,连带的法律责任与本作者无关!
音乐播放器:Android音乐播放器封装
视频播放器:Android视频播放器封装
基于原生MediaPlayer解码器封装的音乐播放器和视频播放器功能库。极简接入、功能全面、体积甚小。欢迎Star!欢迎下载apk体验!
iMusic示例工程主要界面遵循MVP思想开发,搜索音乐API取自《酷狗音乐》开放API,视频资源API取自《开眼视频》。禁止直接使用此项目中的API于商业行为中,一经使用,与本作者无关!
- 音乐播放器预览(如播放不流畅请点击图片查看)
- 视频播放器预览
1.音乐播放器
- 网络音乐播放
- 本地音乐检索播放
- 全局悬浮窗口播放,精准的扇形区域碰撞检测
- 搜索歌手、专辑、歌曲名播放(iMusic)
- 播放器歌词显示、自定义歌词解析器(>=1.0.7)
- 自1.0.9版本起开放 退出APP后,后台播放能力。iMusic已对重开处理
- 基本常规操作示例播放器
- 锁屏播放控制
- 自定义唱片机、锁屏界面、通知栏
- 状态栏通知控制
- 定时关闭播放
- 播放模式设置
- 对音乐收藏至本地
- 最近播放记录浏览
- 已对音频输出焦点管理作处理
2.视频播放器
- 支持自定义视频控制器
- 支持自定义封面控制器
- 支持自定义手势识别调节器
- 支持4种画面缩放模式设置
- 支持界面跳转无缝衔接播放
- 迷你小窗口播放、支持屏幕中拖拽
- 全局悬浮窗播放、支持屏幕全局拖拽
- 全屏播放下手势识别调节音量、屏幕亮度、快进、快退
- 支持全局悬浮窗播放器中无缝切换至Activity播放界面
- 列表单例播放
- 列表横竖屏切换
- 常规横竖屏切换
- 已对视频输出焦点管理作处理
1.依赖
dependencies {
implementation 'com.imusic.player:music-player:1.1.6'
}
2.MainActivity播放器初始化
@Override
protected void onCreate() {
super.onCreate();
//初始化播放器内部存储及服务组件。此initialize方法为重载方法,请阅读内部入参说明
MusicPlayerManager.getInstance().init(getApplicationContext()).initialize(MainActivity.this);
//其他功能初始化请下方【其他功能初始化】
}
@Override
protected void onDestroy() {
super.onDestroy();
//播放器反初始化。此方法为重载方法,请阅读内部入参说明
MusicPlayerManager.getInstance().unInitialize(MainActivity.this);
}
完整初始化其他功能初始化
3.开始播放你的音频任务
/**
* audios:待播放的歌单列表,音频对象需继承BaseAudioInfo类,请阅读类中成员属性注解
* position:开始播放的位置(位于audios中的index)
*/
MusicPlayerManager.getInstance().startPlayMusic(List<?> audios,int position);
4.音乐歌词
歌词解析及显示功能在>=1.0.7版本起提供支持,具体使用请参考唱片机类MusicJukeBoxView。(持续优化中)
iMuisc内置网络歌词解析仅支持酷狗音乐(搜索模块播放的歌曲)。
具体使用和说明详见播放器歌词
5.权限声明
<!--网络状态检查-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--锁屏下继续缓冲-->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
- Demo内置一套完整的UI交互播放器,请注册监听事件MusicPlayerManager.getInstance().addOnPlayerEventListener(this);并参照MusicPlayerActivity集成。
1.依赖
dependencies {
implementation 'com.imusic.player:video-player:1.0.9'
}
2.xml中引入播放器通道布局
<com.video.player.lib.view.VideoPlayerTrackView
android:id="@+id/video_track"
android:layout_width="match_parent"
android:layout_height="200dp"
app:video_autoSetCoverController="true"
app:video_autoSetVideoController="true"/>
//开启默认封面控制器
app:video_autoSetCoverController="true"
//开启默认视频交互控制器
app:video_autoSetVideoController="true"
你也可以在java代码中创建播放器,前往视频播放器Wiki介绍
3.播放器初始化及基本数据设置
mVideoPlayer = (VideoPlayerTrackView) findViewById(R.id.video_player);
//开始准备播放
mVideoPlayer.startPlayVideo(dataSource,title);
//第二种姿势准备播放
//mVideoPlayer.setDataSource(dataSource,title,);
//mVideoPlayer.startPlayVideo();
4.Activity生命周期方法加入
@Override
protected void onResume() {
super.onResume();
VideoPlayerManager.getInstance().onResume();
}
@Override
protected void onPause() {
super.onPause();
VideoPlayerManager.getInstance().onPause();
}
@Override
public void onBackPressed() {
//尝试弹射返回
if(VideoPlayerManager.getInstance().isBackPressed()){
super.onBackPressed();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
VideoPlayerManager.getInstance().onDestroy();
//如果你的Activity是MainActivity并且你开启过悬浮窗口播放器,则还需要对其释放
VideoWindowManager.getInstance().onDestroy();
}
5.权限声明:
<!--网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--锁屏工作,防止休眠-->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!--悬浮窗-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!--启用通知栏需使用-->
<uses-permission android:name="android.permission.GET_TASKS" />
6.Activity Manifest文件配置:
<activity android:name="xxx.xxx.xxx.MainActivity"
android:screenOrientation="portrait"
<!--在你需要全屏播放的Activity中加上这个属性,告诉系统Activity在横竖屏切换时不要销毁Activity-->
android:configChanges="orientation|screenSize">
</activity>
至此基础的视频播放器项目集成完毕,更多高级功能和API请阅读自定义交互和其他Wiki
强烈建议集成前先下载体验此APP,根据APP中的功能对照对应的API集成开发!!
fir托管下载: 前往fir下载
或者扫描二维码下载
- 集成中遇到问题请阅读Wiki,BUG提交欢迎issues。如有其他问题,联系邮箱:[email protected]