纬图虚拟仪器论坛

 找回密码
 立即注册
搜索
查看: 8488|回复: 1

谈谈几个月以来开发蓝牙4.0 BLE低功耗应用的感受

[复制链接]
发表于 2013-1-25 15:31:48 | 显示全部楼层 |阅读模式
                        谈谈几个月以来开发 蓝牙4.0 BLE 低功耗应用的感受                                                                       
谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受
开始对蓝牙4.0的各种特性和各种应用场景的美好描绘充满了向往,但愿望很美好,现实很骨干。
在这几个月中遭遇了很多挫折和痛苦的折磨,相当的难熬,android2.3的没有ble的API,android4.0系统有个HDP的API,把新买的XT910刷了系统到4.0以后仍然连接不上,后来想刷回去都刷不了,手机就此废了,只能自己掏钱重新买一个xt910。搜索到博通的开源SDK但需要手机add-on功能的,根本就没法用,经过多方多次搜索才找到摩托罗拉的SDK开发包,折腾了一个多月才第一次连接上蓝牙4.0的设备,但开发包的例子程序是个鸡筋,有很多问题很多地方需要优化处理才能使用,又整了一个多月才最终做出了一个勉强可以使用的防丢器简单应用产品。
虽然现在开发出了几个应用,但蓝牙4.0不稳定,单片机硬件不稳定,手机底层API不稳定,尤其是android上目前只能在摩托罗拉刀锋系列2.3版本上才能使用,升级到4.0都不能使用,摩托罗拉本身销量就不大,前几个月有进行了大裁员想获得大的市场份额更加渺茫了,特别是在中国市场份额只会越来越小,逐渐给人们淡忘,甚至再次给出售消失这个品牌,所以老板都不愿意再投入开发了,只能坐等三星成熟的开发包出来再做了。

目前有蓝牙4.0功能的手机就只有几款,摩托罗拉的刀锋系列、HTC1x和三星GS3,HTC1x和三星GS3虽然有蓝牙4.0的硬件设备但迟迟没有成熟相关SDK可以进行开发,开源的博通BLE SDK开发出来的没有手机可以使用。
目前市场上销量最好的android蓝牙4.0的就是三星GS3,但系统本身的蓝牙功能连搜索BLE的设备都搜索不到,更别说连接使用了,持续关注了几个月也只有些零散的资料有些牛人整出了些framework但需要root的用户才能使用,跟苹果需要越狱一样,买GS3这种手机的人除了开发人员估计很多都不会root的,因为一root就失去了保修服务。
最近有看到了些希望,有人用三星的开发包弄出可以搜索到所有蓝牙设备的应用了,但没有真机测试还不能确定是否可以使用。


话说iPhone的版本也只有iPhone4S以上的手机才可以使用,但ios5升级到ios6系统后也是有验证bug的,导致手机app无法下发指令数据到蓝牙设备,所以需要交互的BLE应用都没法使用,iPhone5默认的系统是ios6应该也是用不了的,而且功耗比ios5的大很多,也只能坐等苹果升级系统,不过苹果由于闭源和开发投入比较大升级日期应该不会太久,应该等几个月就可以解决了。(后注:不出所料很快就出ios6.0.1版本解决了wifi连接等问题了,同时出ios6.1bate版本)

android的就蛋痛了,各个厂商的都定制成不一样的,各个系统版本上也有差异,兼容性很难保证,屏幕大小也差别非常大,开发广泛使用的应用在兼容性上就浪费了很多精力,而需要根据各个厂商提供的不同sdk开发的应用就只能适应某一类手机了,不同厂商的基本上都不兼容得重新开发了。
另外iPhone手机的蓝牙是不能够和android手机的蓝牙通信的,而且iPhone除了蓝牙4.0以外其他版本的蓝牙外设需要通过苹果的认证才能使用的,除非大厂商大批量生产否则不可能通过认证的。所以很多小公司,解决方案的公司做iPhone的应用只能做蓝牙4.0的,android的则没有这个限制。

另外当初就搜索到健康类的应用有人做出产品的 但不是基于蓝牙4.0低功耗的 还是用蓝牙2.1的spp协议来做的,蓝牙2.1或者3.0的耗电是个比较大的问题,一些小外设,需要用纽扣电池的应用就无法真正使用,对一些创意产品如果需要经常换电池或充电对用户体验都会大打折扣,成本也会大大提高。
相对wifi和zigbee无线方案,蓝牙和无线射频模块nRF24l01成本会低很多,wifi的好处是可以比较方便实现远程控制,距离比较远,信号也相对比较稳定。

