2009-05-16 12 views
1

J'utilise la session audio suivante dans mon délégué app:iPhone - AVAudioPlayer, musique kAudioSessionCategory_AmbientSound et iPod

 
    AudioSessionInitialize(NULL, NULL, NULL, self); 
    UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; 
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 

    AudioSessionSetActive(true); 

Je veux que l'utilisateur de pouvoir jouer de la musique iPod et utiliser mon application en même temps , ce qui est génial et fonctionne bien ... mon application s'incline et permet à la musique de l'iPod de jouer. Le problème que j'ai est ... après que l'utilisateur quitte mon application, entre dans l'application iPod et fait une pause, quand ils reviennent dans mon application, aucun de mes sons ne fonctionne. C'est comme si elle pensait toujours que la session iPod est active, même si elle ne joue pas de musique!

Je veux simplement simplement réactiver ma session audio après que la musique de l'iPod a été mise en pause. En l'état, après avoir joué de la musique via l'application iPod, je suis totalement incapable de récupérer les sons de mon application à moins que je ne recompile. :(Quelqu'un a des idées

Edit:? Ai oublié de mentionner que je utilise une implémentation de base de la classe AVAudioPlayer pour jouer l'audio de mon application

Merci

Répondre

7

Ok juste pensé que je.! garder tout le monde a écrit dans le cas où il aide quelqu'un d'autre ... ce que je faisais était probablement genre de hackish, mais semble faire l'affaire!

 

    UInt32 isPlaying; 
    UInt32 propertySize = sizeof(isPlaying); 
    OSStatus status; 

    // check to see if their iPod music is playing 
    status = AudioSessionGetProperty(kAudioSessionProperty_OtherAudioIsPlaying, &propertySize, &isPlaying); 

    // set the session category accordingly 
    if(!isPlaying) { 
     NSLog(@"...SoloAmbientSound"); 
     UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound; 
     AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 
    }else{ 
     NSLog(@"...AmbientSound"); 
     UInt32 sessionCategory = kAudioSessionCategory_AmbientSound; 
     AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 
    } 

+2

en ce moment j'arrivé de trouver ce clip vidéo officiel d'Apple qui décrit exactement la même chose que je fais! Bon à savoir! http://developer.apple.com/videos/iphone/# video-advanced-audiodev – taber