そのため、オンラインのリンクから mp3 ファイルをロード/ストリーミングしようとしています。実装で私が抱えている問題は、同じオーディオ ファイルが 2 回再生されることです。
コードは次のとおりです。
最初の宣言:
MediaPlayer mediaPlayer;
(フラグメント) OnCreateView:
mediaPlayer = new MediaPlayer();
playPodCast(getPosition);
PlayPodcast メソッド:
public void playPodCast(int index) {
try {
String url = toGet.get(index).get("URL").toString();
mediaPlayer.reset();
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(this);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onPrepared(MediaPlayer arg0) {
// TODO Auto-generated method stub
mediaPlayer.start();
}
また、再生/一時停止ボタンを実装しました:
btnPlay.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if (mediaPlayer.isPlaying()) {
if (mediaPlayer != null) {
mediaPlayer.pause();
// Changing button image to play button
btnPlay.setImageResource(R.drawable.play);
}
} else {
// Resume song
if (mediaPlayer != null) {
mediaPlayer.start();
// Changing button image to pause button
btnPlay.setImageResource(R.drawable.pause);
}
}
}
});
実装に関する奇妙な点は、オーディオ ファイルのデュアル再生モードでは、この再生/一時停止の実装を通じてアクセスできるのはそのうちの 1 つだけです。
たとえば、最初にオーディオ ファイル A(1 番目) が再生されると、数秒後にファイル A(2 番目) が再び再生されます。これら 2 つのうち、A(1st) は、再生/一時停止の実装を通じて制御可能です。
ヘルプ。