2016-09-17 4 views
0

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

Когда будильник погаснет, радиоприемник должен начать воспроизведение. В идеале он должен заранее играть на станции, выбранной пользователем, но я соглашусь на сохранение последней используемой станции и ее воспроизведение.

Я просмотрел common intents, доступный на Android, но, похоже, нет ничего подходящего. В частности:

  • INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH требует поиска по свободной форме, что не представляется нам целесообразным.
  • ACTION_VIEW требует URL. Я мог бы использовать URL-адрес потока радиостанции или, может быть, разработать схему пользовательских URL-адресов, такую ​​как my-radio-app://station-id, но как я могу убедить, что общие приложения будильника показывают пользователю список доступных станций?

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

Я пытаюсь сделать невозможное? Эти намерения просто не стандартизированы?

ответ

1

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

Я был бы удивлен, если бы многие приложения для будильника поддерживали это.

При срабатывании будильника, радио должно начать играть

Это только часть необходимой интеграции. Следует отметить, что когда пользователь откладывает или останавливает будильник, радиоприемник должен прекратить воспроизведение.

Как убедить общие приложения будильника, чтобы показать пользователю список доступных станций?

Некоторые приложения для будильника могут позволить пользователю выбрать фрагмент звука для воспроизведения в качестве сигнала «мелодии звонка». Эти приложения могут получить этот звук одним из нескольких способов. Тот, который вы могли бы подключить, будет ACTION_GET_CONTENT. У вас может быть активность, которая реализует <intent-filter> для ACTION_GET_CONTENT, для некоторого подходящего типа audio MIME, где ваша активность возвращает Uri в аудио. Тем не менее, что Uri должен был бы указывать на поток, который может быть воспроизведен MediaPlayer, так как именно приложение будильника, скорее всего, будет воспроизводить этот звук (напрямую или через setSound() на Notification.Builder). Это самое близкое, что вы собираетесь получить к чему-то, что поддерживается, и в этом случае вы не воспроизводите аудио, но в большинстве случаев перекодируете какой-то поток во что-то, что может играть MediaPlayer.

Я предполагаю, что это не то, что вы имеете в виду.

Эти намерения не стандартизированы?

Я не совсем уверен, что вы ожидаете от Intent, чтобы сделать в этом случае. Например, Intent не может использоваться для запуска активности для воспроизведения звука, так как ваша активность часто не может отображаться (экран пользователя заблокирован), и приложение будильника не может остановить музыку, когда пользователь откладывает или останавливает будильник.

В Android нет стандартного механизма для одного приложения, чтобы попросить другое приложение начать и прекратить воспроизведение аудио. Вы можете придумать для этого конвенцию и убедить разработчиков будильников реализовать ее.

+0

Правда, мне нужно было бы немного больше интеграции, чем просто начать играть, но решила сохранить его просто изначально ... видимо, это уже достаточно сложно;) Спасибо, что подтвердили мои сомнения. 'ACTION_GET_CONTENT' действительно может быть использован для выбора конкретного потока, но, конечно, требует сотрудничества от обоих приложений. Жалость. Я ожидал бы, что «Intent» можно каким-то образом использовать для начала воспроизведения, даже если устройство заблокировано. Но, как вы говорите, это не похоже на стандартизацию, и я не склонен к этому, потому что это всего лишь хобби. – Thomas

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

  • Нет связанных вопросов^_^