Je développe une application qui lit le flux audio http et je dois vérifier un flux audio si cela fonctionne correctement. Le problème est que j'ai trouvé le moyen de le faire mais cela prend trop de temps, j'ai essayé de diminuer le temps mais sans résultat. Je pense que mediaplayer réessaye de se connecter au flux "mort" pendant 10 fois avant qu'il ne s'arrête, donc le problème est de savoir comment puis-je arrêter manuellement cette reconnexion après le premier échec, car errorListener n'attrape pas cette erreur.mediaplayer onErrorListener n'attrape pas les erreurs
08-28 08:58:41.211 1335-12727/? E/NuCachedSource2: source returned error -1, 10 retries left
Voici mon code:
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);
}
}
Je ai seulement besoin de savoir si le flux fonctionne, il attrape les erreurs, mais comment attraper la source a renvoyé l'erreur - c'est la question. –
Je viens de répondre à cela. Pouvez-vous s'il vous plaît remplacer mediaPlayer.release() avec mediaPlayer.start() sur mediaPlayer.setOnPreparedListeners onPrepared? .Et vérifier si la même erreur se produit. –
la même erreur ... –