IOS版APP下载新增一个功能,需要哪些核心技术

苹果手机iOS触感反馈,让用户怦然心动核心技术原来是这样
触觉反馈是种怎样的体验?估计机械键盘爱好者是再清楚不过了。随着全面屏手机的全面来袭,触感反馈已成为继视觉、听觉之后又一种重要的反馈形式。
早在2012年,苹果的一项专利便指出:未来的技术将让触摸屏摸起来可以体验到光滑、粗糙或是其他物理实体触感,让触摸显示屏给用户带来更多沉浸和回应体验的乐趣。
未来设备中一组或多组的形变元件,如压电元件等,可能被用来驱动显示屏表面。这些元件还可能被用来感受显示屏表明的触觉交互或刺激。其嵌入式的触觉体系将向用户提供触觉交互。
同时,苹果的解决方案不仅仅是简单的震动,而且还会提供形变,从而让平整的表面出现轮廓。通过这种方式,iPhone和iPad的触摸屏可能会在物理上发生移动,允许用户在触摸显示屏时在指尖上感觉到特定的纹理。
由此可见苹果要将硬件打造成更加有血有肉的多感官体验设备,而不仅仅是一个可供点击的触摸屏。而这里所谓的“血”、“肉”,也就是iPhone一直为我们称叹的“系统”和“硬件”的完美组合。
随着人机交互体验的升级,人们对触觉反馈的要求越来越高,而触觉反馈中“反馈”是极其重要的。它包括了对触觉的精确感知以及多样化的反馈,仅仅震动反馈就包括了长时间震动、间断震动、短促震动、不同强度震动等多种类型。这样历史悠久的ERM 偏心转子马达力不从心,直呼“臣妾做不到”。
TapticEngine是苹果推出的全新震动模块,最早出现在苹果第一款穿戴式设备AppleWatch中作为设备通知系统的中继,依此来强化声音提醒,并给以用户丰富的感官体验。苹果iPhone6s和iPhone6sPlus也内置了TapticEngine,性能上有了进一步升级。
这颗全新的震动模块经过特殊设计,能在短时间内达到震动的最佳状态。在1个振动周期内就达到最大输出,而普通振动模块将需要 10 次或者更多次循环才能达到。所以,普通马达的振动听起来永远都是“嗡-” “嗡—” “嗡——”。
Taptic Engine 除了可以产生前述效果之外,更可带来干脆利落的超短振动“哒!”“嘎哒!”滴滴哒”。
线性马达又分为三种:直线型、圆型及方型,分别为直线来回运动、 z 轴(上下)运动和 x 轴 y 轴运动。
传统的手机震动器是马达带着偏振片一起转动,从而产生震动。而TapticEngine是直线电机驱动带着震块做直线往返运动。
下图是历代iPhone所用的ERM震动马达,转动后能产生全方位的震颤体验。施加正电压电机旋转,施加负电压电机制动。这种执行器的特色在于成本低,而且历史悠久。
线性Taptic Engine震动马达相比偏心转子马达的优势还是相当明显,一方面是弹簧+磁铁的组合使得功耗降低很多,并且响应速度更快且震动组合方式更为多样自由,更重要的是震动起来更加优雅、干脆清爽。
当年iPhone 6s之所以电池容量相比上一代iPhone 6还缩水95mAh,原因就在于Taptic Engine模块占用了电池仓的空间。iPhone 7时苹果取消了 3.5mm 的耳机孔,让内部腾出了一块不小的空间。但他们并没有选择用它放入更大的电池,而是塞进了一块更大的 Taptic Engine。
一起来感受下Taptic Engine与旧iPhone振动马达区别对比视频
自iPhone6S/6SP 开始,苹果为我们开启了界面第三个维度,也就是所谓的3D Touch。通过按压屏幕进行交互,同时手机会通过振动给我们一个反馈,操作起来像是真的按下了一个按钮一样。
Taptic Engine让我们第一次体验到了“重按”带来的震感。他能够准确再现点击、触碰等触觉效果,有效地创建了一种全新的用户体验。
看下X光下iPhone 6s的Taptic Engine,可以看出它极其款速并富有节奏。
当时就有人猜测Taptic Engine并不光是为了3D Touch而生,或许未来很长一段时间都会成为苹果在手机体验上的着力方向。即便它在iPhone 6s身上的应用还没有那么耀眼,未来的iPhone却极有可能在这方面做出急速变革。
除了固件上的升级,继 iPhone7/7P 实体 home 键出现后,home 键再也无法通过真实的物理按压反馈给用户了。从此不用为home键的使用寿命而担心,为 iPhone 提供了防溅抗水防尘性能,而且也拓展了这个按钮的功能。
苹果进一步增大了Taptic Engine的体积,提高了震动性能的同时搭配iOS 10推出的新特性震动反馈UIFeedbackGenerator。使用不同的振动效果代替了之前的按压反馈,瞬间让体验变得更加微妙。
当你按下 Home 键时,它就会给你提供物理反馈。你会感觉到来自 Home 键的 taptic engine一股突然的冲力,不像在屏幕上使用 3D Touch 时的下沉感。同时它还具有压敏特性,因此可以区分用户是想按压 Home 键还是只想轻轻点击。
一些系统提供的界面元素(如:拾取器、开关/滑块)会在用户与其交互时自动提供触觉反馈。相比于iOS10之前的系统震动AudioServicesPlaySystemSound要友好得多,这也是Apple更推荐开发者使用的反馈震动。
分别说下AudioServicesPlaySystemSound和UIFeedbackGenerator在实现效果上的差异与使用限制。
AudioServicesPlaySystemSound:通过代码的控制可以实现长震、peek短震、pop短震、连续三次短震。
虽然支持的震动效果不少,但使用起来也能明显的粗糙感,尤其是跟UIFeedbackGenerator比起来,生成的效果很“顿”、很“重”,明显不够细腻。但他的好处在于普世性强,对系统和设备的包容性更广。
如果觉得不够直观,可以感受下知乎-想法中的点“鼓掌”时的震动效果。
UIFeedbackGenerator:是所有反馈生成器的抽象集合,共分为三个子类。
UIFeedbackGenerator优良特性有目共睹,但它只能用于iPhone7/7P+并且配有iOS10及以上的设备。另外,还要确保你没有关闭设置中的触感反馈开关。
感兴趣的小眼睛可以看下,针对iPhone7触感反馈软硬件相结合的效果评估
三、设计与体验
除了苹果原生系统除外,很多APP都开始使用振动作为一种反馈形式,来代替或增强视觉或听觉上体验感受。了解了软硬件的玩法与限制,接下来看看苹果自己是怎么玩耍的。
当你使用 iMessage发送信息时,重按输入框右侧的蓝色发送箭头就可以唤出带效果发送(Send with effect)。
带效果发送有 2 类效果选择,分别为气泡(Bubble)和屏幕(Screen)。“屏幕”在发送时会带有震动特效,不论是回声、聚光灯、气球、五彩纸屑、爱心,还是镭射光线、焰火、流星和欢庆,Taptic Engine 与动画和声音的完美配合,让一切都如真实般存在。
如果你向对方发送新年快乐,屏幕上会出现绚丽的礼花开始炸裂,伴随着节奏、重度不同的震感,让你感受到来自不同方位、远近的空间纵深感。发送生日快乐,一群彩色的气球缓缓升起,音效和带有曲线的震动有机组合如同气球是从你的手中放飞。
电话铃声(Ringtone)
苹果为每一种来电响铃都搭配了不同的震动模式,有节律地震动就像实时演奏。仔细感受你就能发现每一种都是由多种震动组合而成,一切的一切都是那样的细腻、完美、极致。
当你在 App Store 中获取应用时,不论是使用触控ID(Touch ID)还是面容ID(Face ID),随着进度条完整的加载,成功的一瞬间会随着音效产生与之完全同步的震动,瞬间有一种心灵上的迷之爽快。
除此之外,系统开关、轮拨选择器、消息推送、下拉刷新等等都有自己独家的精妙体验。
如果要给自己的APP加入触感反馈,有什么方法和原则?最后的最后说下我对APP内增加震动反馈时考虑的几个方向。(欢迎大家补充或讨论~)
1. 系统标配组件
系统标配的控件可以直接添加,譬如设置开关、下拉刷新、轮播选择器、拖动排序等等。
如果你的APP中有类似长按触发这种带有时间维度的操作,可以考虑在两种状态切换的临界点给以用户震动反馈,这样就不需要眼睛一直盯着屏幕查看控件状态。
除此之外,下拉刷新这种距离维度的操作,到达一定界限给予的震动。微信的文章触发和消灭临时的悬浮小圆圈,都是一种对状态临界点的考虑。
3. 特色功能
针对APP的特色功能,可以思考是否能加上震动给用户更多维的感受。譬如Pinterest长按触发的功能菜单和功能选择、知乎-想法中的鼓掌、即刻的特性化点赞。
除此之外,还可以根据具体场景酌情思考。这个就只能依靠设计师自身敏锐、细腻的感受能力了。譬如微信图片全屏时,双指缩放达到最小值以后的回弹震动。
在 Android 阵营,2017 年我们看到诸如一加 5、小米 6 等手机采用线性马达,当然限于成本等方面的考虑,它们的线性马达在效果上还无法与 iPhone 的相比。但随着技术的不断成熟,线性马达将是未来的一个主流趋势。
触感反馈是对视听效果的补充和强化,设计时一定要把握场景和力度,切不可用力过猛冒用、乱用,试想用户来到你的APP中像是踩雷了一般到处都是震动,所谓的体验就会变成一种灾难。
正因为触感反馈的微妙性,使用时甚至会忽略他的存在,好的触感反馈会跟功能浑然一体,共同服务于操作过程中的感官体验。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点打开微信扫一扫
热门活动:
在线时间 小时
阅读权限20
iOS正式版终于来了!这次的更新在界面还是功能上都带来了不少的变化,不但重新设计了控制中心、App Store 和「播客」应用,也在相册、备忘录和相机中加入了一些实用功能,还添加了增强现实AR玩法。&&关注,有帮助!
& & & & 支持更新的苹果设备有:
& & & & iPhone:iPhone7、iPhone7 plus、iPhone6s、iPhone6s plus、iPhone6、iPhone6 plus、iPhoneSE、iPhone 5S
& & & & iPad:iPad Pro全系列、iPad Air2、iPad Air、iPad 5、iPad mini 4、iPad mini 3、iPad mini 2
& & & & iPod:iPod touch 6
& & & & 完整的更新内容如下:
& & & & 全新的App Store
& & & & 全新Today标签页、全新“游戏”标签页、精心设计的App标签页、更丰富的App页面,不仅让用户更快发现新应用,还让评分访问更方便。
& & & & 智力更高的Siri
& & & & 全新Siri声音更加生动自然,可将英文单词和短语翻译为中文、法文、德文、意大利文或西班牙文(Beta 版),而且还能根据Safari、News、“邮件”和“信息”的使用为您提供Siri建议。
& & & & 与笔记类应用搭配使用,创建待办列表、备忘录及提醒事项;与银行应用搭配使用,进行转账和余额查询;还可与显示二维码的应用搭配使用;最接地气的是,支持印地文和上海话听写
& & & & 可以扫一扫的相机
& & & & 直接用相机就能够自动检测并扫描二维码,不用打开微信也能添加好友了。
& & & & 相机中“人像”模式现支持光学图像防抖技术、HDR和True Tone闪光灯;全新HEIF和HEVC图像和视频格式使照片和视频占用空间仅为之前的一半;重新设计的一组九款滤镜经过优化,使肤色更加自然,爱自拍的用户大概会很满意这几个功能的!
& & & & 终于可以动的照片
& & & & 之前,在微博上看到有趣的gif表情包保存下来就成了静态图,气不气人!!现在终于可以在原生相册中保存gif图片了,让表情包来得更凶猛一些吧!
& & & & Live Photo新增循环播放、来回播放和长曝光特效;Live Photo可以静音、修剪或选取主要照片;“回忆”短片可针对竖排和横向照片等内容自动适应;新增十多个回忆类型,包括宠物、婴儿、婚礼和体育赛事等。
& & & & 而“人物”相簿更准确,并可通过“iCloud照片图库”在各个设备上保持更新。
& & & & 敲两下AirPods就能切歌
& & & & 现在连让Siri帮你切歌的动作都省了,只要在连接 AirPods 的情况下,进入「系统设置 - 蓝牙」找到 AirPods 设置,你可以在「轻点两下 AirPods」中设置「上一首 / 下一首」,不过不能把切歌设定在同一只耳机上。
& & & & 驾驶勿扰
& & & & “不好意思,我正在驾驶,无法及时给您回消息”这个功能大概就是这个意思,选择自动回复iMessage给所选联系人,告知对方您正在驾驶。而驾驶时也会有自动静音通知,并保持iPhone静音,显示屏关闭。一切都是为了自己和他人的安全!
& & & & 自动接听电话
& & & & 在「设置 - 通用 - 辅助功能 - 音频通话方式」中打开「自动接听通话」功能,设定好接通前的等待时间,下次再有电话来,等上几秒,iPhone 会自动接起电话。当电话铃正在响,而你又实在腾不出手的时候,也不用担心错过重要电话了。
& & & & 不仅能拦截电话,还能过滤垃圾短信
& & & & & & & & 在 iOS 10 中,苹果曾加入了拦截广告电话的功能,通过安装腾讯手机管家、360 手机卫士等第三方 App,可以自动识别来电是否是推销或诈骗电话,这次苹果把这个功能延伸到了短信。
& & & & & & & &
& & & & & & & & 如果你之前安装过拦截广告电话的 App,那么在近期的更新中它们应该都适配了这一功能,安装完成之后,在「系统设置 - 信息 - 未知与过滤信息」中就会看到「短信过滤」选项,打开后信息应用内会自动出现「过滤短信」分组。
& & & & & & & &
& & & & 可一次性选中多个应用图标进行拖动
& & & & 在iPhone中,实现了多个应用图标一起拖动的功能。
& & & & 而在iPad上,可在应用间移动文本、图像和文件;而通过Multi-Touch可同时移动多个项目;通过“弹开载入”可在应用间移动内容。
& & & & 轻松共享无线网络
& & & & 已经连接了wifi的iOS11设备,轻轻靠近iPhone手机就会提示你是否发送wifi密码,从此不用死记硬背、口口相传了!
& & & & 可以扫描文件的备忘录
& & & & 在锁屏上用Apple Pencil轻点即可快速创建新备忘录;将Apple Pencil放在备忘录正文之上,还可在行间涂鸦;甚至可以直接扫描文件。
& & & & 标记
& & & & “标记”可在文稿、PDF、网页、照片等处使用。在iOS上,只要将Apple Pencil放在需要标记的内容上,即可快捷标记任意内容;创建PDF并随意标记,还可以打印。
& & & & 可以搜索手写文字
& & & & 文稿扫描仪可自动校正角度,并使用图像滤镜来移除阴影;支持表格,供您整理和显示信息;现可置顶重要备忘录。
& & & & 全新设计的iPad功能
& & & & 全新Dock使您可以更加方便地访问收藏应用和最近使用的应用,甚至可在运行中的应用上方显示;Dock可自动调整大小,以便您添加全部收藏应用;最近使用的应用和“连续互通”应用显示在右侧;还增强了Slide Over和Split View功能;从Dock即可轻松为应用启用Slide Over和Split View;Slide Over和后台应用现可同时运行;Slide Over和Split View中的应用现可放在屏幕左侧。
& & & & 文件
& & & & 全新“文件”应用供您浏览、搜索和整理文件;可配合iCloud Drive以及第三方云文件提供商使用;“最近使用”供您快速访问最近在所有应用和云服务中使用过的文件;可创建文件夹,并通过名称、日期、大小和标签排序。
& & & & QuickType
& & & & 在iPad上,从字母键上快速向下滑动即可输入数字、符号和标点。
& & & & iPhone现支持单手键盘
& & & & 新增如下键盘:亚美尼亚文、阿塞拜疆文、白俄罗斯文、格鲁吉亚文、爱尔兰文、卡纳达文、马达雅拉姆文、毛利文、奥里亚文、斯瓦希里文和威尔士文;同时九宫格拼音和日文罗马字键盘现支持英文输入。
& & & & 室内也可用的地图
& & & & 提供主要机场和购物中心的室内地图;通过逐步导航,可提供车道和限速信息;轻点两下并轻扫即可单手缩放地图;动一动设备即可与Flyover互动。
& & & & HomeKit
& & & & 新增AirPlay2 扬声器、花洒和水龙头等配件类型;扩展了基于人体感应、时间和配件的警报触发;现支持通过二维码和轻点配对设置配件。
& & & & 增强现实
& & & & App Store中的App可使用增强现实技术在真实场景基础上构建内容,用于互动式游戏、身临其境的购物体验和工业设计等。
& & & & 机器学习
& & & & App Store中的App可使用核心机器学习技术,通过在设备上处理机器学习数据来输出各项智能功能,从而获得更高性能,同时保护用户隐私。
& & & & 其他功能和改进
& & & & & & & & “控制中心”经由全新设计,一个页面显示全部控制项,还可自定控制项,包括辅助功能、引导式访问、放大器、文字大小、屏幕录制和Wallet;
& & & & & & & & Apple Music现可助您与朋友一起发现音乐。您可以创建个人资料,使好友们可以聆听您分享的播放列表,并查看您常听的音乐;
& & & & & & & & Apple News现包含为您特别挑选的Top Stories和Siri推荐内容,“今天”视图中包含当日最佳视频,在全新Spotlight标签页中更可查看编辑精选的动人故事;
& & & & & & & & “自动设置”使您可通过Apple ID登录iCloud、钥匙串、iTunes、App Store、iMessage和FaceTime,也可恢复设备设置,包括语言、地区、网络、键盘偏好设置、常去地点、您与Siri对话的方式以及家庭和健康数据。
& & & & 除此之外,iOS11还针对64位应用进行了优化,彻底和32位应用说再见了。如果你升级了iOS11 正式版系统,老旧的32位应用是不能打开的,会提示你去下载相同应用的64位版本。
& & & & 你可以这样来查看你设备上32位应用,打开“设置”后进入“关于”选项,然后在“应用”中点击,进入后你就可以看到哪些不能升级的32位应用了。
& & & & 更方便的是,打开这些32位应用,系统会给你提供该应用的64位版本,供你下载升级,如果没有64位版本,那么系统会给你提供相应应用。
& & & & 所以,在升级iOS11之前,用户们应该看看自己经常使用的应用是否是32位的,或者已经有64位新版本了。
本站所有文章为会员所发布,会员拥有该内容的所有权力及相关责任,转载时请注明出处!若有侵权,请及时删除!
管理员QQ:(请直击主题),E-mail: 其它非本人.
拒绝任何人以任何形式在本社区发表与中华人民共和国法律相抵触的言论!
所有会员,版主之间的任何交易都和本社区无任何关系,交易请务必谨慎,谨防上当受骗!
网站备案号:
闽公网安备:本站带宽由 阿里云计算 提供声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中比较多的受益于xubin341719的蓝牙系列文章,同时还有其他网上作者的资料。由于有些文章只做参考或统计不足,如涉及版权请在下面留言~。同时我也在博客分类中新建一个蓝牙通信分类,用来研究分享蓝牙相关技术。
主要参考资料的来源:xubin341719[下面是该前辈的BT系列文章]下载连接: (基本涵盖所有蓝牙协议)、(三蓝牙版本的核心协议v2.1\v3.0\v4.0)、(蓝牙协议相关初学者必读,开发者参考)
有道笔记分享链接:
下面是摘抄笔记内容:
蓝牙,是一种支持设备短距离通信(一般10m内)的技术。能在包括移动电话、PDA、无线耳机、、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而变得更加迅速高效,为拓宽道路。蓝牙采用结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)。其数据速率为1Mbps。采用传输方案实现。
Bluetooth的系统构成
1、无线射频单元(Radio):负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。2、基带或链路控制单元(LinkController):进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。3、链路管理单元(LinkManager):负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。4、蓝牙软件协议实现:如上图紫色部分,这个后面我们做详细说明。
低耗电蓝牙相关规范
(二)蓝牙协议组成
2.1 蓝牙协议架构
蓝牙协议体系中的协议按SIG的关注程度分为四层:
1.核心协议:BaseBand、LMP、L2CAP、SDP; 2.电缆替代协议:RFCOMM; 3.电话传送控制协议:TCS-Binary、AT命令集; 4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。
除上述协议层外,规范还定义了主机控制器接口(HCI),它为基带控制器、连接管理器、硬件状态和控制寄存器提供命令接口。在图1中,HCI位于L2CAP的下层,但HCI也可位于L2CAP上层。
蓝牙核心协议由SIG制定的蓝牙专用协议组成。绝大部分蓝牙设备都需要核心协议(加上无线部分),而其他协议则根据应用的需要而定。总之,电缆替代协议、电话控制协议和被采用的协议在核心协议基础上构成了面向应用的协议。
蓝牙协议栈允许采用多种方法,包括 RFCOMM 和 Object Exchange (OBEX ), 在设备之间发送和接收文件。如果想发送和接收流数据(而且想采用传统的串口应用程序,并给它加上蓝牙支持),那么 RFCOMM 更好。反过来,如果想发送对象数据以及关于负载的上下文和元数据,则 OBEX 最好。
蓝牙应用程序活动图,如下:
串口仿真RFCOMM介绍
找到服务,RFCOMM是通过不同的频道(channel)来提供不同的Profile的,所以需要找到要用的服务在设备上的哪个频道上,这是通过同一个软件包里的sdptool来完成的,就是SDP,服务发现协议
2.2 蓝牙profile
2.2.1 蓝牙profile概述
  从3.0版本开始(据说2.1也是支持的?TBD),蓝牙才开始支持BluetoothProfile。BluetoothProfile是蓝牙设备间数据通信的无线接口规范。想要使用蓝牙无线技术,设备必须能够翻译特定蓝牙配置文件,配置文件定义了可能的应用.
