Android|MediaPlayerでのエラー
ストリーミング再生を作っているのですが、下記のエラーが発生し、
うまくいきません。
発生している問題
下記の流れで音声ファイルを再生・停止させたいのですが、
4, 5番の処理がうまくいきません。
- 再生ボタンをタップ
- 音声ファイルを再生
- 音声ファイルを停止
-----(ここまではできています)
- 再度、再生ボタンをタップ
- アプリが強制停止
つまり、音声を再生してから停止後、
再度ファイルを再生させるとアプリが強制的に落ちてしまいます。
下記、エラーメッセージになります。
MediaPlayer finalized without being released
//xmlのIDからImageViewを取得
final ImageView iv = (ImageView) convertView.findViewById(R.id.sampleItem);
//ImageViewにクリックリスナーをセット
iv.setOnClickListener(new View.OnClickListener() {
//クリックした時
@Override
public void onClick(View view) {
//ストリーミング音声再生タイプとURLをセット
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
String audioUrl = "ここにストリーミング用のURLを入れています";
//if文で再生と停止を分岐処理
if (mediaPlayer == null || !mediaPlayer.isPlaying()) {
//メソッドの呼び出し
stopBGM();
try {//音声再生処理
//再生中の場合は、停止ボタンをセット
iv.setImageResource(R.drawable.stop_btn);
mediaPlayer.setDataSource(audioUrl);
//音声再生の準備
mediaPlayer.prepare();
//音声再生のスタート
mediaPlayer.start(); // 再生
} catch (Exception e) {
}
} else {//音声停止処理
//音声停止中は、再生ボタンをセット
iv.setImageResource(R.drawable.play_btn);
//メソッドの呼び出し
stopBGM();
}
}
});
//音声停止メソッドを定義
private void stopBGM() {
if (mediaPlayer == null) return;
try {
//停止処理
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
} catch (Exception e) {
}
}