Gedalia
Gedalia

Reputation: 453

iPod mini controls disabled when certain audio session parameters are set

I'm working on a music visualizer for the iPhone/iPad, under iOS 3 you could double-tap the home button and get iPod controls. With the latest version 4.1-4.2, these controls are now grayed out when the home button is pressed. I found a similar complaint at http://openradar.appspot.com/8696944, although there wasn't a solution.

I have the base sound category set to kAudioSessionCategory_PlayAndRecord, with kAudioSessionProperty_OverrideCategoryMixWithOthers set to true. (Just to add more fun to the problem I'm using OpenAL for some sound effects.)

I have tried setting the category back to ambient when the application goes into the background. but either it happens too late or it's not sufficient.

Upvotes: 20

Views: 810

Answers (3)

Gedalia
Gedalia

Reputation: 453

Well I've given up.. I'm now coding my own UI based off of the AddMusic example code http://developer.apple.com/library/ios/#samplecode/AddMusic/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40008845-Intro-DontLinkElementID_2

I'm happy to report that play and stop via the MPMusicPlayerController doesn't seem to conflict with the play and record session settings. And building your own play/pause/FF seems to be fairly straightforward

p.s. I've also discovered that this Music Visualizer app: http://itunes.apple.com/us/app/music-visualizer/id337651694?mt=8 is just this addMusic sample uploaded and this guy is charging 2 bucks for it.. It's got awful reviews.. but it still seems wrong that it's on the app store.

Upvotes: 1

mrr
mrr

Reputation: 1233

My iPod touch 4G is running iOS 4.2, and it doesn't have this problem. I would attempt to contact Apple.

Upvotes: 0

Jordan Smith
Jordan Smith

Reputation: 10378

Here's where I've got to so far:

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

devicetwo = alcOpenDevice(NULL);
contexttwo = alcCreateContext(devicetwo, 0);

    //The following two lines are the lines that gray out iPod controls:

alcMakeContextCurrent(contexttwo); 
AudioSessionSetActive(YES);

The iPod controls remain grayed out even once the app quits... And removing the two culprit lines of code result in no sound being produced in the app.

Upvotes: 1

Related Questions