Swift:从Background返回后使用音量按钮不起作用

时间:2017-03-08 22:08:52

标签: ios iphone swift avaudiosession

我需要编写一个iOS应用程序,通过按iPhone或iPad上的Up Volume Key来倒计时。因此我从这里使用了一些建议来使用AVAudioSession并观察“outputVolume”键。

在这里你可以找到我的ViewController的代码:

import UIKit
import MediaPlayer

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
    @IBOutlet weak var chickenLabel: UILabel!

    let audioSession = AVAudioSession.sharedInstance()
    var maxHendl:Int = 100
    var istHendl:Int = 100
    var isVolumeChanged = false

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewWillAppear(_ animated: Bool) {
        listenVolumeButton()
        removeVolumeView()
    }

    func listenVolumeButton() {
        do {
        try audioSession.setActive(true)

        }
        catch {
            print(error.localizedDescription)
        }
        audioSession.addObserver(self, forKeyPath: "outputVolume", options: .new, context: nil)
    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "outputVolume" {
            if isVolumeChanged == false {
            // Set Volume to 50%
            MPVolumeView().subviews.filter{NSStringFromClass($0.classForCoder) == "MPVolumeSlider"}.first as? UISlider)?.setValue(0.5, animated: false)
                //do some Counting
            }
        }
     }
func removeVolumeView() {
    let volumeView: MPVolumeView = MPVolumeView(frame: CGRect.zero)
    view.addSubview(volumeView)
}
 }

第一次启动App后,一切正常。当我现在按下主页按钮并返回到应用程序时,不会捕获按下音量按钮的事件,并且会再次显示MPVolumeWindow。

有人可以帮我解决这个问题吗?

此致 阿明

1 个答案:

答案 0 :(得分:2)

当您从后台回来时,您的音频会话不再有效。你需要再次激活它。