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?

¿Fue útil?

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top