首先申明,我是菜鸟,
正在做一个很小的音乐播放器,遇到了一个问题,首先,service中有这样一段代码:@Overridepublic void onStart(Intent intent, int startId) { super.onStart(intent, startId); Bundle data = intent.getExtras(); if(data.getSerializable("list")==null||data.getInt("current")<0){ Log.i("MusicService", "没有音乐"); return; } //取得数据 position = data.getInt("current"); musicList = (List<Music>)data.getSerializable("list"); music = musicList.get(position); try { player.reset(); Log.i("MusicService", "文件位置:"+music.getLocation()); player.setDataSource(music.getLocation()); } catch (Exception e) { e.printStackTrace(); } /** * 初始化数据 */int state = intent.getIntExtra("state", -1); if (state != -1) { switch (state) { case TagUtil.MUSIC_PLAY:// 播放 if (!player.isPlaying()) { play(); } break; case TagUtil.MUSIC_PAUSE:// 暂停 if (player.isPlaying()) { pause(); } break; case TagUtil.MUSIC_STOP:// 停止 stop(); break; // case TagUtil.PROGRESS_CHANGE:// 进度条改变 // currentTime = intent.getExtras().getInt("progress"); // player.seekTo(currentTime); // break; } } }这是控制播放之类的,还有在播放界面我打算这样实现的:/** * 播放按钮控制 */class Click implements OnClickListener { @Overridepublic void onClick(View v) { switch (v.getId()) { case R.id.play: //控制播放/赞停 Log.i("播放", R.drawable.play+""); if(!flag){//正在播放 flag=false; btn_play.setImageResource(R.drawable.player_btn_player_pause); play(); }else{//已经暂停 flag=true; btn_play.setImageResource(R.drawable.player_btn_player_play); pause(); } break; case R.id.pre: //控制上一首 pre(); break; case R.id.next: //控制下一首 next(); break; case R.id.stop: //控制停止 stop(); break; default: break; } } } /** * 播放 */public void play() { Intent intent = new Intent(); intent.setAction("com.app.media.MUSIC_SERVICE"); intent.putExtra("state", TagUtil.MUSIC_PLAY);// 向服务传递数据 startService(intent); } /** * 暂停 */public void pause() { Intent intent = new Intent(); intent.setAction("com.app.media.MUSIC_SERVICE"); intent.putExtra("state", TagUtil.MUSIC_PAUSE); startService(intent); } /** * 上一首 */private void pre() { Intent intent = new Intent(); intent.setAction("com.app.media.MUSIC_SERVICE"); intent.putExtra("state", TagUtil.MUSIC_PRE); startService(intent); }
但是,点击按钮的话,service里面怎样得到那个musicList 和当前position??
可以用广播和那个receiver吗?大概流程是怎样的?
每次都是获取不到,请问一下,这个问题该怎样解决??在线等,跪求啊!!!!!!!!!!androidservice音乐播放器receiver广播
正在做一个很小的音乐播放器,遇到了一个问题,首先,service中有这样一段代码:@Overridepublic void onStart(Intent intent, int startId) { super.onStart(intent, startId); Bundle data = intent.getExtras(); if(data.getSerializable("list")==null||data.getInt("current")<0){ Log.i("MusicService", "没有音乐"); return; } //取得数据 position = data.getInt("current"); musicList = (List<Music>)data.getSerializable("list"); music = musicList.get(position); try { player.reset(); Log.i("MusicService", "文件位置:"+music.getLocation()); player.setDataSource(music.getLocation()); } catch (Exception e) { e.printStackTrace(); } /** * 初始化数据 */int state = intent.getIntExtra("state", -1); if (state != -1) { switch (state) { case TagUtil.MUSIC_PLAY:// 播放 if (!player.isPlaying()) { play(); } break; case TagUtil.MUSIC_PAUSE:// 暂停 if (player.isPlaying()) { pause(); } break; case TagUtil.MUSIC_STOP:// 停止 stop(); break; // case TagUtil.PROGRESS_CHANGE:// 进度条改变 // currentTime = intent.getExtras().getInt("progress"); // player.seekTo(currentTime); // break; } } }这是控制播放之类的,还有在播放界面我打算这样实现的:/** * 播放按钮控制 */class Click implements OnClickListener { @Overridepublic void onClick(View v) { switch (v.getId()) { case R.id.play: //控制播放/赞停 Log.i("播放", R.drawable.play+""); if(!flag){//正在播放 flag=false; btn_play.setImageResource(R.drawable.player_btn_player_pause); play(); }else{//已经暂停 flag=true; btn_play.setImageResource(R.drawable.player_btn_player_play); pause(); } break; case R.id.pre: //控制上一首 pre(); break; case R.id.next: //控制下一首 next(); break; case R.id.stop: //控制停止 stop(); break; default: break; } } } /** * 播放 */public void play() { Intent intent = new Intent(); intent.setAction("com.app.media.MUSIC_SERVICE"); intent.putExtra("state", TagUtil.MUSIC_PLAY);// 向服务传递数据 startService(intent); } /** * 暂停 */public void pause() { Intent intent = new Intent(); intent.setAction("com.app.media.MUSIC_SERVICE"); intent.putExtra("state", TagUtil.MUSIC_PAUSE); startService(intent); } /** * 上一首 */private void pre() { Intent intent = new Intent(); intent.setAction("com.app.media.MUSIC_SERVICE"); intent.putExtra("state", TagUtil.MUSIC_PRE); startService(intent); }
但是,点击按钮的话,service里面怎样得到那个musicList 和当前position??
可以用广播和那个receiver吗?大概流程是怎样的?
每次都是获取不到,请问一下,这个问题该怎样解决??在线等,跪求啊!!!!!!!!!!androidservice音乐播放器receiver广播
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Bundle data = intent.getExtras();
if(data.getSerializable("list")==null||data.getInt("current")<0){
Log.i("MusicService", "没有音乐");
return;
}
//取得数据
position = data.getInt("current");
musicList = (List<Music>)data.getSerializable("list");
music = musicList.get(position);
try {
player.reset();
Log.i("MusicService", "文件位置:"+music.getLocation());
player.setDataSource(music.getLocation());
} catch (Exception e) {
e.printStackTrace();
}
/**
* 初始化数据
*/
int state = intent.getIntExtra("state", -1);
if (state != -1) {
switch (state) {
case TagUtil.MUSIC_PLAY:// 播放
if (!player.isPlaying()) {
play();
}
break;
case TagUtil.MUSIC_PAUSE:// 暂停
if (player.isPlaying()) {
pause();
}
break;
case TagUtil.MUSIC_STOP:// 停止
stop();
break;
// case TagUtil.PROGRESS_CHANGE:// 进度条改变
// currentTime = intent.getExtras().getInt("progress");
// player.seekTo(currentTime);
// break; }
}
}
/**
* 播放
*/
public void play() {
Intent intent = new Intent();
intent.setAction("com.app.media.MUSIC_SERVICE");
intent.putExtra("state", TagUtil.MUSIC_PLAY);// 向服务传递数据
startService(intent);
}
/**
* 暂停
*/
public void pause() {
Intent intent = new Intent();
intent.setAction("com.app.media.MUSIC_SERVICE");
intent.putExtra("state", TagUtil.MUSIC_PAUSE);
startService(intent);
}
/**
* 上一首
*/
private void pre() {
Intent intent = new Intent();
intent.setAction("com.app.media.MUSIC_SERVICE");
intent.putExtra("state", TagUtil.MUSIC_PRE);
startService(intent);
* 播放按钮控制
*/
class Click implements OnClickListener { @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.play:
//控制播放/赞停
Log.i("播放", R.drawable.play+"");
if(!flag){//正在播放
flag=false;
btn_play.setImageResource(R.drawable.player_btn_player_pause);
play();
}else{//已经暂停
flag=true;
btn_play.setImageResource(R.drawable.player_btn_player_play);
pause();
}
break;
case R.id.pre:
//控制上一首
pre();
break;
case R.id.next:
//控制下一首
next();
break;
case R.id.stop:
//控制停止
stop();
break;
default:
break;
}
}
}