当前位置:  开发笔记 > IOS > 正文

如何从Swift中的AVAudioPlayer获取锁定屏幕/控制中心的音频控件

如何解决《如何从Swift中的AVAudioPlayer获取锁定屏幕/控制中心的音频控件》经验,为你挑选了1个好方法。

这是iOS开发的新功能.我有一个播放音频的应用程序 - 我正在使用AVAudioPlayer应用程序资产中的名称加载单个文件.我不想查询用户的库,只查询提供的文件.效果很好,但是,我希望用户能够从锁定屏幕暂停和调整音量.

func initAudioPlayer(file:String, type:String){
    let path = NSBundle.mainBundle().pathForResource(file, ofType: type)!
    let url = NSURL(fileURLWithPath: path)
    let audioShouldPlay = audioPlaying()
    do{
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        try AVAudioSession.sharedInstance().setActive(true)
        let audioPlayer:AVAudioPlayer = try AVAudioPlayer(contentsOfURL: url)
        audioPlayer.volume = slider.value
        audioPlayer.numberOfLoops = -1
        audioPlayer.prepareToPlay()
        if(audioShouldPlay){
            audioPlayer.play()
//                let mpic = MPNowPlayingInfoCenter.defaultCenter()
//                mpic.nowPlayingInfo = [MPMediaItemPropertyTitle:"title", MPMediaItemPropertyArtist:"artist"]
        }
    }
    catch{}
}

我使用AVAudioSessionMPNowPlayingInfoCenter只是阅读其他相关帖子的实验.

在我的应用程序的plist文件中为音频启用了背景模式



1> Leo Dabus..:

您需要调用beginReceivingRemoteControlEvents(),否则它将无法在实际设备上运行.

Swift 3.1

UIApplication.shared.beginReceivingRemoteControlEvents()

如果要为MPRemoteCommandCenter指定自定义操作:

let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.nextTrackCommand.isEnabled = true
commandCenter.nextTrackCommand.addTarget(self, action:#selector(nextTrackCommandSelector))


最后的答案,`UIApplication.sharedApplication().beginReceivingRemoteControlEvents()`和`AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)`
这些线应该放在哪里?尽管音频播放正常,但我无法为我的应用显示任何锁定屏幕控件
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有