我可以将我的应用程序注册为闹钟处理程序吗?

Can I register my app as an alarm clock handler?

我正在开发流媒体广播应用程序,它可以播放一组预定义的电台。我想将它与现有的闹钟应用程序集成,而无需在应用程序本身中构建任何闹钟功能。

当闹钟响起时,收音机应该开始播放。理想情况下,它应该播放用户事先选择的电台,但我会满足于存储上次使用的电台并播放它。

我浏览了 Android 上可用的 common intents,但似乎没有合适的。特别是:

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

我是在尝试做不可能的事情吗?这些意图只是没有标准化吗?

I would like to integrate this with existing alarm clock apps, without having to build any alarm functionality into the app itself.

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

When the alarm goes off, the radio should start playing

这只是所需集成的一部分。值得注意的是,当用户暂停或停止闹钟时,收音机应该停止播放。

how do I convince generic alarm clock apps to show the user a list of available stations?

一些闹钟应用可能允许用户select播放一段音频作为闹钟"ringtone"。这些应用程序可以通过几种方式之一获取该音频。您可以挂钩的是 ACTION_GET_CONTENT。对于某些适当的 audio MIME 类型,您可以有一个 activity 为 ACTION_GET_CONTENT 实现 <intent-filter>,其中您的 activity returns a Uri 到音频。但是,Uri 必须指向可以由 MediaPlayer 播放的流,因为这就是闹钟应用程序最有可能播放该音频的方式(直接或通过 setSound()Notification.Builder 上)。这是您最接近受支持的东西,在这种情况下,您没有播放音频,但最多将一些流转码为 MediaPlayer 可以播放的东西。

我猜这不是你想要的。

Are these intents just not standardised?

我不太确定您希望 Intent 在这种情况下做什么。例如,Intent不能启动activity播放音频,因为你的activity经常无法显示(用户屏幕被锁定),闹钟应用程序无法停止用户暂停或停止闹钟时的音乐。

Android 中没有标准机制供一个应用程序请求另一个应用程序开始和停止播放音频。欢迎您为此制定一个约定并说服闹钟开发人员实施它。