MediaPlayer.setDataSource() и prepare() не работает - андроид
У меня возникла проблема с использованием объекта MediaPlayer и не имела большого успеха. Если я добавлю звуковой актив в свою сырую папку и вызову его с использованием значения int внутри R, он отлично работает. Но я хочу, чтобы можно было отключить URL-адрес.
В соответствии со всей документацией, которую я прочитал, setDataSource() должен принять параметр строки с URL-адресом в файл.
Я продолжаю получать исключение IO в инструкции prepare(). Я даже попытался скопировать файл локально и до сих пор не купил.
У кого-нибудь есть идеи?
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource("http://www.urltofile.com/file.mp3");
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Ответы
Ответ 1
Попробуйте MediaPlayer.create(), вы также можете начать работу только после того, как игрок действительно готов, например:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MediaPlayer player = MediaPlayer.create(this, Uri.parse("http://www.urltofile.com/file.mp3"));
player.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
Ответ 2
Для потоков вы должны вызвать prepareAsync()
, который немедленно возвращается, а не блокируется, пока не будет буферизовано достаточное количество данных.