iOS设置蓝牙外设播放音频
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS设置蓝牙外设播放音频相关的知识,希望对你有一定的参考价值。
参考技术A 首先,你需要明确地通知AVAudiosession你允许声音可以被输出到蓝牙设备,通过setCategory设置
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionAllowBluetoothA2DP
error:&error];
通过增加AVAudioSessionCategoryOptionAllowBluetoothA2DP, 我们允许iOS通过蓝牙音频设备来播放我们App的声音。
接下来是设置蓝牙设备作为音频播放
1.设置为蓝牙外设播放
NSArray * bluetoothRoutes = @[AVAudioSessionPortBluetoothA2DP, AVAudioSessionPortBluetoothLE,
AVAudioSessionPortBluetoothHFP];
NSArray * routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription blueRoute;
for (AVAudioSessionPortDescription route in bluetoothRoutes)
if ([types containsObject:route.portType])
blueRoute = route;
NSError *error;
if (blueRoute)
BOOL changeResult = [[AVAudioSession sharedInstance] setPreferredInput:bluetoothPort
error:&audioError];
2.设置耳机
NSArray * headsetRoutes = @[AVAudioSessionPortBuiltInMic];
NSArray * routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription headsetRoute;
for (AVAudioSessionPortDescription route in headsetRoutes)
if ([types containsObject:route.portType])
headsetRoute = route;
NSError *error;
if (headsetRoute)
BOOL changeResult = [[AVAudioSession sharedInstance] setPreferredInput:headsetRoute
error:&audioError];
3.设置麦克风
NSArray * speakerRoutes = @[AVAudioSessionPortBuiltInSpeaker];
AVAudioSessionPortBluetoothHFP];
NSArray * routes = [[AVAudioSession sharedInstance] availableInputs];
AVAudioSessionPortDescription speakerRoute;
for (AVAudioSessionPortDescription route in speakerRoutes)
if ([types containsObject:route.portType])
speakerRoute = route;
NSError *error;
if (speakerRoute)
BOOL changeResult = [[AVAudioSession sharedInstance] setPreferredInput:speakerRoute
error:&audioError];
iOS 中针对airplay、蓝牙和相关技术的近似音频延迟
【中文标题】iOS 中针对airplay、蓝牙和相关技术的近似音频延迟【英文标题】:Approximating audio latency in iOS for airplay, bluetooth and related technologies 【发布时间】:2016-07-07 22:09:50 【问题描述】:在 iOS 上播放到蓝牙(或其他设备,如 airplay)时,是否有确定音频延迟的方法?
我已经搜索并找到了一些东西。例如,advanced audio distribution spec 多次提到“延迟”报告,但我不清楚在更一般的音频播放到某些设备的情况下如何从 iOS 访问它。
如果有一种方法,iOS 将使用该方法来播放视频,同时音频和视频同步播放,但它似乎并不这样做。但是,我确实看到一些其他系统能够对此进行补偿(例如,显然 android YouTube 播放器可以补偿:Detect or Approximate Bluetooth Latency on Android (Audio Playback))
【问题讨论】:
我认为延迟是随机的。 一些编解码器专为低延迟 BT 使用而设计。在测试中,我的一些设备的延迟明显且始终比其他设备长。CoreBluetooth.framework
用于蓝牙低功耗(仅)。 BLE 不适合音频。那么标签是否正确?
@larme 我不确定。这是问题的合理部分(因为我没有意识到这一点),合理的答案可能包括您的评论——我不确定 *** 的政策是什么。
【参考方案1】:
我自己也遇到过这个问题。 AvAudioSession 提供 outputLatency 的属性 以及inputLatency。当我连接到一副蓝牙耳机与 iPhone 麦克风和扬声器时,我确实看到了这些值的差异,尽管我无法说出这些数字有多准确。
【讨论】:
以上是关于iOS设置蓝牙外设播放音频的主要内容,如果未能解决你的问题,请参考以下文章