Questo è un po 'vecchio, ma questo post mi ha aiutato e volevo aggiornarlo per chiunque altro possa averne bisogno in futuro. Il codice pubblicato nella parte superiore è corretto: prenderà l'audio silenzioso riprodotto dall'altoparlante del telefono e lo indirizzerà all'altoparlante in basso. C'è un errore di battitura nel codice, motivo per cui sta dando errori. Ecco il frammento di codice corretto che risolverà questo problema:
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
Assicurati di attivare anche la sessione audio di destra dopo aver impostato questo, prima di creare il vostro lettore audio/registratore:
[[AVAudioSession sharedInstance] setActive:YES error:nil];
scorso, se si Mentre suonerai e registrerai allo stesso tempo probabilmente avrai bisogno di impostare anche la categoria e le funzioni di mixaggio. Ecco l'intero snippet che imposta la categoria, attiva il missaggio, indirizza l'audio all'altoparlante principale e attiva la sessione. Avrai intenzione di farlo solo una volta dopo l'avvio dell'app.
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
NSLog(@"Mixing: %x", propertySetError); // This should be 0 or there was an issue somewhere
[[AVAudioSession sharedInstance] setActive:YES error:nil];
La speranza che aiuta qualcuno!
fonte
2010-08-12 00:43:13
Sì, questo è necessario, ma ho capito. Nessuna modifica :( La funzione stessa è ok, puoi soffiare il microfono e ascoltare il suono, ma solo con l'altoparlante interno. –