Comment puis-je Voie Audio de haut-Parleur sans l'aide de AudioSessionSetProperty?
Comme AudioSessionSetProperty
peut devenir deprecated
, j'essaie de trouver un exemple de code de façon à acheminer le son de la speaker
l'aide d'autres moyens.
Précédemment j'ai fait la suivante:
-(void)setSpeakerEnabled
{
debugLog(@"%s",__FUNCTION__);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (
kAudioSessionProperty_OverrideAudioRoute,
sizeof (audioRouteOverride),
&audioRouteOverride
);
}
Essayer d'obtenir le même résultat mais without call
à AudioSessionSetProperty
.
Cette question semble être hors-sujet, car il est sur iOS 7, qui est sous NDA.
Corrigé pour iOS6
À mon humble avis il n'est pas le lieu de Débordement de Pile à la police NDAs.
J'ai été l'affichage de la de la WWDC 2012 qui stipule qu'il est déconseillé à 13:58 Session 505 Services Audio Obsolète. Je n'aborderai pas pourquoi, je l'ai vu cependant.
hmm. Eh bien, mon erreur alors. J'ai regardé la méthode de l'ADC (iOS 6 docs) et ça ne veut pas dire qu'il est déconseillé d'aussi loin que je pouvais dire.
Corrigé pour iOS6
À mon humble avis il n'est pas le lieu de Débordement de Pile à la police NDAs.
J'ai été l'affichage de la de la WWDC 2012 qui stipule qu'il est déconseillé à 13:58 Session 505 Services Audio Obsolète. Je n'aborderai pas pourquoi, je l'ai vu cependant.
hmm. Eh bien, mon erreur alors. J'ai regardé la méthode de l'ADC (iOS 6 docs) et ça ne veut pas dire qu'il est déconseillé d'aussi loin que je pouvais dire.
OriginalL'auteur Jim Hankins | 2013-09-14
Vous devez vous connecter pour publier un commentaire.
Sur chaque version d'iOS, plus de la audioSession propriétés sont migrés vers AVFoundation, de sorte que vous devriez utiliser ces, de préférence lorsqu'elle est disponible.
Depuis iOS 6
kAudioSessionProperty_OverrideAudioRoute
est représenté dans AVAudioSession par la méthodeValeurs disponibles sont
AVAudioSessionPortOverrideNone
etAVAudioSessionPortOverrideSpeaker
Voici un exemple de session audio configuré entièrement via AVFoundation:
Mise à JOUR
Depuis iOS 7.0, l'Audio de la Session des Services de l'API C est maintenant totalement abandonné en faveur de AVAudioSession.
Mise à JOUR 2
est une méthode, une propriété, et il définit un sous-jacent en écriture seule UInt32 valeur. Vous ne pouvez pas obtenir la valeur actuelle, et vous devez les traiter de la méthode de fixation d'un état temporaire. Si l'audio des changements d'itinéraire ou est interrompu, la propriété est réinitialisé à sa valeur par défaut (
AVAudioSessionPortOverrideNone
). Vous pouvez obtenir de l'interruption des notifications parAVAudioSessionDelegate
.Vous devez utiliser la AVAudioSession méthode
- (BOOL)setCategory:(NSString *)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError
aveccategory
commeAVAudioSessionCategoryPlayAndRecord
ouAVAudioSessionCategoryRecord
etoptions
commeAVAudioSessionCategoryOptionAllowBluetooth
Merci de Fonderie, mais qui n'est pas le même, parce que qui permettrait A2DP bluetooth uniquement. Et ce ne serait pas la forcer à l'utiliser. Voir aussi: stackoverflow.com/questions/19134912/...
Si quelqu'un d'autre se demande pourquoi cela ne fonctionne pas pour eux. Vous devez appeler immédiatement avant de jouer quelque chose. Donc
[[AVAudioSession] sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&overrideError]; [_player play];
grande.. cool 🙂
OriginalL'auteur foundry
OriginalL'auteur Yunus Nedim Mehel
De la fonderie solution avec ce blog par Mario Diana m'a aussi permis de mettre à niveau audio de la session de code obsolète dans iOS 7. Mon ancien code était fondée sur
AudioBufferPlayer par Matthijs Hollemans.
N'oubliez pas d'ajouter le AVFoundation.cadre.
OriginalL'auteur Greg
//collez ce code dans votre viewLoad région
OriginalL'auteur Mirac Bektas