这个系列仅仅包含控制部分 , 不包含音频操作代码 , 如 pauseAudio(); 我不会说这个方法里是怎么操作的 , 大家需要结合自己的音频播放处理来实现.
Android多媒体控制
一个完整的多媒体播放器应该有的基础功能:
- 通过耳机按钮来控制歌曲 播放/暂停 上/下一首歌曲
- 当有线耳机/蓝牙耳机 断开连接和重新连接的时候 我们应该对应做出 暂停音频 恢复音频
- 使用系统提供的Notification.MediaStyle来控制歌曲 , 可以顺利兼容 android 4.x ~ android 7.x 现在的系统样式
[[广告]] https://github.com/ocwvar/DarkPurple
需要代码样例的同学可以在我的这个项目中查看 这个项目是个完整的音频播放器 这里的代码均是从里面提取 , 同时还有均衡器调节 频谱动画显示等.. 目前正在不断完善中 , 但由于上班 , 代码更新可能不及时.
MediaSessionCompat sessionCompat = new MediaSessionCompat();
在这个构造方法中 , 我们使用这个:
MediaSessionCompat(Context context, String tag, ComponentName mbrComponent, PendingIntent mbrIntent)
//第一个参数 context: 这个没有什么好讲的,大家都懂的
//第二个参数 tag: 这个是用于调试用的,随便填写即可
//第三个参数 mbrComponent: 这个是用于API21以下的时候传递耳机按钮事件用的MediaSessionCompat.
//第四个参数 mbrIntent: 这个是给API21以下传递的时候携带的,一般设为 NULL即可
//例如:
//其中的HeadsetButtonReceiver是我们的API21以下实用的监听器 , 我们稍候再讲
ComponentName cn = new ComponentName(this.context.getApplicationContext().getPackageName(),
HeadsetButtonReceiver.class.getName())
sessionCompat = new MediaSessionCompat(this.context.getApplicationContext(), "test", cn, null);
参数设置
sessionCompat = new MediaSessionCompat(...);
//设置MediaSession回调监听,主要用于设置API21+的耳机按钮监听
sessionCompat.setCallback(new MediaSessionCallback());
//设置FLAG,FLAG的用途一看名字就知道了
sessionCompat.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS);
//设置MediaSession启动 (很重要,不启动则无法接受到数据)
sessionCompat.setActive(true);
2. 耳机多媒体按钮监听
API 21+ 的方式 MediaSessionCompat.Callback
//创建完成后用MediaSessionCompat.setCallback设置上即可使用
private class MediaSessionCallback extends MediaSessionCompat.Callback {
@Override
public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
//接收到监听事件
}
}