蓝牙配置文件表达了一般行为,蓝牙设备可以通过这些行为与其他设备进行通信.
蓝牙技术定义了广泛的配置文件,描述了许多不同类型的使用安全.按蓝牙规格中提供的指导,开发商可创建应用程序以用来与其他符合蓝牙规格的设备协同工作.在最低限度下,各配置文件规格应包含下列主题的相关信息.
① 与其他配置文件的相关性
② 建议的用户界面格式
③ 配置文件使用的蓝牙协议堆栈的特定部分.
为执行其任务,每个配置文件都使用堆栈各层上的特定选项和参数.若需要,也可包括必需的服务记录概要。ProfilesAPI层则分别对Audio、Data、Control等提供了不同的模块。目前已规范有四大类、十三种协议规格。
  Bluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用,你可以把Profile理解为连接层或者应用层协议。
? 常用的profile介绍请参考“”,几种种最基本的配置文件为:
1.通用访问配置文件(Generic Access Profile, GAP)
GAP是所有其他配置文件的基础,它定义了在蓝牙设备间建立基带链路的通用方法.除此之外,GAP还定义了下列内容:
① 必须在所有蓝牙设备中实施的功能 
② 发现和链接设备的通用步骤 
③ 基本用户界面术语.
GAP确保了应用程序和设备间的高度互操作性,还允许开发人员利用现有的定义更加容易地定义新的配置文件.GAP处理未连接的两个设备间的发现和建立连接过程.此配置文件定义了一些通用的操作,这些操作可供引用GAP的配置文件,以及实施多个配置文件的设备使用.GAP确保了两个蓝牙设备可通过蓝牙技术交换信息,以发现彼此支持的应用程序.不符合任何其他蓝牙配置文件的蓝牙设备必须与GAP符合以确保基本的互操作性和共存.
2.服务发现应用配置文件(Service Discovery Application Profile, SDAP)
SDAP描述了应用程序如何使用SDP发现远程设备上的服务.由于GAP的要求,任何蓝牙设备都应能够连接至其他蓝牙设备.基于此,SDAP要求任何应用程序都应当能够发现它要连接的其他蓝牙设备上的可用服务.此配置文件可承担搜索已知和特定服务及一般的任务.SDAP涉及了称为“服务发现用户应用程序”的一个应用程序,这是蓝牙设备查找服务所必需的.此应用程序可与向/从其他蓝牙设备发送/接收服务查询的SDP相接.SDAP依赖于GAP,并可以重新使用部分GAP.
3.串行端口配置文件(Serial Port Profile, SPP)
SPP定义了如何设置虚拟串行端口及如何连接两个蓝牙设备.SPP基于ETSI TS 07.10规格,使用RFCOMM协议提供串行商品仿真.SPP提供了以无线方式替代现有的RS-232串行通信应用程序和控制信号的方法.SPP为DUN,FAX,HSP和LAN配置文件提供了基础.此配置文件可以支持最高128kb/s的数据率.SPP依赖于GAP.
4.通用对象交换配置文件(Generic Object Exchange Profile, GOEP)
GOEP可用于将对象从一个设备传输到另一个设备.对象可以是任意的.如:图片,文档,名片等.此配置文件定义了两个角色:提供拉提或推送对象位置的服务器及启动操作的客户端.使用GOEP的应用程序假定链路和信道已按GAP的定义建立.GOEP依赖于串行端口配置文件.GOEP为使用OBEX协议的其他配置文件提供了通用蓝图,并为设备定义了客户端和服务器角色.对于所有的OBEX事务.GOEP规定应由客户端启动所有事务.但是此配置文件并没有描述应用程序就如何定义要交换的对象或如何实施交换.这些细节留给属于GOEP的配置文件.即OPP,FTP和SYNC去完成.通常使用此配置文件的蓝牙设备为笔记本电脑,PDA,手机及智能电话.
注意:蓝牙1.1版本规范所有蓝牙设备的最小实现必须支持通用访问配置文件,服务发现应用配置文件和串行端口配置文件.
在两台电脑或者Labtop之间就可以建立这种连接,如下图所示:
SPP是基于RFCOMM的,spp 协议处于rfcomm的上层,spp的应用需走rfcomm层。如果你使用RFCOMM能够实现,那么也就不需要使用SPP,而却速度还会比SPP来做快,因为省略了采用profile的一些数据包头等。不过,还是推荐采用SPP来做,兼容性有保证,这也是为什么蓝牙本质上数据和语音的传送却出现HFP,HSP,SPP,OPP等诸多具体应用profile的原因。
2.2.2 蓝牙profile框架
每个attribute属性被UUID(通用唯一标识符)唯一标识 ,UUID是标准128-bit格式的ID用来唯一标识信息。attributes 被 ATT 格式化characteristics和services形式进行传送。
特征(Characteristics)— 一个characteristics包含一个单独的value值和0 –n个用来描述characteristic 值(value)的descriptors。一个characteristics可以被认为是一种类型的,类似于一个类。
描述符(descriptor)—descriptor是被定义的attributes,用来描述一个characteristic的值。例如,一个descriptor可以指定一个人类可读的描述中,在可接受的范围里characteristic值,或者是测量单位,用来明确characteristic的值。
服务(service)—service是characteristic的集合。例如,你可以有一个所谓的“Heart RateMonitor”service,其中包括characteristic,如“heart rate measurement ”。你可以在 找到关于一系列基于GATT的profile和service。
如上图所示:蓝牙设备可以包括多个Profile,一个Profile中有多个Service,一个Service中有多个Characteristic,一个Characteristic中包括一个value和多个Descriptor。
2.3 蓝牙4.0和4.1
? 蓝牙4.0实际是个三位一体的蓝牙技术,它将传统蓝牙、低功耗蓝牙和高速蓝牙技术融合在一起,这三个规格可以组合或者单独使用。也就是说 BLE是蓝牙4.0增加的,之前没有?(TBD)
蓝牙4.0专门面向对成本和功耗都有较高要求的无线方案,其主打特性就是省电、省电、省电。极低的运行和待机功耗使得一粒纽扣电池甚至可连续工作一年之久。它有低功耗、经典、高速三种协议模式。其中:高速蓝牙主攻数据交换与传输;经典蓝牙则以信息沟通、设备连接为重点;低功耗蓝牙以不需占用太多带宽的设备连接为主。这三种协议规范能够互相组合搭配,从而适应更广泛的应用模式。正因为有了三种可以互相组合搭配的协议,蓝牙4.0因此成为唯一一个综合协议规范。它有着极低的运行和待机功耗。此外,低成本和跨厂商互操作性,3毫秒低延迟、AES-128加密等诸多特色,可以用于计步器、心律监视器、智能仪表、传感器物联网等众多领域,大大扩展蓝牙技术的应用范围。
? 蓝牙4.1主打IOT(Internet Of Things全联网),最新的蓝牙4.1标准是个很有前途的技术,其智能、低功耗、高传输速度、连接简单的特性将适合用在许多新兴设备上。
蓝牙4.1设备可以同时作为发射方和接受方,并且可以连接到多个设备上。举个例子,智能手表可以作为发射方向手机发射身体健康指数,同时作为接受方连接到蓝牙耳机、手环或其他设备上。蓝牙4.1使得批量数据可以以更高的速率传输,当然这并不意味着可以用蓝牙高速传输流媒体视频,这一改进的主要针对的还是刚刚兴起的可穿戴设备。例如已经比较常见的健康手环,其发送出的数据流并不大,通过蓝牙4.1能够更快速地将跑步、游泳、骑车过程中收集到。因为新标准加入了对IPv6专用通道联机的支持,通过IPv6连接到网络,实现与Wi-Fi相同的功能,解决可穿戴设备上网不易的问题。
蓝牙4.0和蓝牙4.1的比较
2.3.1 蓝牙4.0低功耗(BLE)
① 低功耗蓝牙Bluetooth Low Energy(BLE)是蓝牙4.0增加的。(?TBD) ,苹果系列都支持4.0.② Android4.3(API级别18)引入内置平台支持BLE的central角色,同时提供API和app应用程序用来发现设备,查询服务,和读/写characteristics。与传统蓝牙()不同,蓝牙低功耗(BLE)的目的是提供更显著的低功耗。这使得Android应用程序可以和具有低功耗的要求BLE设备,如接近传感器,心脏速率监视器,健身设备等进行通信。③ BLE低功耗蓝牙软件有2个主要组成: OSAL操作系统抽象层和 HAL硬件抽象层,多个Task任务和事件在OSAL管理下工作,而每个任务和事件又包括3个组成:BLE 协议栈,profiles和应用程序。
BLE蓝牙协议栈结构
         附图1 BLE蓝牙协议栈结构图
