私のアプリでは、再生と記録のカテゴリ別名を使用しています。
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
CheckError( AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof (sessionCategory),
&sessionCategory), "Couldn't set audio category");
アプリでは、これを設定するまで、再生されるオーディオは最初にレシーバーを介して出力されます。
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);
ただし、実際に必要なのは、接続されたBluetoothスピーカーからオーディオを出力することです。たとえば、Bluetooth経由で接続するスピーカーがあります。ネイティブミュージックアプリで音楽を再生できます。ただし、私のアプリでは、playandrecord カテゴリを使用すると、デバイスでのみ再生されます。私が試してみました:
UInt32 allowBluetoothInput = 1;
OSStatus stat = AudioSessionSetProperty (
kAudioSessionProperty_OverrideCategoryEnableBluetoothInput,
sizeof (allowBluetoothInput),
&allowBluetoothInput
);
としても:
CFStringRef audioRouteOverride = kAudioSessionOutputRoute_BluetoothHFP;
OSStatus s = AudioSessionSetProperty (kAudioSessionProperty_OutputDestination,
sizeof(audioRouteOverride),&audioRouteOverride);
運がない。これは簡単なプロパティ セットのように思えますが、Idk. 何か案は?