1

onCreate()サウンドmp3ファイルをメソッドで無限にループさせたい。

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();

しかし、このコードは私のオーディオファイルを一度だけ再生します。助けてください !!

前もって感謝します。

4

1 に答える 1

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);        
        }

このメソッドを呼び出す

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");
         }
}
于 2013-03-14T09:54:53.607 に答える