2013-11-27 3 views
0

У меня есть несколько звуков я хотел бы загруженымножественного медиаплеер звука аварии андроид

final MediaPlayer mp = MediaPlayer.create(this, R.raw.testsnd); 
final MediaPlayer mp = MediaPlayer.create(this, R.raw.testsnd2); 
final MediaPlayer mp = MediaPlayer.create(this, R.raw.testsnd3); 

ЭСТА.

У меня звук начинается в течение clicklisteners

button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
mp.start(); 

}}; 

Это должно быть окончательным, как mp.start(); не будет рассматриваться в рамках слушателей Есть ли способ, чтобы переключаться между различными звуками, как медиаплеер будет врезаться приложение , если я использую это больше, чем когда-то

Можно установить тег/получить тег можно использовать, если это возможно, чтобы сделать переключатель ?

Пожалуйста, помогите!

ответ

0

Я не могу понять, почему вы так поступаете, можете ли вы разместить больше своего кода? Но если вам нужно, чтобы играть три звука от экземпляра MediaPlayer вы можете попробовать это:

private final MediaPlayer mpSound1; 
private final MediaPlayer mpSound2; 
private final MediaPlayer mpSound3; 

private void playSound1(){ 
    try{ 
    if(mpSound1==null) 
     mpSound1 = MediaPlayer.create(this, R.raw.testsnd); 
    mpSound1.start(); 
    }catch(Exception ex){ 
    mpSound1 = null; 
    } 
} 

private void playSound2(){ 
    try{ 
    if(mpSound2==null) 
     mpSound2 = MediaPlayer.create(this, R.raw.testsnd2); 
    mpSound2.start(); 
    }catch(Exception ex){ 
    mpSound2 = null; 
    } 
} 

private void playSound3(){ 
    try{ 
    if(mpSound3==null) 
     mpSound3 = MediaPlayer.create(this, R.raw.testsnd3); 
    mpSound3.start(); 
    }catch(Exception ex){ 
    mpSound3 = null; 
    } 
} 
1

MediaPlayer имеет государственную машину, я полагаю, вы не обращая внимания. Статические методы создания - это ярлык для одноразовых сделок. Если вы хотите MediaPlayer, чтобы использовать более чем один раз, сделать что-то вроде этого:

final MediaPlayer mp1 = new MediaPlayer(); 

button1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick() { 
     try { 
      mp1.reset(); 
      mp1.setDataSource(YourClass.this, 
       Uri.parse("android.resource://com.your.package/" + R.raw.testsnd); 
      mp1.prepare(); 
      mp1.start(); 
     } 
     catch (Exception ex) { 
      // handle error 
     } 
    } 
} 

Это должно быть тривиальным заменить имена пакетов и классов, а также экстраполировать идею для нескольких медиаплеер. Скорее всего, вам нужен только один в любой момент времени, если звуки могут воспроизводиться одновременно. Кроме того, не забудьте вызвать release(), когда вы закончите.

Если звуки короткие, вы можете также изучить использование SoundPool.

Смежные вопросы