스트림을 시작할 때마다 두 개의 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
디버그 태그 "play"에서 재생 버튼을 클릭했습니다. "setAudioStreamTpe", "setDataSource", "prepareAsync"및 onPrepared (myMediaPlayer)를 실행하는 MediaPlayer 서비스의 "onCreate"가 호출됩니다. OnPrepared는 mp.start() 만 실행합니다. 그 후에 "onPrepared"가 기록됩니다. 그런 다음 내 서비스의 "onCreate"끝에 "onCreate Service"가 기록됩니다.
왜 2 가지가 준비되어 있습니까?! mp.prepare()를 사용하면 오류가 없습니다.
강령 다음 MediaPlayer를가 준비되면
@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");
}
코드 자체를주십시오 갈 수있을 것입니다. – MByD
코드가 추가되었습니다. 희망이 도움이됩니다! – Leandros