ストリームを開始するたびに、2つのMediaPlayerエラーが発生します。メディアプレイヤーエラー:状態4で開始されました
01-03 12:04:35.738: D/PlayerActivity(10164): play
01-03 12:04:35.742: D/PlayerService(10164): setAudiotStreamType
01-03 12:04:35.742: D/PlayerService(10164): setDataSource
01-03 12:04:35.742: D/PlayerService(10164): prepareAsync
01-03 12:04:35.742: E/MediaPlayer(10164): start called in state 4
01-03 12:04:35.742: E/MediaPlayer(10164): error (-38, 0)
01-03 12:04:35.742: D/PlayerService(10164): onPrepared
01-03 12:04:35.742: D/PlayerService(10164): onCreate Service
01-03 12:04:35.750: E/MediaPlayer(10164): Error (-38,0)
01-03 12:04:38.261: D/PlayerService(10164): onPrepared
「再生」タグでは、再生ボタンをクリックしました。 "setAudioStreamTpe"、 "setDataSource"、 "prepareAsync"、そしてonPrepared(myMediaPlayer)を実行するMediaPlayerサービスの "onCreate"よりも呼び出されます。 OnPreparedはmp.start()のみを実行します。その後、 "onPrepared"が記録されます。そして、私のサービスの "onCreate"の最後に、 "onCreate Service"が記録されます。
なぜ2つのonPreparedがありますか? mp.prepare()でエラーは発生しませんでした。
コード:
@Override
public void onCreate() {
mp = new MediaPlayer();
mp.setOnPreparedListener(this);
prepareMediaPlayer();
onPrepared(mp);
Log.d(TAG, "onCreate Service");
}
public void prepareMediaPlayer()
{
try {
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
Log.d(TAG, "setAudiotStreamType");
mp.setDataSource(PlayerActivity.soundUrl);
Log.d(TAG, "setDataSource");
mp.prepareAsync();
Log.d(TAG, "prepareAsync");
}
catch (IOException e) {}
catch (IllegalArgumentException e) {}
catch (IllegalStateException e) {}
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
if (PlayerService.mp.isPlaying() == true){
notification();
PlayerActivity.mpState = PlayerActivity.PLAYING;
}
Log.d(TAG, "onPrepared");
}
を行ってもいいだろうonPrepares呼び出します。 – MByD
コードが追加されました。それが役に立てば幸い! – Leandros