Anular el volumen del timbre en las aplicaciones de iPhone
-
06-07-2019 - |
Pregunta
He creado una aplicación que reproduce muchos sonidos de manera fácil:
AudioServicesPlaySystemSound(someSoundID);
Cuando uso los botones de volumen del dispositivo para aumentar o disminuir el volumen, el volumen que realmente cambio es el volumen del timbre del teléfono. Entonces, si lo disminuye y sale de la aplicación, su teléfono sonará en silencio ...
¿Hay una manera fácil de anular esto y realmente cambiar el volumen de mi aplicación?
Solución
He encontrado la solución a lo que pensé que sería un problema común. Así es como su aplicación puede tener su propio volumen y no meterse con el volumen del timbre del usuario, incluso si solo está reproduciendo sonidos como Sonidos del sistema.
Debe importar el marco de AVFoundation y en un objeto que permanezca cargado todo el tiempo que se ejecute su aplicación (o vista, o el delegado de la aplicación) debe inicializar un AVAudioPlayer, darle un archivo para reproducir y configurarlo en " prepareToPlay " eso ...
Esto es lo que hice en mi Vista principal (que se usa para cargar otras vistas como subvistas): en el archivo de encabezado:
#import <AVFoundation/AVFoundation.h>
@interface MainViewController : UIViewController {
AVAudioPlayer *volumeOverridePlayer;
}
@property (nonatomic, retain) AVAudioPlayer *volumeOverridePlayer;
En el archivo de implementación:
@synthesize volumeOverridePlayer;
- (void)viewDidLoad
{
[super viewDidLoad];
volumeOverridePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"caf"]] error:nil];
[volumeOverridePlayer prepareToPlay];
//...
}
¡Simplemente deje el reproductor preparado para reproducir su archivo y disfrute de su propio control de volumen sin tener que reproducir los sonidos a través de él! Y, por supuesto, recuerda lanzarlo en Dealloc.
Otros consejos
Por lo que puedo ver en la documentación de Apple, hay dos problemas aquí. 1. La aplicación y el volumen del SO / hardware solo pueden ser controlados por el hardware / usuario. 2. Está reproduciendo un sonido del sistema. Creo que el sistema operativo rige el sonido del sistema, así que no tienes suerte aquí, a menos que estés reproduciendo archivos de sonido reales. Si puede usar archivos de sonido, eche un vistazo aquí .
¡Buena suerte!