2011-11-26 36 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