2009-10-03 13 views
7

he añadido sonido Tock del iPhone para mi propio teclado personalizado así:Cómo obtener el sonido del teclado amortiguado del iPhone OS 3.1?

NSString *path = [[NSBundle bundleWithIdentifier:@"com.apple.UIKit"] pathForResource:@"Tock" ofType:@"aiff"]; 
SystemSoundID soundID; 
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &soundID); 
AudioServicesPlaySystemSound(soundID); 
// we don't dispose of the sound to keep the sound in the cache for the next time 
//AudioServicesDisposeSystemSoundID(soundID); 

En iPhone OS 3.1, sin embargo, el sonido Tock teclado ha sido amortiguada, por ejemplo, es mucho más silencioso que otros sonidos y que estaba en 3.0. El sonido de mi método sigue siendo muy fuerte y al volumen máximo. ¿Cómo podría obtener el mismo volumen que el teclado predeterminado del iPhone?

Por cierto, el sonido de Tock en Twitterrific se amortigua adecuadamente.

Saludos

MrMage

+0

Y ha proporcionado una forma de apagarlo, ¿no? La mayoría de las personas que conozco odian ese tipo de sonidos. – AlBlue

+0

Por supuesto que sí. – MrMage

+0

Acabo de agregar una recompensa por ello. Me gustaría tener una solución completa para esto que se sienta (por ejemplo, sonidos) exactamente igual a la realidad. – MrMage

Respuesta

5

Usando 0x450 como SystemSoundID funciona para mí en el volumen correcto - tenga en cuenta que no respeta las preferencias de encendido/apagado del teclado.

No estoy seguro de qué tan portátil es esto - me funciona en el simulador y en un iPod Touch de tercera generación. Sospecho que funciona en todos los dispositivos, pero podría cambiar sin previo aviso en una actualización de software.

Obtuve este número configurando un punto de interrupción en AudioServicesPlaySystemSound y presionando una tecla normal del teclado: la primera instrucción de ensamblaje copia el SystemSoundID en un registro, para que pueda verlo en la vista Registros en el depurador.

+0

Gracias, eso es exactamente lo que quería. – MrMage

+0

¿Apple rechazará esto o es una tienda de aplicaciones legal? – user3246173

2

Uso AVAudioPlayer en lugar de AudioServices y tendrá acceso a una propiedad de volumen que le permite bajar y subir el volumen del sonido.

+0

¿Y en qué volumen debo configurarlo para imitar el teclado Tock del iPhone? – MrMage

+0

La propiedad de volumen es un valor flotante, en cualquier lugar entre 0.0 y 1.0, aunque parece que los valores superiores a 1.0 producirán volúmenes aún mayores. Como probablemente haya notado, el sonido del teclado cambia a medida que cambia el volumen del iPhone. Comenzaría en 0.5 y vería cómo se compara. – mahboudz

+0

Utilicé ProLevel (http://www.katsurashareware.com/pgs/prolevel.html) para medir el nivel de salida del teclado predeterminado y entre 0,45 y 0,5 funcionó – esad

1

Esto es probablemente estúpido, pero he visto en otro código de ejemplo que también hay un archivo de sonido tick. Y de los ejemplos que he visto, es ofType:@"caf", así que vale la pena probarlo también. Lo siento si estoy lejos.

1

Al utilizar una vista de entrada del cliente que admita UIInputViewAudioFeedback, puede reproducir el sonido con el volumen correcto y respetar la configuración de sonido de la tecla de clic del usuario.

Cuestiones relacionadas