Swift:从后台返回后使用音量按钮不起作用
Swift: Using Volume Buttons does not work after returning from Background
我需要编写一个 iOS 应用程序,通过按 iPhone 或 iPad 上的增大音量键进行倒计时。因此,我使用了这里的一些建议来使用 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([=11=].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)
}
}
首次启动应用程序后一切正常。当我现在按下主页按钮并 return 返回到应用程序时,没有捕获按下音量按钮的事件,并且再次显示 MPVolumeWindow。
有人可以帮我解决这个问题吗?
问候
阿敏
当您从后台返回时,您的音频会话不再处于活动状态。您需要重新激活它。
我需要编写一个 iOS 应用程序,通过按 iPhone 或 iPad 上的增大音量键进行倒计时。因此,我使用了这里的一些建议来使用 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([=11=].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)
}
}
首次启动应用程序后一切正常。当我现在按下主页按钮并 return 返回到应用程序时,没有捕获按下音量按钮的事件,并且再次显示 MPVolumeWindow。
有人可以帮我解决这个问题吗?
问候 阿敏
当您从后台返回时,您的音频会话不再处于活动状态。您需要重新激活它。