2010-04-01 11 views
1

J'ai une application où l'utilisateur peut enregistrer du son et aussi jouer du son dans le haut-parleur ou l'écouteur. Pour acheminer l'audio que je mis kAudioSessionProperty_OverrideAudioRoute de la manière suivante:iPhone SDK: Définir le routage audio et également couper le son lorsque le bouton de mise en sourdine est activé

if(loudSpeakerOn) { 
    audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
} 
else { 
    audioRouteOverride = kAudioSessionOverrideAudioRoute_None; 
} 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride); 

Je dois aussi faire en sorte que lorsque l'utilisateur active/désactive le Mute/vibrent le son doit d'activer/désactiver. Pour cela, je mis la propriété suivante

SInt32 ambient = kAudioSessionCategory_AmbientSound; 
if (AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(ambient), &ambient)) { 
    NSLog(@"*** Error *** could not set Session property to ambient."); 
} 

Maintenant, le problème est quand je mets la propriété ambiante, Route Audio et arrête l'enregistrement audio de travail.

Comment puis-je faire en sorte que tout cela fonctionne ensemble?

Merci!

Répondre

0

Avez-vous obtenu ce fonctionnement? Je crois que le réglage de la catégorie des sessions audio ambiantes interdira l'enregistrement. Si vous devez simultanément enregistrer et lire de l'audio, utilisez kAudioSessionCategory_PlayAndRecord à la place, sinon échangez-les entre eux lorsque vous en avez besoin. De même, la définition de la catégorie peut réinitialiser le routage, vous devrez donc probablement le redéfinir après avoir défini la catégorie.