3

我正在尝试构建一个 Android 应用程序,该应用程序使用广播接收器来检测音乐播放何时开始,然后提供手势控制以触发发送跳过曲目意图。

首先,我只想将接收器设置为在音频播放开始时触发通知,以便我可以检查这个概念是否有效。我已经在我的清单文件中声明了一个服务和一个接收器,并且我创建了一个服务类,它(希望)通过 onCreate() 创建一个通知。

虽然我已经抓取了大量的文档,但似乎无法找到正确的意图来用我的接收器收听。这肯定有什么东西存在吗?

问候。

4

2 回答 2

3

事实证明,Android 3.1 及更高版本中有一个新的安全功能,在用户手动打开应用程序至少一次之前,广播接收器不会注册。由于我试图构建一个没有要打开的 UI 的仅服务应用程序,因此这阻止了我所有的意图侦听器尝试工作。

我已经修改为具有启动屏幕活动,现在一切都按我希望的那样工作。我现在正在整理一份播放器特定意图的列表,但对于那些试图构建类似东西的人来说,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);
            }
        }
    }
}
于 2013-08-26T13:17:59.720 回答
0

这肯定有什么东西存在吗?

有成千上万的音乐播放器。没有人有义务广播任何内容,更不用说有关曲目的信息了。没有人有义务允许您通过任何方式“跳过曲目”。

欢迎您搜索特定的音乐播放器,这些播放器为此类事物提供了文档化且受支持的 API。

于 2013-08-11T23:21:54.090 回答