Je veux jouer un son même en mode silencieux dans l'iPhone.Comment lire un son en utilisant AVAudioPlayer en mode silencieux dans l'iPhone
Peut-il être fait à l'aide AVAudioPlayer (sans utiliser AVAudioSession)
(Pour ios 3.0+)
Merci à l'avance.
Je veux jouer un son même en mode silencieux dans l'iPhone.Comment lire un son en utilisant AVAudioPlayer en mode silencieux dans l'iPhone
Peut-il être fait à l'aide AVAudioPlayer (sans utiliser AVAudioSession)
(Pour ios 3.0+)
Merci à l'avance.
En fait, vous pouvez le faire. Il est contrôlé via la Session Audio et n'a rien à voir avec AVAudioPlayer
lui-même. Pourquoi ne voulez-vous pas utiliser AudioSession? Ils jouent bien ensemble ...
Dans votre application, vous devez initialiser la session audio, et vous pouvez également indiquer le type d'audio que vous avez l'intention de jouer. Si vous êtes un lecteur de musique, il est logique que l'utilisateur veuille entendre l'audio même si le commutateur de sonnerie/silencieux est activé.
AudioSessionInitialize (NULL, NULL, NULL, NULL);
AudioSessionSetActive(true);
// Allow playback even if Ring/Silent switch is on mute
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),&sessionCategory);
J'ai une application que je fais cette chose, et utiliser AVAudioPlayer pour la lecture audio, et avec l'anneau/commutateur silencieux activé, je peux entendre l'audio.
MISE À JOUR (11/6/2013)
Dans l'application je mentionné ci-dessus, où je le code ci-dessus avec succès, j'ai (pendant un certain temps) été en utilisant le code suivant au lieu d'atteindre le même résultat:
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; NSError *error = nil; BOOL result = NO; if ([audioSession respondsToSelector:@selector(setActive:withOptions:error:)]) { result = [audioSession setActive:YES withOptions:0 error:&error]; // iOS6+ } else { [audioSession setActive:YES withFlags:0 error:&error]; // iOS5 and below } if (!result && error) { // deal with the error } error = nil; result = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&error]; if (!result && error) { // deal with the error }
Je pensais que je posterais ceci comme une alternative, à la lumière du commentaire le plus récent à cette réponse. :-)
Merci pour votre réponse, ça a très bien fonctionné :) – Nima
Content de l'entendre. :-) –
J'avais l'habitude d'utiliser cette méthode mais de nos jours ça ne semble plus fonctionner. Est-ce que quelqu'un d'autre a remarqué cela? –
MarkGranoff's solution est correct. Cependant, si vous préférez le faire en Obj-c au lieu de C, ce qui suit fonctionne également:
NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
Merci wL_.Je préfère Obj-C code pour y parvenir :) Fonctionne parfaitement – iOSAppDev
Suppression des erreurs de vérification dans le code ne le rend pas Obj-C, votre ans est le même que l'original et par MarkGranoff – Thiru
@Thiru cette réponse est hors de propos maintenant. Mais il a été posté avant l'édition de Mark. –
Les réponses ci-dessus sont correctes. Voici la version Swift.
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
//print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
//print("AVAudioSession is Active")
} catch _ as NSError {
//print(error.localizedDescription)
}
} catch _ as NSError {
//print(error.localizedDescription)
}
Ce sera tout simplement faire le tour (en utilisant AVAudioSession
)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
Si l'appareil est en mode silencieux, ne joue pas son. L'utilisateur a demandé explicitement le silence! –
Pourquoi sans AVAudioSession? –
@JonathanGrynspan - cela fait sens quand l'utilisateur _remembers_ qu'ils ont demandé le silence, mais si vous faites des applications de nature AV, vous serez inondé de ce genre de critique: "AUDIO NE FONCTIONNE PAS ★ ☆☆☆☆" –