Я делаю музыкальный проигрыватель с сервисом, но когда я щелкаю песню в списке музыки, музыка запускается без ошибок, но если я вернусь к списку и щелкну другую, я получаю Attempt to call getDuration without a valid mediaplayer error (-38, 0)
Мой метод onStart в сервисе:
@Override
public void onStart(final Intent i, int startid) {
Log.d(TAG, "Start music");
re = 0;
songUrl = i.getData().toString();
streamMusic = new Thread() {
public void run() {
Looper.prepare();
try {
re = 1;
music.reset();
music.setDataSource(songUrl);
music.prepare();
this.interrupt();
} catch (Exception e) {
e.printStackTrace();
}
}
};
streamMusic.start();
}
Я запускаю службу с startService(i);
и устанавливаю music.setOnPreparedListener
, поэтому ничего не запускается слишком рано.
Как заставить его работать?
1 ответ
Попробуйте вызвать метод reset() перед повторным вызовом prepare. Кроме того, если вы вызываете prepare(), а не prepareAsync(), я не понимаю, почему вам нужно использовать подготовленный слушатель.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.