2013-08-11 4 views
2

Я пытаюсь создать приложение для Android, которое использует широковещательный приемник для обнаружения начала воспроизведения музыки, а затем предлагает управление жестов, чтобы вызвать отправку пропущенного трека.Цель Android для воспроизведения аудио?

Для начала просто хочу, чтобы ресивер активировал уведомление при начале воспроизведения звука, чтобы я мог проверить, что эта концепция будет работать. Я объявил службу и получатель в моем файле манифеста, и я создал класс службы, который (надеюсь) создает уведомление через onCreate().

Я прополз тонну документации, хотя и, похоже, не могу найти правильное намерение слушать с моим приемником. Наверняка что-то существует для этого?

С уважением.

ответ

2

Оказалось, что в Android 3.1 и выше появилась новая функция безопасности, где широковещательные приемники не регистрируются до тех пор, пока пользователь не откроет приложение вручную хотя бы один раз. Поскольку я пытался создать сервис-единственное приложение, у которого не было открытого интерфейса, это мешало попыткам всех моих попыток прослушивателя работать.

Я изменил свою деятельность, и теперь все работает так, как я надеялся. Теперь я работаю над составлением списка специфических для игрока намерений для работы, но для тех, кто пытается создать что-то подобное, com.android.music.playstatechanged, кажется, лучший старт. Эта функция запускается проигрывателем по умолчанию (Google Play Музыка), когда музыка запускается, приостанавливается или возобновляется и объединяется с дополнительными данными, включая логическое свойство «воспроизведения», чтобы различать состояния воспроизведения и паузы.

По существу, это основной приемник, который я сейчас использую. Повеселись!

public class MainReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     // Start the service when music plays, stop the service when music ends. 
     if(intent.hasExtra("playing")) { 
      if(intent.getBooleanExtra("playing", false)) { 
       Intent service = new Intent(context, MainService.class); 
       context.startService(service); 
      } else { 
       Intent service = new Intent(context, MainService.class); 
       context.stopService(service); 
      } 
     } 
    } 
} 
+0

Ric, не могли бы вы упомянуть, что написать в файле манифеста, чтобы получить трансляцию, на которой воспроизводится носитель? Благодарю. –

+0

Здесь вы, Rat-a-tat-a-tat Ratatouille. Это должно получить намерения из приложения Play Play по умолчанию и из официального приложения Last.fm: http://pastebin.com/ycjDbq3H – Ric

+0

поблагодарить u за ссылку :) .. –

-1

Наверняка что-то существует для этого?

Количество музыкальных проигрывателей - тысячи. Никто не обязан транслировать что-либо, а тем более информацию о треках. И никто из вас не обязан позволять вам «пропускать дорожку» любыми способами.

Добро пожаловать на поиск определенных музыкальных проигрывателей, предлагающих документально подтвержденный API для такого рода вещей.

+0

Привет CommonsWare, я должен был быть более конкретным - Большинство медиа-плееров (Grooveshark, Last.fm и т.д.), кажется, чтобы вызвать тот же блокировки экрана медиа виджет - то есть один с пред/следующий/play/pause в Android 4, поэтому я предполагаю, что эти игроки используют систему MediaPlayer, и именно эти типы приложений я хочу поддерживать. – Ric

+0

О, и я надеюсь использовать com.android.music.musicservicecommand.next для пропущенного пути. Насколько я могу судить, это то, что посылает виджет блокировки экрана, так что пальцы скрещены. Я также смогу отправить его :-) – Ric

+0

@ Ric: AFAIK, это не трансляции, или если они есть, они «не задокументировано. Такие медиаплееры регистрируют «RemoteControlClient» с помощью «AudioManager». «О, и я надеюсь использовать com.android.music.musicservicecommand.next для пропущенного пути» - это недокументированное, неподдерживаемое и не должно быть реализовано кем-либо. Вы можете сослаться на некоторые из новых [средств массовой информации маршрутизации] (https://developer.android.com/reference/android/support/v7/media/MediaRouter.html), хотя я не знаю, какие версии от Android, который он поддерживает. – CommonsWare

Смежные вопросы