2014-02-26 17 views
1

我想在我的android应用程序中播放mp3文件(半秒)。我可以在模拟器上做到这一点,但在手机上它们都彼此重叠。 我已经使用OnCompletionListerner并停止了Mediaplayer。
以下是我为一个MP3文件代码:背部小型MP3文件Android中播放

mPlayer = MediaPlayer.create(MainActivity.this, R.raw.a10); 
mPlayer.start(); 
mPlayer.setOnCompletionListener(new OnCompletionListener() { 
@Override 
    public void onCompletion(MediaPlayer mPlayer) { 
     // TODO Auto-generated method stub 
     mPlayer.stop(); 
} 
}); 

任何人可以提出任何方法来阻止重叠?

回答

0

尝试下面的例子:

MediaPlayer mp1, mp2; 
Timer timer; 

// Create two different instances of mediaplayer 
mp1 = MediaPlayer.create(MainActivity.this, R.raw.a1);   
mp2 = MediaPlayer.create(MainActivity.this, R.raw.a2); 

// Create the timertask 
timer = new Timer("mytimer"); 
timer.schedule(timertask1, 1000); 

onCompletionListeners:

// Completion listener for Audio file 1. 
    mp1.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(final MediaPlayer cim) { 
      //On completion of first audio, release the resources of mediaplayer 
      mp1.release(); 
      mp1 = null;// free up memory 
      // Start the timertask of 2nd audio file 
      timer = new Timer("mytimer"); 
      timer.schedule(timertask2, 1000); 
     } 
    }); 

    mp2.setOnCompletionListener(new OnCompletionListener() { 
     @Override 
     public void onCompletion(final MediaPlayer cim) { 
      //On completion of 2nd audio, release the resources of mediaplayer 
      mp2.release(); 
      mp2 = null; 
      // Start the timertask of 1st audio file or nxt audio file if you want to    play file or simplly you can stop here. 
      timer = new Timer("mytimer"); 
      timer.schedule(timertask1, 1000); 
     } 
    }); 

定时器任务:

private TimerTask timertask1 = new TimerTask() { 
    @Override 
    public void run() { 
      mp1.start(); 
    } 
    }; 

    private TimerTask timertask2 = new TimerTask() { 
    @Override 
    public void run() { 
      mp2.start(); 
    } 
    }; 

注:
示例仅考虑两个音频文件,因此有两个特定的onCompletionlisteners和timertasks。不过,我建议你使用通用代码来创建mediaplayer实例,onCompletionlistener和timertask。