分为两部分:控制器和主机。对于4.0以前的蓝牙,这两部分是分开的。所有profile(姑且称为剧本吧,用来定义设备或组件的角色)和应用都建构在GAP或GATT之上。下面由结构图的底层组件开始介绍。
附图 2 BLE低功耗蓝牙系统架构图,图中的Task用附图1BLE蓝牙协议栈结构图来描述
通用属性规范(GATT)—GATTprofile是一个通用规范用于在BLE链路发送和接收被称为“属性(attributes)”的数据片。目前所有的低功耗应用 profile都是基于GATT。
蓝牙SIG定义了许多profile用于低功耗设备。Profile(配置文件)是一个规范,规范了设备如何工作在一个特定的应用场景。注意:一个设备可以实现多个profile。例如,一个设备可以包含一个心脏监测仪和电池电平检测器。
主从机连接建立过程:
2.3.2 蓝牙4.0(BLE)主从通信透传模块
低功耗蓝牙模块主透传协议是针对低功耗蓝牙模块从透传协议设计的,通过本协议模块可替代手机设备与从透传协议模块连接,实现透传功能或直驱控制功能。此协议模块可用作从透传协议模块开发过程中的辅助工具。
BLE主透传协议模块(以下简称MTTM)可以工作在透传模式(TTM)或指令模式(CM)。
MTTM上电启动后,处于待机模式(SBM),此时处于空闲状态,无睡眠,需要用户通过AT指令控制模块连接从设备。在成功与从设备建立链接后,MTTM会自动查找从设备的透传通道,如果从设备属于BLE从透传协议模块(以下简称STTM),MTTM默认进入透传模式,否则默认进入指令模式。
  透传模式下,用户CPU可以通过模块的通用串口与STTM进行双向通讯。从MTTM串口输入的数据将转发到STTM,并从STTM的串口输出;从STTM输入的数据将转发到MTTM,并从MTTM的串口输出,从而实现透明传输功能,用户数据的具体含义由上层应用程序自行定义。
