Медиа Сервис - PullRequest
       28

Медиа Сервис

1 голос
/ 26 ноября 2011

У меня есть действие, которое представляет собой службу, которая воспроизводит аудио с помощью медиаплеера.Это сервис

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-карты.путь хранится в классе, который вызывает службу. Как передать эту строку в класс службы и поместить ее в метод создания медиаплеера.вот где я звоню в службу

   private void playAudio(String url) throws Exception{
Intent music = new Intent(this,MusicService.class);
startService(music);

}

1 Ответ

1 голос
/ 09 декабря 2011

Используйте команды putExtra начального намерения:

music.putExtra(key, value);

Затем получите эту переданную информацию в onStartCommand службы медиаплеера:

intent.getExtras().getString(key);

Помните, что это намерение может быть нулевым в случаях, когда служба перезапускается системой.

...