前言
最近做了一个关于带Sound bar的智能电视的蓝牙项目,就是将电视Sound bar当作蓝牙音箱,将手机、电脑等设备的声音传输到电视,通过电视Soundbar播放声音。做这个项目的时候遇到了各种大大小小的问题,好在都解决了。本篇文章总结了在设计蓝牙相关的项目时需要了解的小知识以及要考虑的问题。
蓝牙小知识
蓝牙是一种无线技术标准,可实现固定设备和楼宇个人域网之间的短距离数据交换。
蓝牙发展至今经历了8个版本的更新。1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2、5.0。在1.x~3.0之间的我们称之为传统蓝牙,4.x开始的蓝牙称之为低功耗蓝牙也就是蓝牙ble,当然4.x版本的蓝牙也是向下兼容的。Android手机必须系统版本4.3及以上才支持BLE API。
#1 蓝牙设备最多可以连接几个设备?
蓝牙设备根据角色分为主设备和从设备2种角色,主设备最多可以支持7个设备连接,从设备很难与一个以上的设备连接。从设备被连接后,其他设备无法连接此设备。可能有人问了什么是主设备,什么是从设备,你可以这样区分:搜索并发起连接的设备是主设备,被搜索和被连接的设备是从设备。
#2 蓝牙的Source端、Sink端、客户端和服务端如何区分?
非低功耗设备:
Source端为发送码流的端,Sink端为接收码流的端。举个例子,你的手机连接了蓝牙音箱,则你的手机是Source端,会发送歌曲的信息给蓝牙音箱播放;蓝牙音箱则是Sink端,接收歌曲信息并播放。这个时候的主设备手机就是Source端,从设备蓝牙音箱就是Sink端。
低功耗设备:
低功耗设备的话是按客户端(Client)和服务端(Server)来分,例如手环和手机连接后,手机作为客户端(Client),手环作为服务端(Server)。因为数据储存在手环中,通过手环发送到手机,所以手环作为服务端。
能反向相互发送文件设备:
如手机连手机、手机连电脑、电脑连电脑等情况,就不存在Source端、Sink端、客户端、服务端等情况,只有主从设备。并且这些设备可相互传文件。
#3 蓝牙设备配对
蓝牙SIG为了保证蓝牙通信的安全性,采用认证的方式进行数据交互。同时为了保证使用的方便性,以配对的形式完成两个蓝牙设备之间的首次通讯认证,经配对之后,随后的通讯连接就不必每次都要做确认。所以认证码的产生是从配对开始的,经过配对,设备之间以PIN码建立约定的link key用于产生初始认证码,以用于以后建立的连接。
然而有些设备是不需要验证即可连接的,也就是节省了弹窗确认框的步骤。感兴趣的可以查看此网址:https://blog.csdn.net/qq_25827845/article/details/52400782
#4 蓝牙设备连接
已配对成功的设备才可以进行连接,已连接过的设备,下次可以直接连接,不需要配对;
打开蓝牙后可自动连接最后一次连接的蓝牙设备,前提是配对信息不删除。
设计时需要考虑的问题
#1带屏音箱和无屏音箱的区别。
平时接触较多的都是无屏音箱,例如平常的桌面蓝牙小音箱,手机一连接就可以使用。常见的带屏音箱较多的就是车载蓝牙音箱、带Sound bar的电视等。
那么设计无屏音箱和有屏音箱的区别究竟是什么?
- 无屏音箱:无屏音箱的几乎所有的操作都在手机端,音箱端主要承载播放声音、开/关机的操作、各种状态的指示灯和语音提示等。例如等待连接、连接成功、播放中、断开连接、低电量等会有相应的指示灯提示;连接成功、断开连接、低电量等还有声音提示。部分音箱可能有切换音频、播放等功能。
- 有屏音箱:有屏音箱通常是可以反控主设备,并且屏幕会展示当前的声音信息和状态变化。对于智能电视来说,除了声音播放的功能之外,它还可以进行其他的操作,并且和手机一样还可以和其他应用交互。这就导致了很多其他复杂情况的出现。
#2 明确Source端和Sink的切换时机
对于电视Sound bar 的蓝牙音箱来说,属于非低功耗设备,但是对于电视本身是既可以作为主设备又可以作为从设备,既可以发送码流又可以接受码流。所以在使用中会涉及到主设备从设备的角色转换,也会有Source端和Sink端的状态切换,切换时机需要明确。
针对此情况可做以下规定:
(1)进入蓝牙音箱App界面后,电视设备由Source端切换为Sink端,作为可发现设备被其他设备发现并连接(从设备),但无法搜索并连接其他蓝牙设备。此时可接受来自连接设备(如手机)的音频等码流。
(2)退出蓝牙音箱App界面后,电视设备由Sink端切换为Source端,可搜索并连接其他蓝牙设备。跳转到其他应用处理方式与此相同。
#3 应用切换与返回
针对Android系统的TV,还需要注意用户按遥控器上的【返回】键的逻辑,在这些Source端和Sink端的切换以及应用之间的跳转过程后,需要遵循Android的返回规则,按【返回】键可以返回上一个应用,并且在这个过程中完成Source端和Sink端的切换。
#4 蓝牙应用内弹窗处理
在蓝牙音箱App界面下会出现一些系统弹窗覆盖在当前页面,这时候有两种处理方式。
弹窗弹出时,歌曲暂停,关闭弹窗后,歌曲继续播放;
弹窗弹出时,如不干扰声音的,可继续播放。关闭弹窗无影响。如果弹窗会引导切换到其他应用,则切换后歌曲停止播放,并且则按上面Source切换规则来处理。
#5 当前声音通道被抢占
声音通道被占,例如呼出语音类产品时(如Alexa),则暂停歌曲,直到音频通道占用解除,歌曲恢复播放。如果因为声音引导启动新应用,则除了暂停声音后,还需要切换sink端为source端,接收其他音频播放。
#6 通话处理
手机作为主设备连接音箱时,如果有电话接入,分为可拾音音箱和不可拾音音箱两种情况。
(1)可拾音音箱,声音传到音箱上,用户手机上可选择听筒、手机扬声器、或者是蓝牙音箱;
(2)不可拾音音箱,拨入电话:声音传到音箱,接电话后,用户手机上可选择听筒、手机扬声器、或者是蓝牙音箱,不过用户还是得和用手机接听一样,靠近手机才能将声音传到对方手机里;
拨出电话:默认声音在当前选择好的通道上,用户手机上可选择听筒、手机扬声器、或者是蓝牙音箱。
其实关于通话处理的,手机都有响应的处理的,蓝牙音箱可不做处理(偷懒中~)。
#7 蓝牙连接状态处理
蓝牙设备的主要状态为等待连接、配对、连接成功、连接失败、断开连接等5种状态,设计时需要明确这5种状态的切换以及界面中的表现方式。
等待连接:界面中需要足够的提示信息,等待其他设备来连接。其中必不可少的元素是当前设备名称,当前状态如等待连接。
配对:蓝牙配对有点击配对和自动配对,点击配对就是建立连接的两个设备进行确认的一步,PIN码一致的设备可成功配对,配对之后才进行设备连接。配对过程是可以根据产品的需求去掉这一步的,也就是自动配对。
连接成功:连接成功后,要获取连接音箱的设备(如手机)的状态,判断当前手机是否在播放歌曲,如果当前正在播放,则蓝牙音箱也会立即播放歌曲。
连接失败:连接失败后,则设备之间无法通讯,用户可以通过再次连接建立2个设备间的通讯。连接失败后,设备应该立即可以被再次连接的。
断开连接:断开连接属于异常状态,在界面中需要及时的提示并切换状态。也可以提供声音的提示“断开连接”。断开连接之后,设备是立即可以被再次连接的,也就是回到了等待连接状态。
#8 播放与暂停的动效切换
因为电视的蓝牙音箱是带屏的,所以在蓝牙音箱的状态下,还需要处理屏的显示效果。如何让大屏和蓝牙音箱播放的歌曲契合也是需要考虑的。
如果是有背景动画的,分为三种:
-
背景动画根据音乐频谱跳动,如果要采用此种方式的话,希望你的团队可以做到背景动画和音乐频谱的状态一致。而不是歌曲节奏很快时,当前画面动画节奏很慢,这样效果会适得其反。
-
显示静态图片,固定时间切换下一张,如果无法实现背景根据音乐频谱跳动,可以采取这种方式,也是很多在线音乐App采取的方式。
-
背景动画和音乐频谱无关,采用这种方式的,选用的动画建议时匀速的。
-
只显示一张静态图,保险的做法,但是会显得比较单调。
#9 音乐和视频等声音处理方式不一致
音乐类音频可以获取如歌曲名、歌手、歌词、时长、播放进度等信息都可以获取,界面可以正常的展示这些信息。但是对于视频类则获取不了这些信息,只拿到音频,拿不到时间、声音描述信息。并且无法判断用户从音频切换到了视频。所以界面最好兼容有歌曲名、歌手、歌词、时长、播放进度和无这些信息的展示。
最后
文章主要总结了设计师需要了解的蓝牙小知识和在设计蓝牙App需要注意的问题,文章的多处都是以电视的蓝牙音箱举例的,所以如果是设计不带屏的蓝牙App会和以上情况不一致,请参考使用。
如果喜欢文章的要记得点赞哦!
参考资料:
---------------------
深入了解Android蓝牙Bluetooth
来源:CSDN
原文:https://blog.csdn.net/androidstarjack/article/details/60468468
android bluetooth——蓝牙的开启、搜索、配对与连接
来源:CSDN
https://blog.csdn.net/yehui928186846/article/details/52710112
Android 蓝牙开发之搜索、配对、连接、通信大全
来源:CSDN
https://blog.csdn.net/qq_25827845/article/details/52997523
作者:一戈何处
链接:https://www.zcool.com.cn/article/ZOTI1ODEy.html
来源:站酷
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 标签:音箱,App,蓝牙,手机,配对,连接,设备 From: https://www.cnblogs.com/FBsharl/p/18286355