透传中数据的格式也是profile,或蓝牙标准profile或自定义simple profile。基本结构依然是:
1、profile
  profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力。
2、service
  service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据
3、characteristic
  characteristic特征值,ble主从机的通信均是通过characteristic来实现,可以 理解为一个标签,通过这个标签可以获取或者写入想要的内容。
  UUID,统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识
每个从机都会有一个叫做profile的东西存在,不管是上面的自定义的simpleprofile,还是标准的防丢器profile,他们都是由一些列service组成,然后每个service又包含了多个characteristic,主机和从机之间的通信,均是通过characteristic来实现。
实际产品中,每个蓝牙4.0的设备都是通过服务和特征来展示自己的,服务和特征都是用UUID来唯一标识的。一个设备必然包含一个或多个服务,每个服务下面又包含若干个特征。特征是与外界交互的最小单位。蓝牙设备硬件厂商通常都会提供他们的设备里面各个服务(service)和特征(characteristics)的功能,比如哪些是用来交互(读写),哪些可获取模块信息(只读)等。比如说,一台蓝牙4.0设备,用特征A来描述自己的出厂信息,用特征B来与收发数据等。
?4.0中profile的存在是干嘛用的呢,只是一种组织形式存在?
服务和特征都是用UUID来唯一标识的,UUID的概念如果不清楚请自行google,国际蓝牙组织为一些很典型的设备(比如测量心跳和血压的设备)规定了标准的service UUID(特征的UUID比较多,这里就不列举了)
4.0 BLE数据传输可参考下述系列:
(三)Android Bluetooth 架构
1、面向库的架构视图
2、面向进程的架构视图
iOS 有两个框架支持蓝牙与外设连接。
一个是 ExternalAccessory。从ios3.0就开始支持,也是在iphone4s出来之前用的比较多的一种模式,但是它有个不好的地方,External Accessory需要拿到苹果公司的MFI认证。
另一个框架则是本文要介绍的CoreBluetooth,在蓝牙4.0出来之后(注意,硬件上要4s以上,系统要ios6以上才能支持4.0),苹果开放了BLE通道,专门用于与BLE设备通讯(因为它的API都是基于BLE的)。这个不需要MFI,并且现在很多蓝牙设备都支持4.0,所以也是在IOS比较推荐的一种开发方法。现CoreBluetooth在的开发几乎全部基于该框架,本节只介绍CoreBluetooth。
1,CoreBluetooth介绍
CoreBluetooth框架的核心其实是两个东西,peripheral和central, 可以理解成外设和中心。对应他们分别有一组相关的API和类,如下图所示:
如果你要编程的设备是手机的central,那么你大部分用到peripheral API。反之亦然,设备是peripheral,iphone手机是central,所以将大部分使用central API。使用peripheral编程的例子也有很多,比如像用一个ipad和一个iphone通讯,ipad可以认为是central,iphone端是peripheral,这种情况下在iphone端就要使用上图右边部分的类来开发了。
作为一个中心(central)要实现完整的通讯,一般要经过这样几个步骤:
(1)建立中心角色— (2)扫描外设(discover)(通过接收从设备广播来扫描、发现设备,获得peripheral ID)—
  a, 如果数据中已经和某些蓝牙设备绑定,可以使用BluetoothAdapter.getBondedDevices();方法获得已经绑定的蓝牙设备列表。通过指定特定的peripheral的UUID,central只会discover这个特定的设备。   b, 搜索周围的蓝牙设备受用BluetoothAdapter.startDiscovery()方法   c, 搜索到的蓝牙设备都是通过广播返回,so..。需要注册广播接收器来获得已经搜索到的蓝牙设备
