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(),并检查是否发生相同的错误。 –
同样的错误... –