iphone - tiene - ¿Cómo reproducir el sonido del sistema en iOS sin vibración?
mi iphone no vibra (2)
En la documentación de AudioServicesPlayAlertSound , dice que puedo desactivar la vibración al reproducir un sonido:
iPhone: reproduce el sonido especificado. Si el usuario ha configurado la aplicación Configuración para la vibración en el anillo, también invoca la vibración. Sin embargo, el dispositivo no vibra si la sesión de audio de su aplicación está configurada con la categoría de sesión de audio AVAudioSessionCategoryPlayAndRecord o AVAudioSessionCategoryRecord.
Sin embargo, aún siento vibración en mi iPhone 4S (iOS 5.1.1) incluso después de configurar mi categoría para "reproducir y grabar". Suena y vibra al mismo tiempo.
#import <AudioToolbox/AudioServices.h>
#import <AVFoundation/AVAudioSession.h>
NSError* error;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord
error:&error];
if (error == nil) {
AudioServicesPlayAlertSound(1000);
}
También he probado AudioServicesPlaySystemSound
, pero los resultados son los mismos. La razón por la que quiero desactivar la vibración es porque estoy creando una aplicación donde el usuario debe colocar su teléfono lejos y el teléfono no debe caerse debido a la vibración.
¿Has intentado reproducir tu propio efecto de sonido en lugar del integrado en el de Apple?
Si carga un archivo de audio en su aplicación, puede usarlo fácilmente con el marco AudioToolBox y ya no tendrá que preocuparse por la vibración.
#import <AudioToolbox/AudioServices.h>
//Initialise your soundID (your app delegate is a good place for this)
SystemSoundID soundToPlay;
NSString *path = [[NSBundle mainBundle] pathForResource:@"<YourFileName>" ofType:@"aif"];
NSURL *pathURL = [NSURL fileURLWithPath : path];
AudioServicesCreateSystemSoundID((__bridge CFURLRef) pathURL, &soundToPlay);
//playback
AudioServicesPlaySystemSound(soundToPlay);
He probado esto con mi iPhone 4s y hace exactamente lo que quieres.
NSError* error;
[[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayAndRecord
error:&error];
if (error == nil) {
SystemSoundID myAlertSound;
NSURL *url = [NSURL URLWithString:@"/System/Library/Audio/UISounds/new-mail.caf"];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &myAlertSound);
AudioServicesPlaySystemSound(myAlertSound);
}
Use AudioServicesCreateSystemSoundID
para crear un SystemSoundID
usando el nombre de archivo del sonido del sistema. Luego use AudioServicesPlaySystemSound()
para reproducir el sonido sin vibración. Los nombres de archivo de los otros sonidos del sistema se pueden encontrar en el enlace de abajo.