notification+service+broadcastreceiver实现简单的音乐播放器
2015-04-14 15:26
405 查看
先给大家上一张效果图
对了上一曲 下一曲没有去实现
在上一张原理图
看完原理图我想大家都应该懂了 nofification如何变更的我忘了画在里面了 我就说一下吧
当我们点击notification是也是广播到services的receiver里 控制音乐播放状态然后控制notification内文字変更
nf.contentView.setTextViewText(R.id.btn_bf, "暂停");
nm.notify(0, nf);
下面是service代码
Activity代码
点我下载
对了上一曲 下一曲没有去实现
在上一张原理图
看完原理图我想大家都应该懂了 nofification如何变更的我忘了画在里面了 我就说一下吧
当我们点击notification是也是广播到services的receiver里 控制音乐播放状态然后控制notification内文字変更
nf.contentView.setTextViewText(R.id.btn_bf, "暂停");
nm.notify(0, nf);
下面是service代码
package com.example.music; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.media.MediaPlayer; import android.os.IBinder; import android.util.Log; import android.widget.RemoteViews; public class MusicService extends Service { // 用于创建通知栏布局 private RemoteViews remoteviews; // 用于播放阴雨 private MediaPlayer mplayer; private NotificationManager nm; private Notification nf; // 广播监听的动作 public static final String ACTION_BF = "ACTION_BF"; private int flag = 1; // 记录当前播放状态 private MusicServiceReceiver mr; @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { // 创建notification nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 注册receiver mr = new MusicServiceReceiver(); IntentFilter intentfilter = new IntentFilter(); intentfilter.addAction(ACTION_BF); registerReceiver(mr, intentfilter); //创建notification nf = new Notification(R.drawable.ic_launcher, "月牙湾", System.currentTimeMillis()); remoteviews = new RemoteViews(this.getPackageName(), R.layout.notification); Intent intent1 = new Intent(); intent1.setAction(ACTION_BF); intent1.putExtra("flag", 0); PendingIntent contentIntent = PendingIntent.getBroadcast(this, 0, intent1, 0); remoteviews.setOnClickPendingIntent(R.id.btn_bf, contentIntent); nf.contentView = remoteviews; nm.notify(0, nf); mplayer = MediaPlayer.create(this, R.raw.m); mplayer.setLooping(true); super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { unregisterReceiver(mr); mplayer.stop(); mplayer.release(); super.onDestroy(); } class MusicServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { flag = (flag == 1 ? 0 : 1); Log.v("music receiver", "receiver" + flag); if (flag == 0) // 正在播放 { mplayer.start(); nf.contentView.setTextViewText(R.id.btn_bf, "暂停"); } if (flag == 1) // { mplayer.pause(); nf.contentView.setTextViewText(R.id.btn_bf, "播放"); } Intent intent = new Intent("ACTION_UPDATE"); intent.putExtra("flag", flag); // 发送广播,将被Activity组件中的BroadcastReceiver接收到 sendBroadcast(intent); nm.notify(0, nf); } } }
Activity代码
package com.example.music; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button btn; private Activityrececier receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(this); receiver = new Activityrececier(); IntentFilter filter = new IntentFilter(); filter.addAction("ACTION_UPDATE"); registerReceiver(receiver, filter); Intent intent=new Intent(this,MusicService.class); startService(intent); } @Override public void onClick(View arg0) { Intent intent = new Intent("ACTION_BF"); sendBroadcast(intent); } @Override protected void onDestroy() { unregisterReceiver(receiver); super.onDestroy(); } class Activityrececier extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent intent) { int flag=intent.getIntExtra("flag", 0); Log.v("Activityrececier flag",flag+""); if(flag==0) { btn.setText("暂停"); } else{ btn.setText("播放"); } } } }
点我下载
相关文章推荐
- Android 初步学习BroadCast与Service实现简单的音乐播放器
- android音乐播放器实现(Service+BroadcastReceiver+Notification)
- Android 利用Service BroadcastReceiver实现小例子
- 使用IntentService与BroadcastReceiver实现后台服务(Android7.0可用)
- Android开发6:Service的使用(简单音乐播放器的实现)
- Android监听网络状态实现(BroadcastReceiver + Service)
- Android开发6:Service的使用(简单音乐播放器的实现)
- Android杂谈(23)Service+BroadcastReceiver+数据库+HttpURLConnection实现断点续传(上)
- 关于android实现聊天: Service +BroadcastReceiver
- 改造的音乐播放器的例子(学习Service和BroadCastReceiver必用)
- Android Service、Activity、BroadcastReceiver简单使用
- 改造的音乐播放器的例子(学习Service和BroadCastReceiver必用)(转)
- 【总结备用】Android监听网络状态实现(BroadcastReceiver + Service)
- Activity、BroadcastReceiver、Service共同工作的简单例子
- 使用Service+BroadcastReceiver实现定时更新天气
- 简单实现 BroadcastReceiver 回调
- 音乐播放器通知栏切歌(Notification+BroadcastReceiver)
- Android——用Activity和Service实现简单的音乐播放器
- AlarmManager+BroadcastReceiver+Service实现后台循环定时器
- Android杂谈(24)Service+BroadcastReceiver+数据库+HttpURLConnection实现断点续传(下)