J'essaie d'obtenir un comportement cohérent de la propriété kAudioSessionProperty_OtherMixableAudioShouldDuck sur l'iPhone pour permettre la fusion de musique iPod et j'ai des problèmes. Au début de mon application, je mis une catégorie ambiante comme ceci:Utilisation de kAudioSessionProperty_OtherMixableAudioShouldDuck sur iPhone
-(void) initialize
{
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: nil];
}
Plus tard, lorsque je tente de lire des fichiers audio que je mets la propriété de canard en utilisant la méthode suivante:
//this will crossfade the audio with the ipod music
- (void) toggleCrossfadeOn:(UInt32)onOff
{
//crossfade the ipod music
AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(onOff),&onOff);
AudioSessionSetActive(onOff);
}
Je l'appelle passage un numérique « 1 » juste avant la lecture audio comme ceci:
[self toggleCrossfadeOn:1];
[player play];
J'appelle alors la méthode de fondu enchaîné en passant à nouveau un zéro lorsque vient compléter l'aide d'une lecture est d'arrêter le rappel comme l'audio de mon application si:
-(void) playbackIsStoppingForPlayer:(MQAudioPlayer*)audioPlayer
{
NSLog(@"Releasing player");
[audioPlayer release];
[self toggleCrossfadeOn:0];
}
Dans mon application de production ce code exact fonctionne comme prévu, ce qui provoque l'iPod à disparaître juste avant de jouer mon audio application puis disparaître lorsque le retour se termine la lecture audio. Dans un nouveau projet que j'ai récemment commencé, j'ai un comportement différent. L'audio de l'iPod s'estompe et ne retombe jamais. Dans mon application de production, j'utilise l'AVAudioPlayer dans lequel, dans ma nouvelle application, j'ai écrit un lecteur audio personnalisé qui utilise des files d'attente audio. Quelqu'un pourrait m'aider à comprendre les différences et comment utiliser correctement cette API?