转载自:http://www.eoeandroid.com/thread-261014-1-1.html
忙了这么久,终于有时间把最近几个月弄的东西整理一下,顺便我的开发过程和经历。
被公司分到做一个蓝牙4.0的项目,对这种软硬结合的东西也比较感兴趣,所以很快投入到android蓝牙4.0的项目中来。ios的版本公司已经先前一步就已经开发完成了,因为ios的bluetooth有比较完善的API,和比较全的文档说明。网上也陆陆续续有比较多的Demo,都可以参考。再加上ios对bluetooth4.0支持的比较好,运行起来也比较稳定。所以开发基本没有遇到太多难题。即便有少量bug,也很快会在新版本的迭代中有比较好的解决。
<以下两段借鉴自网络>
android的就蛋疼得不得了了,各个厂商的都定制成不一样的,各个系统版本上也有差异,兼容性很难保证,屏幕大小也差别非常大,开发广泛使用的应用在兼容性上就浪费了很多精力,而需要根据各个厂商提供的不同sdk开发的应用就只能适应某一类手机了,不同厂商的基本上都不兼容得重新开发了。
另外当初就搜索到健康类的应用有人做出产品的 但不是基于蓝牙4.0低功耗的 还是用蓝牙2.1的spp协议来做的,蓝牙2.1或者3.0的耗电是个比较大的问题,一些小外设,需要用纽扣电池的应用就无法真正使用,对一些创意产品如果需要经常换电池或充电对用户体验都会大打折扣,成本也会大大提高。
开发过程比我想象中的要难,这里所说的难不是编码,不是架构,不是逻辑上的难。
而是,找遍了整个百度,google。也没有看到太多关于Android开发B LE设备的资料。查找资料的过程中,
看了从学习android以来一时间最多的全英文网站。
下面是几个我翻遍了google找到的为数不多的介绍三星bluetooth4.0的介绍,或者其他开发者遇到的一些问题。
http://developer.samsung.com/for... lB&messageId=157757
三星开发者论坛,里面有很多开发者对三星开发人员的提问。我认真的看了每一条留言(当然是用翻译软件先翻译一遍啦~我用的是Chrome浏览器+有道翻译插件,可以自定义翻译级别)
http://stackoverflow.com/questio... t=votes&pagesize=15
stackoverflow里面关于ble开发问题集合,也包含了ios的ble开发和android其他品牌手机的开发
http://stackoverflow.com/questio... -4-0-in-android-4-0
关于用broadcomSDK开发蓝牙4.0,教你怎么使用add-on属性
http://stackoverflow.com/questio... -heart-rate-monitor
此人号称已经用broadcom搜索到CC2540,使用CC2540的童鞋可以参考下
http://stackoverflow.com/questio... ection-with-android
android开发BLE所处的位置
http://www.motorola.com/sites/mo... s/installation.html
motorola关于Add-ons属性的安装说明,开发moto版本的童鞋可以参考
http://www.motorola.com/sites/motodev/library/bluetooth_apis.html
摩托罗拉的开源API,对于开发moto的人有福了,因为moto有健全的API文档。开发起来难度并不算大
http://blog.chinaaet.com/detail/30760.html
BLE模型介绍,对于上层软件层不需要太了解,有兴趣的童鞋看下。
http://www.eoeandroid.com/thread-18993-1-1.html
普通蓝牙介绍,因为本人也开发过bluetooth4.0之前的版本,所以在这里也一起列出来了。
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=195704
普通蓝牙所有类介绍
http://www.cnblogs.com/freeliver... /12/13/2285980.html
普通蓝牙连接过程
公司有两种芯片,一种是TI的CC2450,另外一种的csr的芯片,经过了将近一个月的努力,终于完成了第一个基于BLE的android项目,
包含的几个小功能有:防丢器+照相功能(BLE按下按钮,照相)
但是三星的底层似乎还不是很稳定。在一些极少数的情况下,会出现设备自动重启的现象。
在延时操作和一些容错机制后,运行起来也还算稳定。能够达到商用的标准。
这个项目之后,正在做的几个项目还有,血压计之类的产品。
过几天传一下我们产品的视频上来。有兴趣的人,持续关注下我的博客。
看到网上很多人在找三星连接BLE设备的方法,等在过几天,应用完全稳定了,几个重启的bug解决了之后,还有就是我们暂时只能连接TI的CC2540。所有问题解决了之后,打算把蓝牙连接的这个模块独立出来,源代码免费开放给大家参考。
蓝牙4.0是一个蛮大的市场,还在刚刚起步的阶段,完全还没有饱和,所以,大家一起努力吧。有什么问题可以在下面留言。
2013年3月11日更新
终于连接上了CSR1000了。之前的TI CC2540的输入pin码的问题也解决了。基本上也不容易出现问题导致手机重启了。
通过延迟操作,和代码重启手机蓝牙,基本上都没有太大的问题。公司的几个CRS的项目也可以陆续去完成了。
最近遇到一些连接问题,或者一些类的不明确问题的时候,总会去看看Moto的Ble连接的Demo,但是发现,两者在实现的方式上面有很大的区别。
但是在整体的思想上面还是可以借鉴的。本来想先做moto的Ble的项目的,因为moto官方提供了很详细的文档,API接口也相对比较稳定,Moto还提供了
好些Demo,但是发现moto的市场占有率实在太低,只能硬着头皮开发三星的BLE项目。
2013-3-12 更新
无意今天在搜索android bluetooth4.0资料的时候,发现自己的这篇帖子竟然排到了前几个搜索结果。
相同的帖子,我发在CSDN上面,结果翻了好几页都没有找到。是不是代表eoe的SEO做的比csdn好呢。
这几天准备开始开发一款三星体重秤的BLE应用。框架开始陆陆续续搭建起来。这几天测试CC2540和CSR1000,发现CSR的稳定性还是要强一些。
也有可能是硬件工程师的原因,我现在的CC2540芯片还是去年和人合作开发后留下来的芯片。现在合作的工程师是主攻CSR1000的,所以
很多问题解决起来也比较方便。
TI的CC2540的芯片在绑定配对的时候,有可能出现一直在配对状态。退出后,下次再进入,这个状态是无法进行连接的。只能是代码进行蓝牙
重启,但是又会延缓连接时间。本来BLE就是主打快速配对连接,省电功能的。这样一来就体现不出来优势了。
好在现在用的CSR1000已经没有这个问题了。也能很快连接起来。
2013年3月22日 更新
随手拍了一小段视频,演示了下我之前做的小应用。(还不知道怎么可以直接在本站播放视频,编辑的时候点击视频按钮,把网址copy进去好像没什么反应)
http://v.youku.com/v_show/id_XNTMwNDY5NDg0.html
关于蓝牙连接这块其实没有太多的难度,只不过是Android官方没有支持的API,三星官方又迟迟不放出开发包,所以才导致开发难度加大。
这几天忙也告一段落,打算把这个小应用里面的蓝牙连接模块独立出来,做成一个小Demo,供广大网友一起学习。
okay,今天先讲这么多,开始新的一天的新的工作啦。