获取系统卷iOS

我的情况很简单:我需要发出一个警告信号,并要确保用户会听到它,所以我想检查系统音量。

我怎样才能找出当前的系统容量是多less?

audio会话可以提供输出音量(iOS> = 6.0)。

float vol = [[AVAudioSession sharedInstance] outputVolume]; NSLog(@"output volume: %1.2f dB", 20.f*log10f(vol+FLT_MIN)); 

尝试这个:

  MPMusicPlayerController *iPod = [MPMusicPlayerController iPodMusicPlayer]; float volumeLevel = iPod.volume; 

您需要导入MediaPlayer框架。

这工作正常:

 Float32 volume; UInt32 dataSize = sizeof(Float32); AudioSessionGetProperty ( kAudioSessionProperty_CurrentHardwareOutputVolume, &dataSize, &volume ); 

对于Swift 2

 let volume = AVAudioSession.sharedInstance().outputVolume print("Output volume: \(volume)") 

您可以使用默认系统的“视图”并将其添加到任何需要的位置。 在我的情况下,我需要在我自己的音乐播放器。 这很容易,无忧无虑。 只需添加视图,一切都完成了。 这在Apple的MPVolume类参考中进行了解释。

 mpVolumeViewParentView.backgroundColor = [UIColor clearColor]; MPVolumeView *myVolumeView = [[MPVolumeView alloc] initWithFrame: mpVolumeViewParentView.bounds]; [mpVolumeViewParentView addSubview: myVolumeView]; [myVolumeView release]; 

Swift 3.1

 let audioSession = AVAudioSession.sharedInstance() var volume: Float? do { try audioSession.setActive(true) volume = audioSession.outputVolume } catch { print("Error Setting Up Audio Session") } 

audioSession.setActive(true)重要

Swift 2.2,请确保导入MediaPlayer

 private func setupVolumeListener() { let frameView:CGRect = CGRectMake(0, 0, 0, 0) let volumeView = MPVolumeView(frame: frameView) //self.window?.addSubview(volumeView) //use in app delegate self.view.addSubview(volumeView) //use in a view controller NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(volumeChanged(_:)), name: "AVSystemController_SystemVolumeDidChangeNotification", object: nil) }//eom func volumeChanged(notification:NSNotification) { let volume = notification.userInfo!["AVSystemController_AudioVolumeNotificationParameter"] let category = notification.userInfo!["AVSystemController_AudioCategoryNotificationParameter"] let reason = notification.userInfo!["AVSystemController_AudioVolumeChangeReasonNotificationParameter"] print("volume: \(volume!)") print("category: \(category!)") print("reason: \(reason!)") print("\n") }//eom 

我已经准备了一个静态方法的类来处理ios设备的数量。 让我与你分享:)

 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 } }