首页 APP开发 正文

蓝牙app开发专业术语(安卓蓝牙app开发)

APP开发 1652
今天给各位分享蓝牙app开发专业术语的知识,其中也会对安卓蓝牙app开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、什么是"蓝牙"(手机中专业术语中常常提到)

今天给各位分享蓝牙app开发专业术语的知识,其中也会对安卓蓝牙app开发进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

什么是"蓝牙"(手机中专业术语中常常提到)

什么是蓝牙

一、蓝牙名字的由来

蓝牙的名字来源于10世纪丹麦国王Harald Blatand-英译为Harold Bluetooth。在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨论后,有些人认为用Blatand国王的名字命名再合适不过了。Blatand国王将现在的挪威,瑞典和丹麦统一起来;就如同这项即将面世的技术,技术将被定义为允许不同工业领域之间的协调工作,例如计算,手机和汽车行业之间的工作。名字于是就这么定下来了。

在丹麦的Jelling城,在教堂里立着一块纪念碑,这块纪念碑就是为了纪念Blatand国王的功绩和他的父亲,丹麦的第一个国王“Gorm the Old”而立的。有趣的是,这块特别的石头在Harald和他的儿子Sven Forkbeard之间的一次战争后就遗失了,近600年里没有人见过这块石头。Sven获胜了(并且把他父亲流放了),因为这块刻着古代北欧文字的石头是Harald的荣耀,所以Sven埋葬了它。直到最近几年,一个农夫对他农场里的这个大土堆产生了好奇,才终于发现了这块石头。

这个标志最初是在商业协会宣布成立的时候由Scandinavian公司设计的。标志保留了它名字的传统特色,包含了古北欧字母“H”,看上去非常类似一个星号和一个“B”,在标志上仔细看两者都能看到。

二、蓝牙技术介绍

“蓝牙”(Bluetooth)原是十世纪统一了丹麦的国王的名字,现取其“统一”的含义,用来命名意在统一无线局域网通讯标准的蓝牙技术。蓝牙技术是爱立信、IBM等5家公司在1998年联合推出的一项无线网络技术。随后成立的蓝牙技术特殊兴趣组织(SIG)来负责该技术的开发和技术协议的制定,如今全世界已有1800多家公司加盟该组织,最近微软公司也正式加盟并成为SIG组织的领导成员之一。

蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。它的传输距离为10cm~10m,如果增加功率或是加上某些外设便可达到100m的传输距离。它采用2.4GHz ISM频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD和基带协议。TDMA每时隙为0.625μs,基带符合速率为1Mb/s。蓝牙支持64kb/s实时语音传输和数据传输,语音编码为CVSD,发射功率分别为1mW、2.5mW和100mW,并使用全球统一的48比特的设备识别码。由于蓝牙采用无线接口来代替有线电缆连接,具有很强的移植性,并且适用于多种场合,加上该技术功耗低、对人体危害小,而且应用简单、容易实现,所以易于推广。

蓝牙技术

SIG组织于1999年7月26日推出了蓝牙技术规范1.0版本。蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。 底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。无线跳频层通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需要满足的条件。基带负责跳频以及蓝牙数据和信息帧的传输。链路管理负责连接、建立和拆除链路并进行安全控制。

蓝牙技术结合了电路交换与分组交换的特点,可以进行异步数据通信,可以支持多达3个同时进行的同步话音信道,还可以使用一个信道同时传送异步数据和同步话音。每个话音信道支持64kb/秒的同步话音链路。异步信道可以支持一端最大速率为721kb/秒、另一端速率为57.6kb/秒的不对称连接,也可以支持43.2kb/秒的对称连接。

中间协议层包括逻辑链路控制和适应协议、服务发现协议、串口仿真协议和电话通信协议。逻辑链路控制和适应协议具有完成数据拆装、控制服务质量和复用协议的功能,该层协议是其它各层协议实现的基础。服务发现协议层为上层应用程序提供一种机制来发现网络中可用的服务及其特性。串口仿真协议层具有仿真9针RS232串口的功能。电话通信协议层则提供蓝牙设备间话音和数据的呼叫控制指令。

主机控制接口层(HCI)是蓝牙协议中软硬件之间的接口,它提供了一个调用基带、链路管理、状态和控制寄存器等硬件的统一命令接口。蓝牙设备之间进行通信时,HCI以上的协议软件实体在主机上运行,而HCI以下的功能由蓝牙设备来完成,二者之间通过一个对两端透明的传输层进行交互。