补充内容:
经过不断努力终于可以让三星的支持BLE了,HTC1X,moto这几个主流蓝牙4.0的android都可以开发了,但估计以后只会先开发三星销量大的了,不同厂商底层差别太大了。
ios6.0的问题也解决了,解决办法暂时保密。 三星的解决办法之前在博客里公开过一段时间现在公司也要设为保密了。
另外ios6.0可以把iPhone手机当从设备了,可以两台iPhone通过蓝牙通信传数据了,有点类似spp协议,但android的蓝牙4.0的没有看到相关的api。
现在LG出的google nexus 4 也支持ble蓝牙4.0了,但目前也没有对应的api和sdk ,小米2也支持BLE 蓝牙4.0了,由于小米的rom是开源的研究起来估计轻松点,只是用户量太小的话就没必要花精力专门搞了。
ble的发展变化比较快,之前收藏的很多网址现在都访问不了了,更新或者作废了
-------------------------------------------------------------------------
补充内容2:
http://processors.wiki.ti.com/index.php/Category:BluetoothLE
这个是TI的wiki上的文章,上面有moto和HTC的例子程序的,但支持不全面,之前的描述是
MotoRAZRAndroidBLEDemo Obsolete. Updated Motorola BLE SDK with new API is not compatible.
HTC1X BLE API - Complete BLE API for HTC1X (European version only!) NEW!
现在有变成下面的了
MotoRAZRAndroidBLEDemo Obsolete. Updated Motorola BLE SDK with new API is not compatible.
HTC1X BLE API - Complete BLE API for HTC1X (European version only!) Obsolete. Updated Android SDK is not 100% compatible.
三星4.0.4可以搜索到ble设备,但连接有问题,需要升级到android4.1.1以后才行
nordic 发布了两个版本的nRF的app在google play上的(心率计和防丢器在一个应用里),一个摩托罗拉的,一个三星gs3的,可以下载了反编译参考下。
请不要问我怎么下载apk、怎么反编译和怎么用这个的,直接下载连接不是nordic的产品不一定能成功,我自己的xt910和gs3手机连接自己公司开发的csr1000做的蓝牙4.0的产品就都没成功过,听说TI的可以直接连接上,但也读不到数据。
但由于他没有混淆,写法还是值得参考的。给出Samsung Galaxy S3 and Samsung Note 2 app的连接地址:
https://play.google.com/store/apps/details?id=com.nordic.nordicbleapp&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5ub3JkaWMubm9yZGljYmxlYXBwIl0.
The nRF Utility App is a tool to demonstrate Bluetooth Smart connection to Samsung Galaxy S3. The App enables you to connect to different Bluetooth Smart accessories such as wireless heart rate monitors and proximity tags. This app complements Nordic Semiconductor’s nRF8000 and nRF518 Series Bluetooth® Smart solutions, compatible with Bluetooth v4.0.
Bluetooth® Smart support for:
- Heart rate monitor
- Proximity tag
Note:
Samsung Galaxy S3 and Samsung Note 2 are currently supported handsets.
Miminum Supported Android Version is Jelly Bean
摩托罗拉现在能访问的心率计sdk网址:
http://www.motorola.com/sites/motodev/library/bluetooth_apis.html
------------------------------------------------------------------------------
Open Bluetooth Low Energy API
http://android-btle.github.com/framework/
这个是博通的开源的api 需要root权限才能用的,用户需要像精简版rom增加google maps的add-on那样增加相关文件到手机系统里面后才能用,除了需要root外对用户要求也比较高。
最近发现三星 Galaxy S3 4.1.1底层ble api的问题也很多,蓝牙硬件很不稳定,连接失败后用系统设置里面关闭开启蓝牙都经常会导致手机重启,用代码延迟重启蓝牙几乎都是导致手机重启的,这种情况在连接异常后让人措手无策,需要用各种延时处理来避免异常和手机重启也导致了自动连接延时缓慢也很无奈,无法完全控制底层。摩托罗拉的虽然问题多但用TI的蓝牙硬件倒还稳定些,可以用代码重启蓝牙来解决各种异常,不过代码量和代码复杂度比三星的多了很多。
摩托罗拉的ble sdk支持设备非安全模式,gs3的不支持,非安全模式下无法bond也就无法连接了。
==========================
2013-01-17 补充
最近有不少人找我要代码和开发,这里说明下,ble app的开发需要跟蓝牙工程师配合才能进行的,每个芯片厂商的底层通信可能不一样的,同样芯片不同sdk版本的结果也是不一样的,目前做解决方案比较多的是TI的芯片,我做的是csr的,还有些人用nordic的,或者博通等其他牌子的,ti能用的app换到csr做的设备不一定能用,同样的防丢器可能每个公司做的蓝牙模块都不一样的,最终使用可能只能匹配自己的蓝牙模块的产品。这里说明下本人时间精力有限,同时基于商业竞争的因素,不能免费提供demo代码和技术支持。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|纬图虚拟仪器

GMT+8, 2024-12-12 08:42 , Processed in 0.048097 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表