Obtener System Volume iOS

Mi caso es simple: necesito reproducir una señal de advertencia y quiero asegurarme de que el usuario lo escuche, así que quiero verificar el volumen del sistema.

¿Cómo puedo averiguar cuál es el volumen del sistema actual?

La sesión de audio puede proporcionar un volumen de salida (iOS> = 6.0).

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

Prueba esto:

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

Necesita importar el marco de MediaPlayer.

Esto funciona bien:

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

Para Swift 2 :

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

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)importante

Puede usar la vista de volumen predeterminada del sistema y agregarla donde la necesite. En mi caso lo requería en mi propio reproductor de música. Es fácil y sin complicaciones. Solo agregue la vista y todo estará hecho. Esto se explica en la Referencia de clase MPVolume de Apple.

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

Swift 2.2, asegúrese de importar 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 

He preparado una clase con métodos estáticos para tratar el volumen de dispositivos ios. Déjame compartir contigo 🙂

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