在蓝牙协议栈的最上部是各种高层应用框架。其中较典型的有拨号网络、耳机、局域网访问、文件传输等,它们分别对应一种应用模式。各种应用程序可以通过各自对应的应用模式实现无线通信。拨号网络应用可通过仿真串口访问微微网(Piconet),数据设备也可由此接入传统的局域网;用户可以通过协议栈中的Audio(音频)层在手机和耳塞中实现音频流的无线传输;多台PC或笔记本电脑之间不需要任何连线,就能快速、灵活地进行文件传输和共享信息,多台设备也可由此实现同步操作。

总之,整个蓝牙协议结构简单,使用重传机制来保证链路的可靠性,在基带、链路管理和应用层中还可实行分级的多种安全机制,并且通过跳频技术可以消除网络环境中来自其它无线设备的干扰。

应用前景

蓝牙技术的应用范围相当广泛,可以广泛应用于局域网络中各类数据及语音设备,如PC、拨号网络、笔记本电脑、打印机、传真机、数码相机、移动电话和高品质耳机等,蓝牙的无线通讯方式将上述设备连成一个微微网(Piconet),多个微微网之间也可以进行互连接,从而实现各类设备之间随时随地进行通信。应用蓝牙技术的典型环境有无线办公环境、汽车工业、信息家电、医疗设备以及学校教育和工厂自动控制等。目前,蓝牙的初期产品已经问世,一些芯片厂商已经开始着手改进具有蓝牙功能的芯片。与此同时,一些颇具实力的软件公司或者推出自已的协议栈软件,或者与芯片厂商合作推出蓝牙技术实现的具体方案。尽管如此,蓝牙技术要真正普及开来还需要解决以下几个问题:首先要降低成本;其次要实现方便、实用,并真正给人们带来实惠和好处;第三要安全、稳定、可靠地进行工作;第四要尽快出台一个有权威的国际标准。一旦上述问题被解决,蓝牙将迅速改变人们的生活与工作方式,并大大提高人们的生活质量。

参考资料:

蓝牙开发与应用的困惑?

蓝牙是一套通讯标准,你上面说的配置、协议都是蓝牙协议的一部分,协议内部的术语而已,某些部分能改某些不能,

简单来说,如果你拿到一个芯片,芯片厂商会给你一些软件固件,这些固件里面就实现了蓝牙相关的(你上面说的)配置和协议等,如果你只是做蓝牙应用的话,通常只需要按照厂商给的资料调用一些接口就行了,不要去改动内部的东西。

至于你说的“蓝牙配置”,简单解释就是不同的“配置”提供不同的功能,而且不同的蓝牙设备应用场合、资源都不一样,所以对于一个具体的蓝牙设备来说,可以有某些“配置”,可以去掉某些“配置”(当然有些配置是强制的,如gap),总之这是为了让更多的设备支持蓝牙而做的模块化设计而已

iOS蓝牙开发相关知识点和注意事项

总结一下蓝牙开发相关的知识点和注意事项,做个笔记,也希望你们能少踩坑

(公司部分蓝牙项目为混编项目,蓝牙相关处理均采用了Objective-C,故本文🌰均采用OC,Swift处理相同)

蓝牙4.0包含两个蓝牙标准,它是一个是 双模 的标准,它包含 传统蓝牙部分(也称经典蓝牙) 和 低功耗蓝牙部分(BLE) , 二者适用于不同的应用场景和应用条件。他们的特点如下

所以蓝牙4.0是集成了传统蓝牙和低功耗蓝牙两个标准的,并不只是低功耗蓝牙

蓝牙4.0支持两种部署方式: 双模式 和 单模式 ,双模同时支持经典蓝牙和低功耗蓝牙,而单模则只支持其中一种。

二者更多细节详见: 传统蓝牙和低功耗蓝牙的区别

iOS中蓝牙相关功能都封装进了 CoreBluetooth 类中,其中有几个常见的参数和概念

具体API参考 CoreBluetooth蓝牙开发

保存到数组中的设备可通过 UUID 来进行区分。从 iOS7之后苹果不提供外设的mac地址,外设的唯一标识换成了由mac封装加密后的UUID,需要注意的是不同的手机获取同一个外设的UUID是不同的,所以在不同手机之间UUID不是唯一的,但在本机上可以作为唯一标识(特殊情况手机刷机后也会改变UUID)。

