【问题标题】:Programmatically trigger the action that a headphone pause button would do以编程方式触发耳机暂停按钮将执行的操作
【发布时间】:2020-02-14 18:50:56
【问题描述】:

我正在尝试找到一种方法来暂停设备上任何正在播放的媒体,因此我正在考虑触发与用户按下耳机“中间按钮”时触发的相同逻辑

我设法通过不将 AVAudioSession 活动属性设置为 false 并将其挂起来阻止音乐恢复(在我的应用程序中暂停它之后,它基本上启动了一个 AVAudioSession 进行录制),但我很确定那是一个坏方法去做吧。如果我停用它,音乐就会恢复。我正在考虑的另一个选择是播放某种静音循环,它会“模仿”我需要做的静音。但我认为,如果我正在寻求的是可行的,这将是我从 question 了解到的最好的方法,它不能使用正常的方式完成

func stopAudioSession() {
let audioSession = AVAudioSession.sharedInstance(
  do {
       if audioSession.secondaryAudioShouldBeSilencedHint{
            print("someone is playing....")
       }
   try audioSession.setActive(false, options: .notifyOthersOnDeactivation)
        isSessionActive = false
        } catch let error as NSError {
        print("Unable to deactivate audio session: \(error.localizedDescription)")
       print("retying.......")            
        }
    }

在此代码 sn-p 中,正如函数名所暗示的那样,我将 active 设置为 false,试图找到其他选项,但我找不到停止录制会话的另一种方法,并阻止恢复已在播放的其他应用程序

如果有人可以指导我应该查看哪个库,例如,如果我可以点击 H/W 部分并触发它,或者我是否可以找出哪个库正在侦听此按钮按下事件并处理暂停/播放功能

【问题讨论】:

    标签: ios swift iphone avaudiosession headphones


    【解决方案1】:

    我的一位在 IOS 开发方面更有经验的朋友建议了以下解决方法,并且它奏效了 - 我将其发布在这里,因为它可能有助于尝试实现类似行为的人。

    为了停止/暂停用户设备上当前正在播放的内容,您需要在您的应用中添加music player。然后在您需要暂停/停止当前媒体的地方,您只需启动播放器,播放然后暂停/停止它 - 很简单:)

    像这样:

    let musicPlayer = MPMusicPlayerApplicationController.applicationQueuePlayer
    
       func stopMedia(){
    
        MPMediaLibrary.requestAuthorization({(newPermissionStatus: MPMediaLibraryAuthorizationStatus) in
            self.musicPlayer.setQueue(with: .songs())
            self.musicPlayer.play()
            print("Stopping music player")
            self.musicPlayer.pause()
            print("Stopped music player")
        })
    
    }
    

    需要MPMediaLibrary.requestAuthorization的部分以避免访问用户媒体库时出现授权错误。 当然你需要添加Privacy - Media Library Usage Description 键入您的 Info.plist 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      相关资源
      最近更新 更多