私は奇妙な問題があります。私はMediaPlayer
でprepareAsyncメソッドを使用しますが、宣言したリスナーは決して解雇されません。私はインターネット(ラジオ局)からライブ.mp3
フィードをストリーミングしようとします。私はリスナーのためにインラインメソッドを使用しますが、私はまた、成功なしでインターフェイスを実装しようとしました。ここに私のコードの一部です:AndroId MediaPlayer prepareAsyncメソッド
:活動onCreate()
で
String url = "http://<my_url>.mp3";
MediaPlayer mediaPlayer = new MediaPlayer();
:
ToggleButton playButton = (ToggleButton) findViewById(R.id.playToggleButton);
playButton.setOnClickListener(this);
playButton.clearFocus();
playButton.setClickable(false);
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
ToggleButton playButton = (ToggleButton) findViewById(R.id.playToggleButton);
playButton.setClickable(true);
mp.start();
}
});
preparePlayer();
次に、ここでpreparePlayer()
方法があります:
private void preparePlayer() {
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
}
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
Toast.makeText(
MyStreamActivity.this,
getResources().getString(R.string.erreurIllegalArgument),
Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (IllegalStateException e) {
Toast.makeText(
MyStreamActivity.this,
getResources().getString(R.string.erreurIllegalState),
Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (IOException e) {
Toast.makeText(
MyStreamActivity.this,
getResources().getString(R.string.erreurIO),
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
と(ちょうどレコードの)、私は掃除を行うonDetroy()
:あなたのActivity
年代にOnPreparedListener
を設定している
private void releaseMediaPlayer() {
if (mediaPlayer != null) {
if(mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
mediaPlayer = null;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
}
ログには何が起こったのか何かエラーがありますか?あなたはインターネットへのアクセス許可を持っていますか? – zapl