(3)连接外设(connect)(根据peripheral ID连接指定的外设)— (4)扫描外设中的服务和特征(discover)(一个设备里的服务和特征往往比较多,一般会在发现服务和特征的回调里通过service、characteristic UUID去匹配我们关心那些)— (5)与外设做数据交互(explore and interact)— (6)断开连接(disconnect)。
2, 设备ID描述DID
每个与苹果设备兼容的蓝牙接入都必须:支持蓝牙设备ID描述,1.3版本或者更高;使用蓝牙SIG分配的Assigned Numbers文档中的公司标识作为他的Vendor ID值,也就是VID,如果生产商没有蓝牙SIG公司标识,那么蓝牙HID描述接入可能会使用USB Implementers Forum分配的VID;使用他的VID值来标识最终的产品生产商;使用版本值来唯一标识软件的版本;使用ProductID值唯一标识产品。Device ID描述使得苹果产品能够识别远程的蓝牙接入,该信息可以用来在与远程接入交互的时候连接蓝牙描述间的交替互操作。因此Device ID中的信息记录非常重要。
理想情况下,这两个设备应该有不同的产品ID。但是,当他们拥有完全相同的硬件、软件和特性的时候拥有相同的ProductID也是可以允许的。如果他们有任何的不同,就都应该有不同的Product ID。
3,IOS的蓝牙低功耗
蓝牙4.0标准引入了蓝牙低功耗,一种针对有限电池资源的蓝牙接入的无线技术。如果支持蓝牙低功耗的话,接入点需要支持下面的这些特性。(这里更多的是蓝牙芯片商要做的事情)
蓝牙接入需要实现蓝牙4.0标准中定义的外围角色
蓝牙接入需要在所有三个广告通道中针对每个广告事件进行广告
蓝牙接入需要使用如下广告PDU中的一个:ADV_IND;ADV_NOCONN_IND;ADV_SCAN_IND。其中ADV_DIRECT_IND不推荐使用。
由蓝牙接入发送的广告信息应该至少包含蓝牙4.0标准中包含的如下信息:Flags;TX Power Level;Local Name;Services。如果需要降低电量消耗或者并不是所有的广告数据都适合放入到广告PDU中的时候,接入点可能将Local Name和TX Power Level数据方知道SCAN_RSP PDU中。需要注意的是根据它的状态,苹果产品可能不会总是执行激活扫描。主要的服务应该总是放在广告PDU中进行广告。次要的服务不应该进行广告。对于接入点不重要的服务信息可能会因为广告PDU中的空间不足而被忽略。广告数据和SCAN_RSP PDU中的扫描响应数据应该遵循蓝牙4.0标准中的格式。
蓝牙接入的广告间隔应该慎重考虑,因为他会影响到发现和连接的性能。对于低功耗的接入,电池资源也应该被考虑在内。为了能够被苹果产品发现,蓝牙接入应该首先使用推荐的广告间隔20ms,并持续至少30秒。如果在这30秒内没有被发现,那么接入点可能会选择节省电池电量然后增加广告间隔,苹果推荐使用如下依次延长的事件间隔来发现蓝牙接入点:645 ms;768 ms;961 ms;1065 ms;1294 ms
蓝牙接入负责用来LE连接的连接参数。接入点需要请求合适的连接参数来在合适的时候发送一个L2CAP连接参数跟新请求。如果他没有符合如下规则,那么连接参数请求可能会被拒绝:Interval Max * (Slave Latency + 1) ≤ 2 seconds;Interval Min ≥ 20 ms;Interval Min + 20 ms ≤ Interval Max;Slave Latency ≤ 4;connSupervisionTimeout ≤ 6 seconds以及Interval Max * (Slave Latency + 1) * 3 & connSupervisionTimeout。苹果设备不会读取或者使用Peripheral Preferred Connection Parameters特性中的参数。
蓝牙接入应该在任何情况下都能够满足Resovable Private Address。因为私隐方面的考虑,苹果设备将会使用蓝牙4.0标准中定义的随机设备地址。
蓝牙接入不需要请求特殊的授权,如配对、认证或加密等来发现服务和特性。只有在获取特性值或者描述值的时候可能会需要特殊的授权。9
蓝牙接入不应该请求配对。如果处于安全考虑,接入点需要与Central建立绑定关系,外围可以使用Insufficient Authentication错误码在必要的时候拒绝ATT请求。因此苹果设备可能会需要按照既定的安流程程来执行过程。配对可能会需要基于苹果产品的用户认证。
通用接入描述服务:蓝牙接入应该实现按照蓝牙标准4.0中的Device Name特性
通用属性描述服务:只有当接入有能力在生命周期内更改他的服务的时候,该接入点才需要实现Service Changed特性。苹果产品可以使用Service Changed服务特性来决定它是否可以使用之前读取的或者缓存的来自设备的信息。
设备信息服务:蓝牙接入应该实现设备信息服务。服务的UUID不应该包含在广告数据当中。如下的特性需要被支持:Manufacturer Name String;Model Number String;Firmware Revision String;Software Revision String
4,IOS APP开发 的蓝牙操纵API
手机APP要想获得蓝牙设备的一些额外的信息如电量或者操作蓝牙设备,必须通过IOS API。那么IOS底层必然有某种方式来与蓝牙设备交互。 那么电量通过什么来读写呢?自定义 service characteristic?
任何免提的蓝牙耳机都可以在iOS设备的状态栏中显示一个用来标识他电池电量的图标。这个特性被所有的iOS设备所支持,包括iPhone、iPod和iPad。耳机的蓝牙知识通过两个iOS蓝牙HFP AT命令:HFP Command AT+XAPL
HFP命令AT+XAPL
描述:允许通过耳机自定义AT命令
发起者:耳机
格式:AT+XAPL=[vendorID]-[productID]-[version],[features]
vendorID: 标识生产商的vendor ID的十六进制表示,但是没有0x前缀
productID: 标识生产生的product ID的十六进制表示,但是没有0x前缀
version: 软件的版本
features: 用10进制标识的位标识:
1 = 耳机支持电池电量报告
2 = 耳机暂停或者正在充电
其他值保留
例子: AT+XAPL=ABCD-
响应: +XAPL=iPhone,[features]
HFP命令AT+IPHONEACCEV
描述:报告耳机的状态变更
发起者:耳机
格式:AT+IPHONEACCEV=[Number of key/value pairs ],[key1 ],[val1 ],[key2 ],[val2 ],...
Number of key/value pairs : 接下来参数的数量
key: 被报告状态变化的类型
1 = 电量等级
2 = 暂停状态
val: 更改的值
Battery events:0-9之间数字的字符串 A string value between '0' and '9'.
Dock state: 0 = undocked, 1 = docked.
Example: AT+IPHONEACCEV=1,1,3
(五)硬件接口
一般蓝牙芯片通过UART、USB、SDIO、I2S、PcCard和主控芯片通信。如下图所示,通过UART和主控芯片通信。
1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
原文地址:http://www.cnblogs.com/zjutlitao/p/4742428.html
声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中...
BlueTooth: 蓝牙核心协议与蓝牙芯片结构
1 Bluetooth Core System Protocol(蓝牙核心协议) 蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。 核心...
蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)
关键词:蓝牙核心技术协议
AVDTP AVCTP作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!)欢迎指正错误,共同学习、共同进步!!下载链接:Bluet...
蓝牙协议分析_基本概念及Android4.4 BT代码架构
自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到如今的Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个...
蓝牙协议分析2---协议架构
转自http://www.wowotech.net/bluetooth/bt_protocol_arch.html
2. 协议层次
蓝牙协议是通信协议的一种,为了把复杂问题简单化,任何通信协议都...
蓝牙4.0 BLE协议结构图详解
随着智能硬件的发展,嵌入式和物联网这类专业越发受到大家的追捧,而不管是学习嵌入式还是学习物联网,蓝牙4.0 BLE协议结构都是必须重点掌握的知识点,今天和大家分享的就只这部分内容,一起来看看吧。
蓝牙协议体系结构
蓝牙协议体系结构
  整个蓝牙协议体系结构可分为底层硬件模块、中间协议层和高端应用层三大部分。
  链路管理层(LMP,Link Management Protocol)、基带层(BB)和...
没有更多推荐了,

我要回帖

更多关于 IOSAPP下载 的文章

 

随机推荐