1

我有一个与用户交谈并听取用户语音响应的应用程序。我注意到,当我将手机插入汽车音响系统并使用该应用程序时,当我的应用程序说完后,它会收到中断通知,并且音乐应用程序开始播放音乐,而不是让我的应用程序继续。

如果电话没有连接到外部设备,则不会发生这种情况,并且在我插入电话的那一刻不会发生这种情况,只有当语音停止并且电话正在通过汽车播放时才会发生。我已经做了一些测试,并确定当我beginReceivingRemoteControlEvents在我的应用程序上调用该方法时会出现这种行为。如果我在我的应用程序加载时没有注册远程控制事件,则不会发生问题,但我无法为我的音频显示“正在播放”信息或使用汽车的控件来控制播放。

有没有人找到一种方法来监听远程控制事件而不丧失对设备音频播放的控制?

4

2 回答 2

2

这通常是由汽车音响而不是您的 iOS 设备引起的。检查立体声的手册并将其从音频模式切换到 iPod 模式(或您的手册命名这些选项的任何名称)。基本上,您的汽车音响正在收听曲目结束通知并使用它来触发“播放下一曲目”通知。这会调用 MPMusicPlayer,它通常会在设备库中按字母顺序选择第一首曲目。可能是软件中有解决方法,但我发现最简单的方法是更改​​汽车音响的设置。

于 2014-06-22T18:15:39.977 回答
0

使用以下命令禁用远程控制事件(您可能必须将 togglePlayPauseCommand 替换为 playCommand,或者两者都做):

    MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

    [commandCenter.togglePlayPauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
        NSLog(@"toggle button pressed");
        return MPRemoteCommandHandlerStatusSuccess;
    }];

或者,如果您更喜欢使用方法而不是块:

    [commandCenter.togglePlayPauseCommand addTarget:self action:@selector(toggleButtonAction)];

停止:

    [commandCenter.togglePlayPauseCommand removeTarget:self];

或者:

    [commandCenter.togglePlayPauseCommand removeTarget:self action:@selector(toggleButtonAction)];

您需要将其添加到文件的包含区域:

@import MediaPlayer;
于 2015-09-03T10:50:32.933 回答