Я пытаюсь сделать сервис, который воспроизводит одну песню в фоновом режиме. Пользователь вводит название песни, он ищет ее и воспроизводит ее без пользовательского интерфейса. У меня есть часть поиска, но я никогда не использовал медиа-плеер Android в службе и получаю несколько ошибок.Создание медиаплеера только в службе android
Вот пример кода я до сих пор для поиска:
ArrayList<String> matches = new ArrayList<String>();
AudioManager mgr =(AudioManager)getSystemService(Context.AUDIO_SERVICE);
Intent sending = new Intent("com.android.music.musicservicecommand");
String command = intent.getStringExtra("command");
Log.v("MusicService",command);
sending.putExtra("command", command);
MusicService.this.sendBroadcast(sending);
Cursor cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null,
MediaStore.Audio.Media.TITLE + " LIKE ?",
new String[]{"%"+command+"%"},
MediaStore.Audio.Media.TITLE + " ASC");
while (cursor.moveToNext()) {
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
matches.add(path);
Log.v("MusicService",path);
И вот мой код для запуска медиаплеера:
MediaPlayer mplayer = new MediaPlayer();
mplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
String filePath = matches.get(0);
File file = new File(filePath);
try {
FileInputStream inputStream = new FileInputStream(file);
mplayer.setDataSource(inputStream.getFD());
inputStream.close();
mplayer.prepare();
mplayer.start();
} catch(Exception e){
e.printStackTrace();
}
Ошибка настоящее время я получаю является обработчик ошибки мертвого потока, но я не уверен, как сохранить поток до тех пор, пока медиаплеер не будет завершен.
Вы должны добавить сообщение об исключении из своего сообщения. Кроме того, если у вас проблемы с потоками, вы должны сообщить нам, как вы управляете потоками (то есть: какой поток запускает какой код и когда). В противном случае мы не сможем. –
Я думаю, что я действительно понял это. Я не упоминал, что я использовал услугу intentservice вместо службы, поэтому поток умирал, как только он выполнил все свои задачи –