Я работаю над приложением потокового аудио, но приложение закрывается через 30 секунд на нескольких устройствах. Пользователи могут передавать аудио в фоновом режиме, но иногда оно просто останавливается и приложение закрывается.
Это очень раздражает, и его трудно отследить, поскольку оно влияет только на несколько устройств, а не на все время. Вот что показывает журнал:
V/MediaPlayer-JNI: release
V/MediaPlayer-JNI: setListener
disconnected
V/MediaPlayer-JNI: destructor
disconnected
W/MediaPlayer: mediaplayer went away with unhandled events
D/ContentValues: onDestroy
Application terminated.
Похоже, приложение просто убито ОС.
«Медиаплеер ушел с необработанными событиями» - распространенная проблема, когда аудиофайл не был запущен должным образом, но в этом случае ошибка возникает при потоковой передаче через 30 секунд.
Это код, который я использую:
public class SoundService extends Service implements MediaPlayer.OnPreparedListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnErrorListener {
public void onCreate() {
Log.i("Script", "onCreate");
if(player == null){
try {
Log.i("Script", "onCreate: Try");
player = new MediaPlayer();
player.setDataSource("enter url");
player.prepareAsync();
player.setOnBufferingUpdateListener(this);
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
player.setOnPreparedListener(this);
player.setOnSeekCompleteListener(this);
}
catch (IllegalArgumentException e) { e.printStackTrace(); }
catch (SecurityException e) { e.printStackTrace(); }
catch (IllegalStateException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
}
else{
Log.i("Script", "onCreate: start");
player.start();
}
}
Вот слушатели:
@Override
public void onPrepared(MediaPlayer mp) {
Log.i("Script", "onPrepared()");
player.start();
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("Script", "onStartCommand");
return Service.START_NOT_STICKY;
}
Есть идеи? Спасибо!