如何找到iOS的蓝牙蓝牙免提音频设备驱动

博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)iOS蓝牙开发 蓝牙调试工具 蓝牙库 第三方库
查看次数:1648
下载次数:128
上传时间:
大小:365 B
https://github.com/chenliangloveyou/EasyBluetooth github上的代码会及时更新
如果觉得还行,建议下载github上的代码。如果喜欢,希望能给个start。
一款iOS BLE蓝牙调试工具,非常简单容易,也可以作为一个蓝牙库,快速集成和开发。 可以两步搞定蓝牙开发操作。 第一步连接设备,第二步特征读写数据。
(第一步)参数配置
参数讲解(如下参数都可不传)
note:如果传入线程,那么返回数据的UI操作需要放到主线程上
@property (nonatomic,strong)dispatch_queue_t managerQ
CBCentralManagerOptionShowPowerAlertKey
默认为NO,系统当蓝牙关闭时是否弹出一个警告框
CBCentralManagerOptionRestoreIdentifierKey 系统被杀死,重新恢复centermanager的ID
@property (nonatomic,strong)NSDictionary *managerD
CBCentralManagerScanOptionAllowDuplicatesKey
默认为NO,过滤功能是否启用,每次寻找都会合并相同的peripheral。如果设备YES的话每次都能接受到来自peripherals的广播包数据。
CBCentralManagerScanOptionSolicitedServiceUUIDsKey
想要扫描的服务的UUID,以一个数组的形式存在。扫描的时候只会扫描到包含这些UUID的设备。
@property (nonatomic,strong)NSDictionary *scanO
连接设备所需的服务.
@property (nonatomic,strong)NSArray *scanServiceA
CBConnectPeripheralOptionNotifyOnConnectionKey
默认为NO,APP被挂起时,这时如果连接到peripheral时,是否要给APP一个提示框。
CBConnectPeripheralOptionNotifyOnDisconnectionKey 默认为NO,APP被挂起时,恰好在这个时候断开连接,要不要给APP一个断开提示。
CBConnectPeripheralOptionNotifyOnNotificationKey
默认为NO,APP被挂起时,是否接受到所有的来自peripheral的包都要弹出提示框。
@property (nonatomic,strong)NSDictionary *connectO//连接设备时所带的条件`
获取单例,并赋值配置信息
(第二步)扫描并连接设备
场景1,扫描设备名称后直接连接设备
场景2,扫描设备后选择一些符合规则的设备后连接
场景3,需要保存设备,然后直接连接单个设备
1,先扫描符合规则的设备 选择一个保存设备的uuid到本地
2,取出上一步中保存的uuid直接连接
场景4,单纯的操作一些设备信息,可以采用一行代码
场景5,需要连接多个设备
(第三步)读写操作
建议此方法放在读写操作的前面
您还没有登录!请或
下载过该代码的还下载了
本周热门下载
&2018 Chukong Technologies,Inc.
京公网安备89查看:2461|回复:4
最近项目需求,使用蓝牙传输语音,并且集成到已有的直播SDK中。
汗本人对蓝牙一知半解,加油研究吧。
先将手机连上蓝牙音箱,然后开启手机本地的录制视频,发现蓝牙的声音并不能被录到视频中,汗,看来苹果自带的摄像机并没有把蓝牙集成进来,好吧我们能做的只有,从苹果相机获取视频,从可识别蓝牙的麦克风中,获取蓝牙音频。
废话有点多直接上代码了。
AVAudioSession中很好的集成了蓝牙获取
使用AVAudioSession可以获取蓝牙音频。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth&&error:&error];
使用AudioQueue可以获取音频流。
这里做下解释,AVAudioSession 只是将音频的输入设备指向了蓝牙而已,AudioQueue 用于从麦克风获取声音。
typedef struct AQCallbackStruct
& & AudioStreamBasicDescription mDataF
& & AudioQueueRef& && && && && &
& & AudioQueueBufferRef& && && &mBuffers[kNumberBuffers];
& & AudioFileID& && && && && &&&outputF
& & unsigned long& && && && && &frameS
& & long long& && && && && && & recP
& & int& && && && && && && && &
} AQCallbackS
// Audio Settings
#define kNumberBuffers& && &3
#define kSamplingRate& && & 44100
#define t_sample& && && && & SInt16
#define kNumberChannels& &&&1
#define kBitsPerChannels& & (sizeof(t_sample) * 8)
#define kBytesPerFrame& && &(kNumberChannels * sizeof(t_sample))
//#define kFrameSize& && && & (kSamplingRate * sizeof(t_sample))
#define kFrameSize& && && & 4096
#define QUEUE_BUFFER_SIZE&&2//队列缓冲个数
#define EVERY_READ_LENGTH&&10240 //每次从文件读取的长度
#define MIN_SIZE_PER_FRAME 10240 //每侦最小数据长度
@property (nonatomic, assign) AQCallbackS
- (void) startGetAudio
& & aqc.mDataFormat.mSampleRate = kSamplingR
& & aqc.mDataFormat.mFormatID = kAudioFormatLinearPCM;
& & aqc.mDataFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger |kLinearPCMFormatFlagIsP
& & aqc.mDataFormat.mFramesPerPacket = 1;
& & aqc.mDataFormat.mChannelsPerFrame = kNumberC
& & aqc.mDataFormat.mBitsPerChannel = kBitsPerC
& & aqc.mDataFormat.mBytesPerPacket = kBytesPerF
& & aqc.mDataFormat.mBytesPerFrame = kBytesPerF
& & aqc.frameSize = kFrameS
& & AudioQueueNewInput(&aqc.mDataFormat, AQInputCallback, (__bridge void *)(self), NULL, kCFRunLoopCommonModes, 0,&&&aqc.queue);
& & //& && &&&AudioQueueNewInput(&aqc.mDataFormat, AQInputCallback, (__bridge void *)(self), NULL, kCFRunLoopCommonModes,0, &aqc.queue);
& & //& && &&&AudioQueueNewInput(&aqc.mDataFormat, AQInputCallback, (__bridge void *)(self), NULL, kCFRunLoopCommonModes, 0,&&&aqc.queue);
& & for (int i=0;i&kNumberBi++)
& && &&&AudioQueueAllocateBuffer(aqc.queue, aqc.frameSize, &aqc.mBuffers);
& && &&&AudioQueueEnqueueBuffer(aqc.queue, aqc.mBuffers, 0, NULL);
& & aqc.recPtr = 0;
& & aqc.run = 1;
& & audioDataIndex = 0;
& & AudioQueueStart(aqc.queue, NULL);
回调方法AQInputCallback中可以获取到音频数据 inBuffer
static void AQInputCallback (void& && && && && && & * inUserData,
& && && && && && && && && &&&AudioQueueRef& && && & inAudioQueue,
& && && && && && && && && &&&AudioQueueBufferRef& & inBuffer,
& && && && && && && && && &&&const AudioTimeStamp& &* inStartTime,
& && && && && && && && && &&&unsigned long& && && & inNumPackets,
& && && && && && && && && &&&const AudioStreamPacketDescription * inPacketDesc)
& & NSLog(@&AQInputCallback&);
& & Record * engine = (__bridge Record *) inUserD
& & if (inNumPackets & 0)
& && &&&[engine processAudioBuffer:inBuffer withQueue:inAudioQueue];
& & if (engine.aqc.run)
& && &&&AudioQueueEnqueueBuffer(engine.aqc.queue, inBuffer, 0, NULL);
(129.61 KB)
17:26, 下载次数: 70
先占了沙发吧,这里只有获取音频以及针对音频转码成aac并且保存到本地生成本地文件的代码。
那直播视频 是用的什么做的啊&&? 苹果的播放器吗&&? 没做加密处理吗 ?
那直播视频 是用的什么做的啊&&? 苹果的播放器吗&&? 没做加密处理吗 ?
日,在爱创课堂学习JavaScript第三天,每天都是在晚上学习JavaScript的基础知识,虽然总的时间才几个小时 ,但是这几个小时中,我学到了以前我很多不懂得知识,张容铭老师的讲解非常详细,正是我所希望的讲解方法,毕竟很多人对编程中的很多东西都是不认识的,比如说英文单词,张荣铭老师都会做一下讲解,这让我听着很舒服,比平常在教室中听老师讲课精彩得多了,也非常容易懂,能够在众多的学习网中接触到张老师的讲解,也挺幸运的,虽然现在没有能力去看他的收费项目,但是这些基础知识也弥补了我很多不懂得疑问。
如果大家有兴趣不妨去看一下。比如:爱创课堂王鹏飞老师的相关前端开发基础视频教学和张荣铭WEB前端技术基础视频教学。iPhone、iPad 和 iPod touch 支持最新版本 iOS 中的多个蓝牙描述文件。您可以了解不同设备对于蓝牙描述文件支持的差异。
本文章已经归档,因此 Apple 将不再对其进行更新。
下表针对 列出了设备所支持的蓝牙描述文件。
免提描述文件 (HFP 1.6)
电话簿访问描述文件 (PBAP)
高级音频分发描述文件 (A2DP)
音频/视频遥控描述文件 (AVRCP 1.4)
个人区域网络描述文件 (PAN)
人机接口设备描述文件 (HID)
消息访问描述文件 (MAP)
iPhone 4 及更新机型
iPhone 3GS
iPhone 原始机型
iPad 2 及更新机型
iPad(第 1 代)
iPod touch
(第 4 代及更新机型)
iPod touch
(第 2 代和第 3 代)
其他信息注:iOS 要求远程蓝牙设备支持加密连接。在 iOS 设备和蓝牙设备之间建立配对记录时,会在两台设备之间设置加密。
免提描述文件 (HFP 1.6)免提描述文件允许蓝牙耳机和车载免提套件与移动电话进行通信。
电话簿访问描述文件 (PBAP)电话簿访问描述文件允许 iPhone 和其他蓝牙设备互换电话薄对象。车载套件和移动电话使用描述文件来执行以下操作:
允许车载套件显示来电者姓名
允许车载套件同步电话簿,以便用户可通过车载显示屏拨打电话
高级音频分发描述文件 (A2DP)高级音频分发描述文件允许通过蓝牙连接将高品质音频(立体声或单声道)从一部设备流化到另一部设备。使用此文件能够以无线方式将音乐从 iOS 播放到无线耳机或兼容的车载音频系统。
音频/视频遥控描述文件 (AVRCP 1.4)音频/视频遥控描述文件允许通过兼容设备(通常是使用 A2DP 描述文件的蓝牙设备)远程遥控 iOS 设备上的回放功能。最新版本的 iOS 支持以下命令:
下一个曲目
上一个曲目
个人区域网络描述文件 (PAN)个人区域网络描述文件通过蓝牙提供网络连接。借助 iOS,这常用于 iPhone 上的多人游戏和个人热点。点对点连接。
装有 iOS 4.3 或更高版本的 iPod touch 和 iPad 支持通过 PAN 从装有 iOS 4.2.6 或更高版本的 iPhone 进行网络共享。
人机接口设备描述文件 (HID)人机接口设备描述文件允许 iOS 与蓝牙键盘进行通信。
消息访问描述文件 (MAP)
消息访问描述文件允许各设备交换消息。最常用于汽车免提功能。

我要回帖

更多关于 蓝牙免提音频设备驱动 的文章

 

随机推荐