如何控制我的音乐播放器耳机?

Posted

技术标签:

【中文标题】如何控制我的音乐播放器耳机?【英文标题】:How can i control my headset for my music player? 【发布时间】:2018-02-28 08:05:59 【问题描述】:

我正在创建一个音乐播放器 ios 应用并从 firebase 获取数据。我可以在模拟器或 iPhone 中控制播放、暂停、下一个和上一个。当耳机连接到设备播放时,下一个和上一个功能无法正常工作。 这是我用过的代码;

 func setupRemoteCommandCenter() 

    // Get the shared MPRemoteCommandCenter

    let commandCenter = MPRemoteCommandCenter.shared()

    // Add handler for Play Command

    commandCenter.playCommand.addTarget  event in

            player?.play()

        print("headset play")

        return .success
    

    // Add handler for Pause Command

    commandCenter.pauseCommand.addTarget  event in

        player?.pause()

        print("headset pause")

        return .success
            

    // Add handler for Next Command

    commandCenter.nextTrackCommand.addTarget  event in

        return .success
    

    // Add handler for Previous Command

    commandCenter.previousTrackCommand.addTarget  event in

        return .success
    

并在viewdidload 中调用setupRemoteCommandCenter 函数

【问题讨论】:

【参考方案1】:

This document says 接收玩家事件通知需要

    开始播放音频 成为“正在播放的应用”

“正在播放的应用”的定义很难确定,但它似乎是任何具有活动的、不可混合的音频会话并且正在播放音频(或具有 最近播放音频,这里似乎有一个短暂的宽限期)。一种可能的不可混合音频会话是:

let session = AVAudioSession.sharedInstance()
do 
    try session.setCategory(AVAudioSessionCategoryPlayback)
    try session.setActive(true)
 catch let err as NSError 
    print("Error setting up non mixable audio session \(err)")

附言如果您希望耳机控件在屏幕锁定时工作(或者如果您希望锁定屏幕控件为此工作),您需要将音频添加到背景模式,因为从技术上讲,如果屏幕被锁定,那么您的应用程序有被背景化了:

【讨论】:

以上是关于如何控制我的音乐播放器耳机?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何在我的音乐应用程序中播放蓝牙耳机中的缓冲音频?

怎么设置手机铃声自动放歌

android 耳机按钮控制音乐播放

如何在右侧耳机播放音频,在左侧播放音乐?

耳机线控启动APP时如何查看iOS APP【音乐播放应用】是不是在后台

录制语音时如何播放背景音乐?