Android Mediaplayer не загружается - PullRequest
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();
 }

}

Я не хочу, чтобы он загружал необработанный файл, я хочу, чтобы он загружал путь, который является строкой в ​​классекоторый вызывает эту услугу.

 String path = "path is here"

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

Как бы я поступил так ...

Музыкальный файл приходит с SD-карты

Ответы [ 2 ]

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

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

    MediaPlayer mediaPlayer; 
     String musicFile;

    @Override        
    public void onCreate() {        
       mediaPlayer = new MediaPlayer();
       mediaPlayer.setOnCompletionListener(this);        
     }   
    @Override   
    onStartCommand(Intent intent, int flags, int startId)        {          
      musicFile=intent.getExtra("paths"); 
    try {

            mediaPlayer.reset();
            mediaPlayer.setDataSource(musicFile);
            mediaPlayer.prepare();

        } catch (IllegalArgumentException e) {
         // TODO Auto-generated catch block
          e.printStackTrace();
       }
     if (!mediaPlayer.isPlaying()) 
       {             
        mediaPlayer.start();             
        } 
      return START_STICKY;     
     } 
1 голос
/ 26 ноября 2011

Просто используйте это ---------

MediaPlayer md=new MediaPlayer();
        md.prepare();
        md.setDataSource(path);
...