solo - El audio todavía se reproduce cuando el volumen del iPhone se baja completamente al silencio
mi iphone solo se escucha con audifonos (2)
La forma en que actualmente estoy reproduciendo música de fondo y otros sonidos en mi aplicación se está comportando de manera muy extraña:
- Desactive la música de fondo, y los otros sonidos reproducidos son MUCHO más fuertes.
- Con la música de fondo activada, el audio es MUCHO más silencioso.
- Incluso puede activar la música en medio del sonido y el sonido se vuelve más silencioso.
La parte más extraña: cuando el volumen del iPhone se baja completamente (silenciado) no debería haber ningún sonido. Con la música de fondo activada pero sin el volumen del dispositivo, hace lo que esperaría: no puede escuchar música o efectos de sonido. ¡Pero si la música de fondo se apaga, los efectos de sonido se siguen reproduciendo y son bastante fuertes, incluso si el dispositivo está completamente apagado!
Aquí está mi código ...
Para mi música de fondo:
AVAudioPlayer *musicPlayer;
- (void)playMusic {
if (musicPlayer == nil) {
NSURL *musicPath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SongFile" ofType:@"mp3"]];
musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:musicPath error:nil];
musicPlayer.volume = 0.2f;
musicPlayer.numberOfLoops = -1;
}
[musicPlayer play];
}
- (void)stopMusic {
[musicPlayer stop];
}
Para sonidos durante el juego:
#import "SoundEffect.h"
SoundEffect *sounds;
- (void)playSoundWithInfo:(NSString *)sound; {
NSString *path = [[NSBundle mainBundle] pathForResource:sound ofType:@"caf"];
sounds = nil;
sounds = [[SoundEffect alloc] initWithContentsOfFile:path];
[sounds play];
}
Cualquier idea sería muy apreciada.
Tal vez sea porque está utilizando AVAudioPlayer para su música y SystemSounds para reproducir sus efectos de sonido. El volumen establecido para AVAudioPlayer está en la aplicación, pero el volumen configurado para SystemSounds es el SystemVolume.
Debes configurar tu AVAudioSession
antes de la reproducción de sonidos usando AVAudioPlayer
y MPMediaPlayer
en tu aplicación, y existen diferentes categorías según cómo desees que el audio interactúe. Aunque no tengo idea de por qué la música todavía se reproducirá incluso en volumen cero, los otros problemas parecen ser de una configuración de AVAudioSessionCategory
que no desea. En la inicialización de su aplicación o donde quiera que empiece a reproducir sonidos, intente con el siguiente código:
[[AVAudioSession sharedInstance] setDelegate:self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
Este código inicializa AVAudioSession
y lo establece en una categoría donde los sonidos no se mezclarán con otros sonidos de fondo (se detendrán una vez que active la sesión) y donde su aplicación tenga prioridad. Tenga en cuenta que el bloqueo de pantalla y el interruptor de silencio aún permitirán la reproducción de sonidos (a todo volumen). Puede establecer eso específicamente, creo, pero no conozco el código exacto.
Si desea un comportamiento diferente para el audio, consulte las otras categorías que podría configurar en la documentación de Apple de la clase AVAudioSession . Otras opciones son:
AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
AVAudioSessionCategoryRecord;
AVAudioSessionCategoryPlayAndRecord;
AVAudioSessionCategoryAudioProcessing;
De todos modos, afortunadamente el problema de la sesión de audio estaba causando esos problemas. Avísame si eso funcionó.