Get System Volume iOS

后端 未结 8 2264
死守一世寂寞
死守一世寂寞 2020-11-27 05:02

My case is simple: I need to play a warning signal and want to make sure the user will hear it, so I want to check the system volume.

How can I find out what the cur

8条回答
  •  无人及你
    2020-11-27 05:27

    I have prepared a class with static methods in order to deal with the volume of ios devices. Let me share with you :)

    import AVFoundation
    class HeadPhoneDetectHelper {
    class func isHeadPhoneConnected() -> Bool
    {
        do{
            let audioSession = AVAudioSession.sharedInstance()
            try audioSession.setActive(true)
            let currentRoute = audioSession.currentRoute
            let headPhonePortDescriptionArray = currentRoute.outputs.filter{$0.portType == AVAudioSessionPortHeadphones}
            let isHeadPhoneConnected = headPhonePortDescriptionArray.count != 0
            return isHeadPhoneConnected
        }catch{
            print("Error while checking head phone connection : \(error)")
        }
        return false
    }
    
    class func isVolumeLevelAppropriate() -> Bool
    {
        let minimumVolumeLevelToAccept = 100
        let currentVolumeLevel = HeadPhoneDetectHelper.getVolumeLevelAsPercentage()
        let isVolumeLevelAppropriate = currentVolumeLevel >= minimumVolumeLevelToAccept
        return isVolumeLevelAppropriate
    }
    
    class func getVolumeLevelAsPercentage() -> Int
    {
        do{
            let audioSession = AVAudioSession.sharedInstance()
            try audioSession.setActive(true)
            let audioVolume =  audioSession.outputVolume
            let audioVolumePercentage = audioVolume * 100
            return Int(audioVolumePercentage)
        }catch{
            print("Error while getting volume level \(error)")
        }
        return 0
    }
    }
    

提交回复
热议问题