2013-09-24 41 views
0

我使用加入多發音頻文件的Android

try { 
     MediaPlayer mp = MediaPlayer.create(context, R.raw.play); 
     audioArr[0] = mp; 
     mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 

       mp.start(); 

      } 
     }); 

     mp.prepare(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

添加多個音頻文件,並在功能釋放媒體

for (MediaPlayer media : audioList) { 
     if (media != null) { 
      if(media.isPlaying()) 
      media.stop(); 
      media.release(); 
      media = null; 
     } 
    } 

還是老樣子我不能夠播放多種音頻文件我的應用程序,第一次與音頻播放,非常和善引導

+0

你想隊列中的聲音文件,播放列表或同時播放所有...?如果首先添加下一個文件在onComplete回調中播放。如果第二種情況需要使用SoundPool而不是MediaPlayer –

+0

thanx,我想在某些事件完成後播放,如某些動畫等.pl給我舉一些例子,我第一次使用它 – user2609847

回答

0

試試這個:

void addSongs() 
{ 
    File songs = new File(sdPath); //sdPath is the path of your audio files 

    if(songs.listFiles(new SongFilter()).length > 0) 
    { 
     for(File file : songs.listFiles(new SongFilter())) 

     { 
      vector.add(file.getName()); 
     } 

     arrayAdapter.setNotifyOnChange(true); //arrayAdapter Array Adapter 
     songList.setAdapter(arrayAdapter); //songList is a ListView 
    } 
} 

SongFilter類是這樣的:

class SongFilter implements FilenameFilter 
{ 
    public boolean accept(File dir, String filename) 
    { 
     return (filename.endsWith(".mp3")); 
    }  
} 
0
buttonSound.setOnCompletionListener(new OnCompletionListener() { 
@Override 
public void onCompletion(MediaPlayer mp) { 
// play another sound here.do your stuff whatever you want to do 
mp.stop(); 
} 
}); 
0
public class AudioActivity extends Activity implements MediaPlayer.OnCompletionListener { 
     int [] songs; 
     MediaPlayer mediaPlayer; 
     int current_index = 0; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) {##} 
     private void start(){ 
      songs= new int[] {R.raw.s1,R.raw.s2,R.raw.s3,R.raw.s4}; 
      mediaPlayer = MediaPlayer.create(this, songs[0]); 
      mediaPlayer.setOnCompletionListener(this); 
      mediaPlayer.start(); 
     } 

     @Override 
     public void onCompletion(MediaPlayer mp) { 
**// This is the completion listener registered with mediaplayer instance.**    
playNextSong(); 
     } 
     private void playNextSong() 
      { 
       current_index = (current_index +1)% songs.length; 
       AssetFileDescriptor afd = this.getResources().openRawResourceFd(songs[current_index]); 
       if(current_index!=0){ 
       try 
       { 
        mediaPlayer.reset(); 
        mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength()); 
        mediaPlayer.prepare(); 
        mediaPlayer.start(); 
        afd.close(); 
       } 
       catch (IllegalArgumentException e){} 
       catch (IllegalStateException e){} 
       catch (IOException e){} 
      }else{ 
       mediaPlayer.stop(); 
      } 
      } 


    }