2011-11-26 32 views
1

我有把這個服務類播放的媒體播放器Android的媒體播放器將不會加載

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卡

+0

你的音樂文件存儲在哪裏? –

+0

它來自SD卡 –

+0

那麼,你的問題是什麼,音樂沒有播放或得到任何異常? –

回答

1

只需使用這個---------

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

是的,除非他們退出該屏幕時選擇一首新歌曲,現在它再次加載屏幕兩個音樂播放器正在玩對方 –

+0

我給你投了嘗試謝謝 –

+0

它解決了你的問題。使用md.stop()後, – Sameer

1

我不知道你在做什麼活動,但是,如果你只是通過服務的音樂文件路徑,然後想要啓動媒體播放器服務,那麼我認爲你必須嘗試這樣的事情,

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;  
    } 
+0

生病請嘗試tom並給你投票 –

+0

setDatacource之後你必須準備好方法。當你要玩時,請檢查玩家是否已經設置了路徑設置和播放。 –

+0

@sony - 謝謝你,我編輯它。謝謝.. – user370305