2010-07-25 2 views
1

Je développe une application qui devrait avoir les propriétés suivantes en ce qui concerne l'audio:propriétés iPhone AudioSession

  1. peut enregistrer et lire son en même temps
  2. peut mélanger la sortie audio avec d'autres applications, par exemple sortie audio iPod
  3. au haut-parleur lorsque l'écouteur est pas branché la sortie audio
  4. à écouteurs quand il est branché

je le code suivant.

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
NSError *audioSessionError; 
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&audioSessionError]; 

UInt32 mix = 1; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(mix), &mix); 

UInt32 route = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route); 

[audioSession setActive:YES error:&audioSessionError]; 

Cependant, je peux obtenir 1-3, mais a échoué à 4. Lorsque l'écouteur est branché, l'audio est encore à travers le haut-parleur. Ensuite, j'ai essayé de régler kAudioSessionProperty_OverrideCategoryDefaultToSpeaker au lieu de kAudioSessionProperty_OverrideAudioRoute, mais cela a entraîné une pause de l'iPod au lieu de mélanger les deux audio. Quelqu'un pourrait-il s'il vous plaît aider à signaler ce qui ne va pas avec le code ci-dessus?

Merci pour toute aide.

+0

Avez-vous essayé l'écoute des notifications de changement d'itinéraire audio et le réglage kAudioSessionOverrideAudioRoute_Speaker que si l'écouteur est pas branché, et à l'arrêt quand il est branché ? – lucius

+0

Quelles importations sont nécessaires pour que cela fonctionne? –

Répondre

0

Je pense que ceci:

UInt32 route = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(route), &route); 

signifie précisément utiliser le haut-parleur. L'action par défaut (pour utiliser le casque lorsqu'il est branché) doit être:

UInt32 route = kAudioSessionOverrideAudioRoute_None; 
Questions connexes