2013-05-04 80 views
1

我正在开发一个小quizz应用程序,我想播放声音取决于用户是否正确回答问题。只玩一个声音android

我在“assets /”中有很多声音文件。

我想要做的就是只播放其中一种声音。 我已经能够播放声音,但不仅仅是一个,声音(正确和不正确)都会一个接一个播放。

我怎么玩只有一个? 这里是我的源:

public void audioPlayer(){ 
    //set up MediaPlayer  
    mp = new MediaPlayer(); 

    try { 
     String mp3File = "correct.mp3"; 
     AssetManager assetMan = getAssets(); 
     FileInputStream mp3Stream = assetMan.openFd(mp3File).createInputStream(); 

     mp.setDataSource(mp3Stream.getFD()); 
     mp.prepare(); 
     mp.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

回答

1

把你的声音文件即失效和掌声原始文件夹,并使用下面的代码:

private AssetFileDescriptor sPlaySoundDescriptor = null; 
private AssetFileDescriptor sFailSoundDescriptor = null; 
private MediaPlayer mp = null; 
public static final int FAIL_SOUND = 1; 
public static final int APPLAUSE_SOUND = 2; 

public void audioPlayer(int soundType){ 
    //set up MediaPlayer  
    mp = new MediaPlayer(); 
    AssetFileDescriptor soundFileDescriptor = null; 
    try { 
     if (sFailSoundDescriptor == null) { 
      sFailSoundDescriptor = context.getResources(). 
        openRawResourceFd(R.raw.fail); 
     } 
     if (sApplauseSoundDescriptor == null) { 
      sApplauseSoundDescriptor = context.getResources(). 
        openRawResourceFd(R.raw.applause); 
     } 
     switch (soundType) { 
      case FAIL_SOUND: 
       soundFileDescriptor = sFailSoundDescriptor; 
       break; 
      case APPLAUSE_SOUND: 
       soundFileDescriptor = sApplauseSoundDescriptor; 
       break; 
     } 
     mp.reset(); 
     mp.setDataSource(soundFileDescriptor.getFileDescriptor(), 
         soundFileDescriptor.getStartOffset(), 
         soundFileDescriptor.getDeclaredLength()); 
     mp.prepare(); 
     mp.setOnPreparedListener(new OnPreparedListener() { 

      @Override 
      public void onPrepared(MediaPlayer player) { 
       player.seekTo(0); 
       player.start(); 
      } 
     }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

THX您的回复......它非常精致! :d – wrrzag 2013-05-14 15:49:58