Using JUCE, I can only select bluetooth as an option from the MPVolumeView when the audio inputs are disabled. How do I get full duplex operation (I don’t mind if the sample rate drops to 8kHz).
Fixed it. There is a small error in the juce iOS code. You need to set kAudioSessionProperty_OverrideCategoryEnableBluetoothInput after the kAudioSessionCategory_PlayAndRecord has been set, otherwise it will not register . .
UInt32 audioCategory = kAudioSessionCategory_MediaPlayback;
if (numInputChannels > 0 && audioInputIsAvailable)
{
audioCategory = kAudioSessionCategory_PlayAndRecord;
// UInt32 allowBluetoothInput = 1;
// AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput,
// sizeof (allowBluetoothInput), &allowBluetoothInput);
}
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (audioCategory), &audioCategory);
if (numInputChannels > 0 && audioInputIsAvailable)
{
UInt32 allowBluetoothInput = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput,
sizeof (allowBluetoothInput), &allowBluetoothInput);
}
Ah! Thanks so much for spotting that! I’ll get it sorted out…
The problem with this is that the deviceManager will not fire a change message when bluetooth is selected, and so I cannot see a way of getting a notification about the sample rate change.
One option is to fire off an audioDeviceError on routing change to stop the audio device, but this blows a bit.
Any suggestions? I see a similar thread talking about external rate changes in this section of the forum.