实现点击通知栏发送广播控制音乐的播放、暂停、上一曲、下一曲
来源:互联网 发布:c语言结构体数组赋值 编辑:程序博客网 时间:2024/06/05 02:21
Intent intent = new Intent(this,Main2Activity.class); PendingIntent pending = PendingIntent.getActivity(this, 0, intent, 0); builder.setContentIntent(pending); builder.setOngoing(true);//设置左右滑动不能删除 builder.setContent(remoteViews);实现点击通知栏进入播放详情界面,Main2Activity就是播放详情界面, Intent intentPause = new Intent("play");//发送播放音乐的通知 PendingIntent pIntentPause = PendingIntent.getBroadcast(this, 0, intentPause, 0); remoteViews.setOnClickPendingIntent(R.id.now, pIntentPause); Intent intentNext = new Intent("next");//发送播放下一曲的通知 PendingIntent pIntentNext = PendingIntent.getBroadcast(this, 0, intentNext, 0); remoteViews.setOnClickPendingIntent(R.id.next, pIntentNext); Intent intentLast = new Intent("last");//发送播放上一曲的通知 PendingIntent pIntentLast = PendingIntent.getBroadcast(this, 0, intentLast, 0); remoteViews.setOnClickPendingIntent(R.id.last, pIntentLast); Intent intentCancel = new Intent("cancel");//发送关闭通知栏的通知 PendingIntent pIntentCancel = PendingIntent.getBroadcast(this, 0, intentCancel, 0); remoteViews .setOnClickPendingIntent(R.id.move, pIntentCancel);
使用intent的隐式意图定义广播,需要注意的是intent的action不能通过@String/xxx的形式设置,必须直接使用字符串声明,如"play",当点击相应的按钮时会发送对应的广播
那么就需要定义一个广播接收者,广播接收者的注册分为静态注册和动态注册两种方式,这是静态注册的方法,使用静态注册一旦注册成功那么receive就始终存在,
我使用的是在服务中定义一个广播接收者,动态注册,这样他与服务的声明周期就相同了,同时也方便对服务进行歌曲的操作<receiverandroid:name=".receiver.AudioBecomingNoisyReceiver"><intent-filter><actionandroid:name="android.media.AUDIO_BECOMING_NOISY" /></intent-filter>
先声明服务接受者
public class Receive extendsBroadcastReceiver{@Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(player!=null){ if(action.equals("play")){ if(mState==State.PAUSED){ rePlaySong(); }elseif(mState==State.STOPPED){ Log.i("actioSTOPPEDn",action); startPlaySong(mdata.get(POSITION)); } }elseif(action.equals("pause")){ pausePlaySong(); }elseif(action.equals("next")){ startPlayNext(); }elseif(action.equals("last")){ startPlayLast(); }elseif(action.equals("cancel")){ //关闭通知栏 nm.cancel(9); } } }
动态注册:
这样就完成了广播的发送,广播的接收,通过对通知栏的操作控制音乐的播放,IntentFilter filter = new IntentFilter(); filter.addAction("play"); filter.addAction("pause"); filter.addAction("next"); filter.addAction("last"); filter.addAction("cancel"); registerReceiver(receive, filter);Receive
receive = new Receive();
0 0
- 实现点击通知栏发送广播控制音乐的播放、暂停、上一曲、下一曲
- Android实战 - 音心播放器 (通知实现音乐的播放/暂停/下一曲控制)
- 点击图片控制音乐播放及暂停
- 音乐播放暂停控制
- Android实现控制第三方音乐播放器暂停/播放
- Android开发笔记之广播,service实现音乐的播放暂停停止快进等功能
- Service后台服务控制音乐的播放暂停和停止,播放完自动播放下一曲
- 系统音乐播放器暂停、播放的控制
- AS3.0实现音乐的播放,停止,暂停,和音量的控制
- 实现Activity中控制service里音乐播放、暂停的两种方式
- HTML5 Audio中控制音乐暂停、播放的js
- JS 控制 audio 标签 播放/暂停 音乐
- 点击同一图片,控制音乐开始、暂停
- 通过服务+广播+通知实现的一个通知栏音乐控制器
- Android怎样实现控制第三方音乐播放器暂停、播放
- 通知栏通知,及点击跳转(广播实现)
- Android 音乐播放器的通知栏
- android Alarm闹钟发送广播播放音乐
- 二分查找
- 10.30 E - 汉诺塔III
- B哥传
- linux中各种删除
- 进程调度之动态高优先权优先(实验二)
- 实现点击通知栏发送广播控制音乐的播放、暂停、上一曲、下一曲
- 关于HTTP的一些自我归纳
- 简单c-1
- 数据结构--KMP应用
- 【DFS】CODE[VS] 2066 三角恋(刷题记录)
- 169. Majority Element (python)
- JUNIPER路由器中常用命令总结
- 使用Spring Cloud Config搭建配置中心
- Position属性四个值:static、fixed、absolute和relative的区别和用法