私は現在、オーディオを再生する必要があるアプリに取り組んでいます。一連の.mp3を順番に再生するメソッドがあります。方法は次のとおりです。
/**
* Plays a series of sounds in order without delay.
*
* @param audioResourceIds
* An in-order array of the audio asset resources to play.
* */
public void playQueuedPlaylist(int[] audioResourceIds)
{
float lastPlayedSoundDuration;
for(int i = 0; i<audioResourceIds.length; i++)
{
lastPlayedSoundDuration = playMedia(audioResourceIds[i], null);
try
{
Thread.sleep((long)lastPlayedSoundDuration);
}
catch(Exception eh)
{
Log.v("BulacsAlmighty","Exception caught at playQueuedPlaylist()");
}
}
}
/**
* Used to play voice overs
*
* @param index
* id of the sound
* @param listener
* on completion listener
*/
public int playMedia(int index, OnCompletionListener listener)
{
MediaPlayer mp = MediaPlayer.create(context, index);
mp.setVolume(streamVolume, streamVolume);
stopMedia(index); // Stops the sound if it still is playing.
mp.start();
return mp.getDuration();
}
問題は、音が鳴らないことがあるということです。そして、それらが再生されるとき、タイミングは正しく、順序は正しいですが、最後に再生されたオーディオリソースは、それ以前に再生された他のサウンドよりも大幅に低い音量で再生されます。
教えてください、どこが間違っていたのですか!?