2009-10-03 7 views
7

Ho aggiunto Tock suono di iPhone per la mia tastiera personalizzata in questo modo:Come ottenere un suono della tastiera attenuato per 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); 

In iPhone OS 3.1, tuttavia, il suono della tastiera Tock è stato soffocato, per esempio è molto più silenzioso di altri suoni e di quanto lo fosse nel 3.0. Il suono del mio metodo è ancora molto forte e al massimo volume. Come posso ottenere lo stesso volume della tastiera predefinita dell'iPhone?

A proposito, il suono Tock su Twitterrific è attenuato in modo appropriato.

Acclamazioni

MrMage

+0

E hai fornito un modo per disattivarlo, giusto? La maggior parte delle persone che conosco odiano assolutamente quel tipo di suoni. – AlBlue

+0

Certo che l'ho fatto. – MrMage

+0

Ho appena aggiunto una taglia per questo. Mi piacerebbe avere una soluzione completa per questo che si sente (ad esempio suoni) esattamente come la cosa reale. – MrMage

risposta

5

Utilizzando 0x450 come SystemSoundID funziona per me al volume corretto, si noti che non rispetta le preferenze di attivazione/disattivazione dei clic della tastiera.

Non sono sicuro di quanto sia portatile - funziona per me sul simulatore e su un iPod Touch di terza generazione. Sospetto che funzioni su tutti i dispositivi, ma potrebbe cambiare senza preavviso in un aggiornamento del software.

Ho ottenuto questo numero impostando un punto di interruzione su AudioServicesPlaySystemSound e premendo un normale tasto della tastiera: la prima istruzione di assemblaggio copia SystemSoundID in un registro, quindi è possibile vederlo nella vista Registri nel debugger.

+0

Grazie, è esattamente quello che volevo. – MrMage

+0

Apple rifiuterà o è legale l'app store? – user3246173

2

Uso AVAudioPlayer invece di AudioServices e si avrà accesso a una proprietà di volume che consente di abbassare e sollevare il volume del suono.

+0

E quale volume devo impostare per imitare la tastiera dell'iPhone Tock? – MrMage

+0

La proprietà del volume è un valore float, compreso tra 0.0 e 1.0, anche se sembra che valori superiori a 1.0 generino volumi ancora più elevati. Come probabilmente notato, il suono della tastiera cambia quando si modifica il volume dell'iPhone. Vorrei iniziare a 0,5 e vedere come questo si confronta. – mahboudz

+0

Ho usato ProLevel (http://www.katsurashareware.com/pgs/prolevel.html) per misurare il livello di uscita dalla tastiera predefinita e da qualche parte tra 0,45 e 0,5 ha funzionato – esad

1

Questo è probabilmente stupido, ma ho visto in un altro codice di esempio che esiste anche un file audio tick. E dagli esempi che ho visto, è ofType:@"caf", quindi vale la pena provare. Scusa se sono lontano.

1

Utilizzando una vista di input del cliente che supporta UIInputViewAudioFeedback, è possibile riprodurre l'audio al volume corretto e rispettare le impostazioni del suono dei clic dell'utente.

Problemi correlati