iphone ios audio avfoundation volume

iPhone Detect Volume Keys presione.



ios audio (1)

Necesito detectar cuando el usuario presiona las teclas de volumen del hardware, (enfoque seguro de App Store) He intentado varias cosas sin suerte. ¿Sabes cómo implementar tal funcionalidad? Actualmente me estoy registrando para recibir notificaciones, sin embargo, parece que no se las llama. Aquí está mi código:

AudioSessionInitialize(NULL, NULL, NULL, NULL); NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

Y el método del receptor es:

-(void)volumeChanged:(NSNotification *)notification{ NSLog(@"YAY, VOLUME WAS CHANGED");}

Algún consejo sería de gran aprecio.


Debe iniciar una sesión de audio antes de que se active la notificación:

AudioSessionInitialize(NULL, NULL, NULL, NULL); AudioSessionSetActive(true);

Ahora puede suscribirse a la notificación:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(volumeChanged:) name:@"AVSystemController_SystemVolumeDidChangeNotification" object:nil];

Para obtener el volumen:

float volume = [[[notification userInfo] objectForKey:@"AVSystemController_AudioVolumeNotificationParameter"] floatValue];

Deberá almacenar el volumen y compararlo con el valor anterior que recibió de una notificación para saber qué botón se presionó.

Esta solución aún ajustará el volumen del sistema cuando el usuario presiona la tecla de volumen y mostrará la superposición de volumen. Si desea evitar cambiar el volumen del sistema y mostrar la superposición (en esencia reutilizar completamente las teclas de volumen), vea esta respuesta