如何获取Mac地址

一般使用场景是根据Mac地址区分某个外设

注意点:

写入数据时可能会遇到需要分包发送的情况,我们可以通过下面的API或许当前特征支持的最大的单条写入长度

maxLength 一般取决于蓝牙模块内部接收 缓冲区 的大小,很多硬件设备这个缓冲区的大小是 20 字节, 这个大小也和特征的写入权限有关,像具有写入权限 withResponse 类的特征其大小一般为 512 字节,当然这些都是取决于设备测的设置;

当我们单次发送的数据字节长度大于 maxLength 时,我们就需要采用分包的方式来发送数据了,

分包发送的逻辑类似于下面

这边延时主要是设备侧的接收模块接收数据以及处理能力有限

外围设备测和中心设备(大部分情况下是手机)保持蓝牙连接的状态下,如果长时间不产生交互,蓝牙就会断开,所以为了保持两者持续的连接状态,需要做保活处理,也就是需要持续的发送心跳包(watchdog)。相应的处理是使用一个定时器定时向设备侧发送符合设备协议格式的心跳包。

断开连接很简单,只需要调用 [self.centralManager cancelPeripheralConnection:peripheral] 传入需要断开连接的设备对象就行了。断开连接时会自动调用 centralManager:didDisconnectPeripheral:error: 代理方法。

按照之前的惯例,当error为nil时表示断开成功,error不为nil时断开失败。这种理解是错误的。

当你调用 cancelPeripheralConnection: 方法(主动断开)断开连接时error为nil ; 没有调用这个方法(异常断开)而断开时error返回的是异常断开的原因。也可以理解为主动调用断开连接方法一定会断开

接下来就是断开重连的问题了,对蓝牙功能进行封装时肯定少不了断开重连。首先断开时可通过上面的代理方法的error是否为nil判断是否是异常断开,一般情况下异常断开时是需要重连的

原因就是当设备断开连接后 peripheral.services 为nil了,当然 service.characteristics 也是nil,所以需要在断开连接时把保存这个设备对应的服务和特征全部清除,然后在连接成功时重新过一遍发现服务和发现特征的流程就好了。

iOS7 开始,Apple加入了Beacon围栏检测的API, ( iBeacon-维基百科 ), 其工作方式是,配备有低功耗蓝牙(BLE)通信功能的设备使用 BLE 技术向周围发送自己特有的 ID,接收到该 ID 的应用软件会根据该 ID 采取一些行动。比如,在店铺里设置 iBeacon 通信模块的话,便可让 iPhone 和 iPad 上运行一资讯告知服务器,或者由服务器向顾客发送折扣券及进店积分, 或者公司的手机打卡,只要手机靠近打卡器一定范围,手机测就向打开器发送打卡信息,从而自动打卡。这种场景还有很多。 其中一个最重要的功能就是App的唤醒功能(杀死后也能唤醒)

举一个我们的例子,我们的产品业务场景就是在进入车辆以后,需要使用蓝牙连接我们的后装车载设备以采集车辆信息和驾驶行为行程等,这里有一个问题就是在App被杀死的情况下如何唤醒App, 因为不可能要求用户每次都主动去打开App,这样体验太差。我们的做法是通过iBeacon,当我们的车辆点火以后,设备测通电,发出 iBeacon广播 ,App实现监听iBeacon相关功能后就可以唤醒我们App,然后在相应的回调的处理一些事情,比如通过蓝牙连接设备。这里的前提条件是我们的硬件设备测包含iBeacon模块,具有iBeacon功能,而且对iBeacon的广播频率也有一定的要求,长了可能唤醒的功能会不稳定,官方建议的好像是100ms,频率超高越耗电,但可以让手机或其它监听设备越快地发现iBeacon。标准的BLE广播距离是100m,这使Beacon在室内位置跟踪场景下的效果更理想。

关于iBeacon更多的使用及介绍请参考

苹果核 - iOS端近场围栏检测(一) ——iBeacon

iBeacon技术初探

蓝牙app开发专业术语的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于安卓蓝牙app开发、蓝牙app开发专业术语的信息别忘了在本站进行查找喔。

扫码二维码