在我的应用程序中,我使用了play and record类别,也就是:
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); 然而,我真正想要的是通过连接的蓝牙扬声器输出音频。例如,我有一个通过蓝牙连接的扬声器。我可以使用原生音乐应用程序通过它播放音乐。然而,在我的应用程序中,当使用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。有什么想法吗?
发布于 2014-09-12 00:12:44
所以,首先你需要知道它是什么类型的蓝牙设备。无论是BluetoothHFP(input &output(仅限输出)、BluetoothA2DP(output (仅限)还是BluetoothLE (仅限输出)。如果设备仅用于输出,您将无法连接和路由kAudioSessionCategory_PlayAndRecord类别的音频。您可以尝试将类别设置为kAudioSessionCategory_PlayBack,看看是否有效。
一周前我遇到了同样的问题。我的应用程序同时需要输入和输出,因此我必须将类别设置为kAudioSessionCategory_PlayAndRecord.因此,我计划根据不同类型的蓝牙设备来更改会话类别。
https://stackoverflow.com/questions/10841065
复制相似问题