我有一项活动是使用媒体播放器播放音频的服务。这是服务
class MusicService extends Service implements OnCompletionListener {
MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
mediaPlayer = MediaPlayer.create(this, R.raw.s);// raw/s.mp3
mediaPlayer.setOnCompletionListener(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
return START_STICKY;
}
public void onDestroy() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
}
public void onCompletion(MediaPlayer _mediaPlayer) {
stopSelf();
}
}
我希望它从一个来自SD卡的String路径播放,而不是从原始文件中播放。路径保存在调用服务的类中,如何将该字符串传递给服务类并将其放入mediaplayer create方法中。这是我称之为服务的地方
private void playAudio(String url) throws Exception{
Intent music = new Intent(this,MusicService.class);
startService(music);
}
答案 0 :(得分:1)
使用起始Intent的putExtra命令:
music.putExtra(key, value);
然后在您的媒体播放器服务的onStartCommand中获取该信息:
intent.getExtras().getString(key);
请注意,在系统重新启动服务的情况下,此意图可以为null。