#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;
}