Что не так с этим кодом воспроизведения аудиопотока для Android?

#android #streaming #media-player

#Android #потоковая передача #Медиаплеер

Вопрос:

У меня проблема с этим кодом для прямой трансляции:

 package cm.ex.wwd;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;

public class AudioStream extends Activity {

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  String url = "http://www.songblasts.com/songs/hindi/t/three-idiots/01-Aal_Izz_Well-(SongsBlasts.Com).mp3";
  MediaPlayer mp = new MediaPlayer();
  try {
   mp.setDataSource(url);
   mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
   mp.prepare();
   mp.start();
  } catch (Exception e) {
   Log.i("Exception", "Exception in streaming mediaplayer e = "   e);
  }
 }
}
  

Комментарии:

1. Hay проверьте эту ссылку, это решит проблему blog.pocketjourney.com/2008/04/04 /…

2. эй, пожалуйста, сначала проверьте свой URL, он не работает..

Ответ №1:

url, который вы указываете, недопустим one.it отображается 404 НЕ FOUND.so это создает проблему для вас. укажите действительный

Ответ №2:

Не зная точной проблемы, трудно ответить. Если вы сделаете это в потоке пользовательского интерфейса, вы также можете столкнуться с аварийным завершением работы приложения, поскольку вызов prepare() может занять слишком много времени. Лучше используйте prepareAsync() и связанные с ним прослушиватели при использовании потоковой передачи.

Как упоминалось ранее, также URL выдает 404.

Ответ №3:

я внес небольшие изменения в приведенный выше код. посмотрите на это.

 player = new MediaPlayer();
    player.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try {
        player.setDataSource("http://www.hubharp.com/web_sound/BachGavotte.mp3");
        player.setOnErrorListener(this);
        player.setOnPreparedListener(this);
        player.prepareAsync();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }       
}
@Override
public void onDestroy() {
    super.onDestroy();
    player.release();
    player = null;
}
@Override
public void onPrepared(MediaPlayer play) {
    play.start();
}
@Override
public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
    return false;
}