2013-03-14 9 views
1

Я хочу закоптать свой звуковой mp3-файл в формате onCreate() бесконечно.Android: Звуковой файл Loop в oncreate

Мой код в методе OnCreate выглядит следующим образом:

mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.sound_7); 
    mMediaPlayer.setVolume(0.2f, 0.2f); 
    Log.e("beep","started1"); 
    mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
     public void onCompletion(MediaPlayer arg0) { 
      mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.sound_7); 
      mMediaPlayer.start(); 
     } 
    }); 
    mMediaPlayer.setLooping(true); 
    Log.d("beep","started0"); 
    mMediaPlayer.start(); 

Но этот код играет мой звуковой файл только один раз. Пожалуйста помоги !!

Заранее спасибо.

+0

Пожалуйста, не делайте этого в OnCreate, но в onResume. Остановите звук в onPause! – RvdK

+0

@ RvdK - Спасибо! Я сделал это в onResume, но как запомнить настройку звука (вкл./выкл.), когда я перехожу к следующему экрану и обратно к тому же экрану? Он всегда играет бесконечно, даже если я остановил его, прежде чем покинуть экран. –

ответ

0

Попробуйте

void playMp3() 
{ 

    mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.sound_7); 
    mMediaPlayer.setVolume(0.2f, 0.2f); 
      Log.e("beep","started1"); 
    mMediaPlayer.setOnCompletionListener(new OnCompletionListener() { 
       public void onCompletion(MediaPlayer arg0) { 
        playMp3(); 
       } 
     }); 
    Log.d("beep","started0"); 
    mMediaPlayer.start(); 
} 

И если ваш звуковой файл маленький, то SoundPool вместо MediaPlayer

private void initializeSoundPool(){ 
     mSoundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0); 
     mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
       public void onLoadComplete(SoundPool soundPool, int sampleId, 
         int status) { 
        loaded = true; 
        playFile(); 
        initializeSoundPool(); 
       } 
      }); 
      soundID = mSoundPool.load(this, R.raw.glassbreak, 1);   
     } 

называют это Methode

private void playFile(){ 
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     float actualVolume = (float) audioManager 
       .getStreamVolume(AudioManager.STREAM_MUSIC); 
     float maxVolume = (float) audioManager 
       .getStreamMaxVolume(AudioManager.STREAM_MUSIC); 
     float volume = actualVolume/maxVolume; 
     if (loaded) { 
      mSoundPool.play(soundID, volume, volume, 1, 0, 1f); 
      Log.e("Test", "Played sound"); 
     } 
} 
+0

В чем разница между методом initializeSoundPool() и playFile(). Что лучше подходит для небольшого файла. – rup35h

+0

какой звукID здесь? – rup35h

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