标签:
通过“计算器”和“视频播放器”我们已经能够开始开发一些比较像样的应用了。
今天,我们将开始制作一个“蓝牙聊天”应用。这个应用其实很简单,没有炫酷的界面,就是一对一、通过蓝牙连接两台设备,让两个人互相发送信息。
可别觉得它太无聊、没有什么实用性,其实我们正是想通过它让你开始接触网络编程(蓝牙和wifi都是无线连接技术,它们的程序设计方法和思路非常的相似)。
另外,学会了使用蓝牙,就为大家打开了技术开发的另一扇大门-物联网,现在很多物联网硬件都需要使用蓝牙技术进行连接,真是一箭双雕。将这个技术掌握以后,就可以结合我们的另外一篇介绍蓝牙小车的文档,开发蓝牙小车的遥控器了。
这个应用是根据Google在Android SDK中提供的Bluetooth Chat
应用改编的。Google的示例只有代码,没有解释说明,所以对很多初学者来说会有很多的疑问。这里将Google的示例程序进行了大范围的改造,并美化了界面,让它便于初学者学习,从原理知识到设计方案都会详细的讨论。希望大家通过这一章节的学习,对不同设备间的通信开发具有整体的认识,并将这里面使用到的技术,作为我们下一步开发的垫脚石。
本文针对的读者是:
在开始以前,假设各位已经做好了如下准备:
/*******************************************************************/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
/*******************************************************************/
规划产品的时候,我们先要做加法,尽可能的把它可以拥有的功能挖掘出来;然后再做减法,把不实用、或者投入性价比不高的功能放一放,作出第一版产品;最后,再根据用户的反馈、加上上一版产品留下的遗憾,进行产品的升级。
这是一个循环发展、螺旋上升的过程。这样做能把有限的开发资源放到最重要的地方去,得到用户的反馈,尽可能设计出用户真正需要的产品。
作为一个即时通讯的小应用,我们完全可以把它设计成“微信”或者“QQ”的样子,唯一的不同是,这个聊天应用是通过蓝牙技术进行的数据传输,而不是wifi。因此,我们可以暂时列出它可能具备的功能:
可以添加的功能实在是太多了。
从上面列出的明细可以看出,能够赋予这个聊天应用的功能实在是太多了,因此我们必须根据我们的能力和精力来进行筛选,做功能的减法。
以上3条是就是蓝牙聊天应用的核心功能,其它功能都是这2条基础功能的扩展,
至于其它功能,那就离的更远了。我们就暂时不去实现了。
用蓝牙(或者wifi)传输数据,都是传输的二进制数据。文字、图片、语音、音乐、实时视频等内容本质上都是二进制数据,只是它们的格式不太一样而已。所以理论上讲,传输这几类信息都是可以的。
不过任何无线传输技术,在单位时间内传输的数据量和传输的距离都是有限制的。对传输要求比较高的应该算实时视频内容了,每一秒要达到24帧,所以对传输速度的要求可想而知了。那么蓝牙的传输速度能达到吗?
不同的数据类型,对传输的要求是不同的,传输什么样的数据比较合适呢?现阶段,我们把问题简化一下,就让它传送简单的字符串吧。
二进制数据流作为任何数据的载体,是最为基础的,而字符串可以看成是一种具有特殊结构的二进制数据。所以,为了开发简单,第一步先假设只传输文字内容。
到目前为止,实现整个功能都不会有技术上的障碍了。
根据上面的讨论,我们确定蓝牙聊天应用的具体功能:
我们确定了蓝牙聊天应用的功能,还需要给出一些功能设计的基本假设。
当两台蓝牙设备已经相连的时候,如果其中一台设备的蓝牙功能被用户手动关闭了,我们的应用需要做怎样的处理?对于此,为了简化第一版应用的开发,就简单的假设蓝牙功能一旦打开后,应用运行的过程中,蓝牙功能就不会被关闭了。
程序的主界面退出后,是否可以继续在后台接收对方发送过来的数据?就像微信那样,只要应用没有退出而且有网络,就能一直接收朋友发来的信息?现阶段还是从简化问题的角度出发,我们就假设一旦程序的主界面退出,就不需要在后台继续接收数据了。
对于那些没有在这个阶段加入的功能,期待以后加入吧。
对于那些为了简化开发难度、减少开发时间而采用的简单设计,期待在下一版程序中优化和完善吧。
标签:
原文地址:http://blog.csdn.net/anddlecn/article/details/51867404