WEB开发网
开发学院手机开发Android 开发 Android 使用Service和Broadcast播放音乐文件 阅读

Android 使用Service和Broadcast播放音乐文件

 2010-11-05 00:57:58 来源:WEB开发网   
核心提示:}在onDestroy()方法里解除注册,不然退出时会报异常,Android 使用Service和Broadcast播放音乐文件(2),@Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(updatUIReceiver
}

在onDestroy()方法里解除注册,不然退出时会报异常。

@Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(updatUIReceiver); }

这里的广播类是在Activity里面定义的(也可以作为一个单独的类来写)。

代码

//定义一个BroadcastReceiver private BroadcastReceiver updatUIReceiver = new BroadcastReceiver() { //当service发出广播后,此方法就可以得到service传回来的值 @Override public void onReceive(Context context, Intent intent) { //更新界面。这里改变Button的值 //得到intent返回来的值,0表示此时是播放,1表示暂停, 2是停止 int backFlag = intent.getExtras().getInt("backFlag"); switch(backFlag){ case 0: btnStartOrPause.setText("暂停"); break; case 1: case 2: btnStartOrPause.setText("播放"); break; } } };

按钮处理事件

代码

//处理按钮事件 public void clickHandle(View v){ switch(v.getId()){ case R.id.btnPlayOrPause: intent = new Intent(AudioActi.this, giuz.service.MyAudioService.class); Bundle bundle2service = new Bundle(); bundle2service.putString("audioPath", AUDIO_PATH);//前面要定义AUDIO_PATH //BC_RECEIVER也要在前面定义,并在manifest.xml里注册 bundle2service.putString("bc_receiver", BC_RECEIVER); intent.putExtras(bundle2service); startService(intent);//开启服务 break; case R.id.btnStop: if(intent != null){ stopService(intent);//停止服务 } break; } }

2.在Service里,主要有onStart()、onDestroy()和sendBC4UpdateUI()几个方法。

先定义好下面这些对象

private MediaPlayer mediaPlayer = null;private Intent intent2bc = null;private Bundle bundle2bc = null;private String audioPath = null;private String bc_receiver = null;

在onStart()方法中,通过用mediaPlayer.isPlaying()方法来判断当前音乐是在播放还是暂停,并利用广播传递相应的值给Activity用以更新界面。

代码

@Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); audioPath = intent.getExtras().getString("audioPath"); bc_receiver =

Tags:Android 使用 Service

编辑录入:coldstar [复制链接] [打 印]
赞助商链接