2 votes

iOS6 volume très faible lors de l'utilisation de la catégorie de session audio PlayAndRecord

J'ai une application qui lit de l'audio via AVAudioPlayer ainsi qu'une implémentation de lecteur AudioUnit. Depuis iOS6, le volume de lecture (quel que soit le mécanisme de lecture) via le haut-parleur a été considérablement réduit, à tel point que le volume est à peine audible, même au volume maximum. Si je change simplement la session audio pour l'une des autres comme kAudioSessionCategory_SoloAmbientSound ou kAudioSessionCategory_MediaPlayback, les niveaux de volume reviennent à ce qu'ils étaient avant iOS6 mais, bien sûr, je ne suis pas en mesure d'enregistrer de l'audio. Sur le même appareil exécutant iOS5 (ou iOS4), il n'y a aucune différence dans les niveaux de volume avec les différentes catégories de session audio.

Quelqu'un d'autre a-t-il rencontré ce problème ? Je suis coincé en essayant de trouver comment ramener les niveaux de volume à la normale dans mon application. J'ai signalé un bogue à Apple parce qu'il semble qu'il s'agisse d'un bogue puisque les niveaux de volume sont si radicalement différents entre les différentes catégories, mais je ne m'attends pas à obtenir une réponse (ou une solution) rapidement de leur part.

Configuration de la session audio :

UInt32 category = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category),  &category);
if (error) {
    // handle error
}

UInt32 speakerOverride = 1;
error = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof(speakerOverride), &speakerOverride);
if (error) {
    // handle error
}

0voto

hobotron Points 172

Avez-vous vérifié/réglé le volume de sortie actuel du matériel ?

kAudioSessionProperty_CurrentHardwareOutputVolume

Si vous utilisez une unité audio de mixage multicanal, vous pouvez également vérifier/régler le volume avec :

kMultiChannelMixerParam_Volume

0voto

EverfrosT Points 1

En fait, vous devez spécifier votre paramètre speakerOverride à 'spkr', comme dans l'en-tête audiosession.

enum
{
    kAudioSessionOverrideAudioRoute_None    = 0,
    kAudioSessionOverrideAudioRoute_Speaker = 'spkr'
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X