Şu anda bir Music Player'ı akıtan basit bir uygulama tasarlamaya çalışıyorum. Şarkının URL'si var ve aşağıdaki gibi MediaPlayer
'u ayarlıyorum. Her şey ilk şarkıdan de sorun yok, ama bir başka şarkı oynarken, program taklit çökmesini değil, ama hiçbir şey oynuyor ve aşağıdaki hatayı alıyorum duyuyorum:MediaPlayer hata kodu (-38,0) getDuration
E/MediaPlayer: Attempt to call getDuration without a valid mediaplayer
E/MediaPlayer: error (-38, 0)
E/MediaPlayer: Error (-38,0)
PlayerService.java
public class MusicPlayerService extends Service {
private SongItem mSong;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mSong = ListSong.getListSong().get(ListSong.getSelectedItem());
registerLocalFilter();
playMedia();
return START_STICKY;
}
private void playMedia() {
if (handler == null) {
thread = new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
handler = new Handler();
handler.post(playAudioFromURL);
Looper.loop();
}
});
thread.start();
} else {
handler.post(playAudioFromURL);
}
}
private Runnable playAudioFromURL = new Runnable() {
@Override
public void run() {
if (mediaPlayer != null) {
mediaPlayer.release();
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(mSong.getSongUrl());
mediaPlayer.setOnPreparedListener(onPreparedListener);
mediaPlayer.setOnCompletionListener(onCompletionListener);
mediaPlayer.setOnSeekCompleteListener(onSeekCompleteListener);
mediaPlayer.setOnErrorListener(onErrorListener);
mediaPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
Log.w(TAG, "playAudioFromURL: " + e.toString());
} catch (IllegalArgumentException ex) {
Log.w(TAG, "playAudioFromURL: " + ex.toString());
} catch (IllegalStateException ex) {
Log.w(TAG, "playAudioFromURL: " + ex.toString());
}
}
};
private MediaPlayer.OnPreparedListener onPreparedListener = new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
ListSong.setPlaying(true);
sendLoadComplete();
updateTimer();
mp.start();
}
};
}
ben onPrepared()
içinde yazma mp.start()
ve Media Player called in state 0, error (-38,0) de çözüm gibi mediaPlayer.prepareAsync();
kullanarak var ama işe yaramıyor.
Lütfen yardım edin!
** may **? o zaman yorumda olmalı dostum! – Gattsu