2016-09-17 90 views
0

我正在制作一个流式广播应用程序,它可以播放预定义的一组电台之一。我想将其与现有的闹钟应用程序集成,而无需在应用程序本身中构建任何闹钟功能。我可以将我的应用程序注册为闹钟处理程序吗?

当闹铃响起时,收音机应该开始播放。理想情况下,它应该事先播放由用户选择的电台,但我会考虑存储最后使用的电台并播放。

我查看了Android上的common intents,但似乎没有什么合适的。特别是:

  • INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH需要自由形式的搜索查询,这似乎不合适。
  • ACTION_VIEW需要一个URL。我可以使用广播电台的流媒体网址,或者可能想出一个像my-radio-app://station-id这样的自定义URL方案,但是如何说服通用闹钟应用程序向用户显示可用电台列表?

为了从另一端接近它,我查看了现有的闹钟应用程序。股票应用程序不做任何集成。我使用的Sleep as Android应用程序可以触发Spotify,但我认为这是一种定制的集成。它似乎也读取并列出SD卡上的所有音乐曲目。

我想要做不可能的事情吗?这些意图是不是标准化?

回答

1

我想这与现有的闹钟应用程序集成,无需建立任何报警功能集成到应用程序本身。

如果很多闹钟应用程序支持,我会感到很惊讶。

当警报响起时,无线电开始播放

那只是一块所需的集成。值得注意的是,当用户打盹或停止闹铃时,收音机应停止播放。

我该如何说服一般闹钟应用程序向用户显示可用电台列表?

某些闹钟应用程序可能允许用户选择一段音频作为闹铃“铃声”播放。这些应用程序可以通过几种方式之一获取该音频。你可以挂钩的那个将是ACTION_GET_CONTENT。您可以执行<intent-filter>ACTION_GET_CONTENT的活动,对于某些适当的audio MIME类型,您的活动返回Uri到音频。然而,Uri然后必须指向一个可以由MediaPlayer播放的流,因为闹钟应用最有可能播放该音频(直接或通过Notification.Builder上的setSound())。这是最接近你将获得支持的东西,在这种情况下,你不是在播放音频,而是最多可以将一些数据流转码为MediaPlayer可以播放的东西。

我的猜测是,这不是你想到的。

这些意图是不是标准化?

我不是很确定你期望Intent在这种情况下做什么。例如,Intent不能用于开始播放音频的活动,因为您的活动通常无法显示(用户屏幕已锁定),并且闹钟应用无法在用户延后或停止闹钟时停止音乐。

Android中没有一种应用程序要求其他应用程序启动和停止播放音频的标准机制。欢迎您为此发明一个约定,并说服闹钟开发人员实施它。

+0

的确,我需要比刚开始玩的时候多集成一点,但是最初决定保持简单......显然这已经够用了;)谢谢你确认我的疑惑。 'ACTION_GET_CONTENT'确实可以用于选择特定的流,但当然需要两个应用程序的合作。可怜。我希望即使设备被锁定,也可以用某种方式启动“Intent”。但正如你所说,它似乎没有标准化,我不想尝试,因为这只是一个业余爱好项目。 – Thomas

相关问题