上一篇博客说道除了可以使用bindService()开启Service从而实现在Activity与Service通信之外,还有一个方法,那就是:使用广播BroadCast Receiver
现在做一个简单地音乐播放器,讲解这个原理。
在此之前,我们需要了解如何使用BroadCast:
1.在Activity或者Service中定义一个Intent,并且指定Action属性;
2.再定义一个IntentIntentFilter,用来注册BroadCast Receiver,或者是在AndriodMainifest.xml中注册;
3.调sendBroadCast()方法发送这个注册过的与Intent对应的广播。(广播中重写onReceive()方法)。
接下来就可以做这个播放器了,布局界面非常简单,在此不赘述。
ps:在assets文件中要添加三首歌哦
首先写主Activity,在此中,我们定义了一个继承了BroadCast的内部类,并且在activity中注册了这个BroadCast Receiver,也就是说,该BroadCast Receiver监听这与intentfilter相对应的Intent-----当一首歌结束了或者播放状态改变,都会引起发送广播给Activity;
同理,在Service中我们定义了另一个广播,显然它是监听与其Intentfilter对应的Intent-------当在应用界面切换歌曲时引发发送广播给Service;
这样,Activity与Service之间就形成了通信,并且是相互的。
public class MusicBox extends Activity
implements OnClickListener
{
// 获取界面中显示歌曲标题、作者文本框
TextView title , author;
//播放/暂停、停止按钮
ImageButton play , stop;
ActivityReceiver activityReceiver;
public static final String CTL_ACTION
= "org.crazyit.action.CTL_ACTION";
public static f