0
我正在開發一個播放http音頻流的應用程序,我必須檢查音頻流是否正常工作。問題是我已經找到了如何做到這一點的方法,但這需要太多時間,我試圖減少時間,但沒有結果。我認爲媒體播放器在停止前重新連接到「死」流10次,所以問題是如何在第一次失敗後手動停止此重新連接,導致errorListener不捕獲此錯誤。mediaplayer onErrorListener不會捕獲錯誤
08-28 08:58:41.211 1335-12727/? E/NuCachedSource2: source returned error -1, 10 retries left
這裏是我的代碼:
class CheckTask extends AsyncTask<RadioStation, Void, Boolean> {
@Override
protected Boolean doInBackground(final RadioStation... radioStation){
final MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(radioStation[0].mUrl);
mediaPlayer.prepareAsync();
System.out.println(radioStation[0].mName + "prepare Async");
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
System.out.println(radioStation[0].mName + " OK");
mediaPlayer.release();
}
});
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
System.out.println(radioStation[0].mName + " Error");
return true;
}
});
} catch (Exception e) {
e.printStackTrace();
System.out.println("Exception radio check " + e);
mediaPlayer.reset();
mediaPlayer.release();
}
return true;
}
@Override
protected void onPostExecute(Boolean aBoolean){
super.onPostExecute(aBoolean);
}
}
我只需要知道流是否有效,它會捕獲錯誤,但是如何捕獲源返回的錯誤 - 多數民衆贊成在問題。 –
我只是回答了。你可以用mediaPlayer.setOnPreparedListeners onPrepared?替換mediaPlayer.release()和mediaPlayer.start(),並檢查是否發生相同的錯誤。 –
同樣的錯誤... –