【Android论文栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Android论文-基于Android蓝牙聊天系统 - 期刊论文的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
技术实践 案 例 Successful Cases基于
Android 蓝牙聊天系统 孟 刚 (上海华章信息科技有限公司 上海 200235 )【摘 要 】针对当前 And roid 在移动互联网市场份额的日益增长,以及蓝牙作为短距离无线通信技术的流行,通过 最后设计实现了基于 And roid 平台的蓝牙聊天系统。
总体来 研究 And roid 应用程序组成和 And roid 中蓝牙的实现, 文章所设计的蓝牙聊天系统具有性能强、 说, 通用性好以及扩展能力强等优点。
蓝牙;【 关键词 】And roid ; 聊天系统 Bluetooth Chat System Based on
Android Platform Meng Gang Shanghai Huazhang Information Technologyco.ltd Shanghai 200235【Abstract 】In viewof the current trend of increasing share of
Android in the mobile Internet market and the popularity of bluetooth which is a short-range wireless communication technology this paper studies the
Android application composition and the realization of the bluetooth on
Android platform and finally designs bluetooth chat system based on
Android platform. All in all the system owns advantages of strong performance high universality and good extensibility.【 Keywords 】
android bluetooth chat system 本 文 实 现 了 基 于
Android 平 台 通 过 蓝 牙 进 行 通 信 0 引言 的一对多聊天系统。
选择蓝牙作为通信手段是由于蓝牙 随着移动通信技术的进步,移动终端在近年中发展 连接简单,避免了网络连接对于网络及信号强度的依赖 迅速, 尤其是智能手机平台
Android 的 发 布 与 开 源 ,其 性。
Android 手机使用蓝牙模块分别作为客户端和服务 发 展 势头 强 劲 ,市 场 占 有 率 稳 步提 升 ,给 移 动 领 域 注 入 器端,实现好友或陌生人间即时的一对多聊天系统。
了新的活力。
根据市场研究公司 Canalys 的调查数据,在 Canalys 调 查 的 全 世 界 56 个 国 家 中 ,
Android 在 其 中 35 1
Android 应用程序概述 个国家处于领先地位,并占据了全球 48的市场份额。
一 般 来 说 ,
Android 应 用 程 序 主 要 由 四 部 分 组 成 :
Android 一 词 的 英 文 本 义 是 “机 器 人 ”,它 是 Google Activity 活动对象 、Broadcast Receiver (广播接收器 )、 公司于 2007 年 11 月宣布的基于 Linux 平台的开源手机 Service (服务)、 Content Provider (内容提供者)。
然而,并 操作系统,它是一套真正意义上的开放性的移动设备综 不是所有的程序都需要全部部分,可以由上面的一个或 合平台。
该平台由操作系统、中间件、用户界面和应用软 几个来组建 。
使用某些组件构 建
Android 应 用 程 序 时 , 件组成。
Android 最大的特点在于其开放性,它宣布开放 需要在 AndroidManifest.xml 文件里进行声明。
源代码,手机制造商、手机芯片厂商、移动运营商以及开 1.1 Activity 发者都可以对源码进行学习和修改并进 行 开 发 。
蓝 牙 在
Android 应用程序中,Activity 一般代表手机的一 是智能手机的一项重要功能, 它也被整合到了
Android 屏, 即用户可见的一个界面。
Android 应用程序的运行 平 台 上 , 作 为
Android 的 一 个 移 动 网 络 通 信 模 块 。
过 程 就 是 在 不 同 的 Activity 之 间 切 换 的 过 程 。
每 个
Android 系统提供了蓝牙开发的 API,供开发者调用。
Activity 都有自己的视图和事件对应 。
大多数应用程序 信息安全与技术 2012 年 6 月 79 Successful Cases 案 例 技术实践 都有多个 Activity。
1 BluetoothAd apter : 表 示 本 地 的 蓝 牙 适 配 器 。
1.2 Br oadcast Receiver BluetoothAdapter 是所有 蓝 牙 操 作 的 入 口 点 。
用 它 可 以 Broadcast Receiver 是 一 个 接 受 广 播 消 息 并 响 应 的 搜 索 其 他 的 蓝牙 设 备 、 查 询 已 配 对 的 设 备 、 用 已 知 的 组件。
广播消息可以由系统产生,例如时区发生变化、电 MAC 地址来实例化一个蓝牙设备(BluetoothDevice ),建 池电量发生变化等。
同时也可以由其他应用程序产生 , 立一个 BluetoothServerSocket 来监听其他设备的连接请 对于这两种广播 ,在 Broadcast receiver 里都 可 以 设 置 相 求。
应的过滤规则来进行接收。
2 BluetoothDevice :表示一个蓝牙设备。
用它来向服 1.3 Ser vice 务器端设 备 发 起 连 接 请 求 (通 过 BluetoothSocket ),或 者 Service 是具 有 长 生 命 周 期 并 且 没有 用 户 界 面 的 代 查询设备信息,如名字、地址、配对状态等。
码 。
通 过 StartService (Intent service ) 可 以 来 启 动 一 个 3 BluetoothServerSocket : 表 示 一 个 开 启 的 Server Service , 通 过 Context.bindService 可 以 绑 定 一 个 Socket 来监听连接请求 (类似于 TCP ServerSocket )。
为 Service 。
当已经连接上了一个服务 ,就可以使用服务提 了连接两个蓝牙设备,其中一台设备必须用这个类创建 供的外部接口来和服务通讯了。
Server Socket 。
当远端设备向这个设备发出了连接请求, 2 Content Provider BluetoothServerSocket 接收请求后 会 返 回 一 个 已连 接 的 BluetoothSocket 。
Content Provider 就是一个类 ,作为应用程序之间唯 4 BluetoothSocket : 表示蓝牙套接字 (类似于 TCP 一的共享数据的途径, 它实现了一个标准的方法集合 , socket ),它是应用程序与其他蓝牙设备通过输入输出流 其 他 应 用 程 序可 以 使 用 这 些 方 法 在 应用 程 序 之 间 共 享 交换数据的连接点。
数据。
要在
Android 应用程序中使用蓝牙特性, 必须声明 3
Android 上的蓝牙概述 两个蓝牙权限: 蓝牙通用应用框架如图 1 所示。
Android 平台支持 ltuses-permission
android:namequotandroid. 蓝牙协议栈,允许一台设备与另外的蓝牙设备无线交换 permission.BLUETOOTHquot /gt 数据,另外
Android 还提供了相关的蓝牙 API 来 支 持 蓝 ltuses-permission
android:namequotandroid. 牙方面应用的开发。
permission.BLUETOOTH_ADMINquot /gt 4 基于
Android 的蓝牙聊天系统 在本聊天系统中, 一部
Android 手机作为蓝牙服务 器端, 另外的
Android 手机作为蓝牙客户端。
客户端连 到 服 务 器 ,给 服 务器 发 送 并 接 收 文 本 消 息 ;服 务 器 也 能 够给客户端发送并接收文本消息。
本系统主要用到的
Android 系统组件为 Activity 和 Service 。
在
Android 的设计中,每个 Activity 都是一个独 立 的 进 程 , 每 个 Service 也 是 一 个 独 立 的 进 程 , 而 Activity 要与 Service 进行通信 , 就是跨进程的通信 ,这 时就需要使用 Binder 机制了。
Android 对 Binder 机制进 行了抽象,定义了 IBinder 接口。
在上层 ,其具体实现是 由 AIDL (
Android Interface Definition Language 即 图 1 蓝牙通用应用框架
Android 接口描述语言)来完成的。
使用蓝牙进行通信有主要的四个步骤 : 设置蓝牙 、 本文在蓝牙通信服务器端和客户端都使用了 MVC 搜索蓝牙设备、连接设备和传输数据。
模 式,采 用 分 层 的 结 构 ,具 体 分为 表 示 层 、控 制 层 、业 务 本文用到的主要类有: 和 数 据 交 换 层 , 对 应 MVC 设 计 模 式 中 的 View、 80 2012 年 6 月 www.infos ting .org 技术实践 案 例 Successful CasesController 和 Model 。
软件总体架构如图 2 所示。
表示层向用户展示模型的状态,在本软件中是以每个 Activity 的对应的页面、 对话框和一些显示控件所展现 ,一般 以 layout 文 件 夹 下 的 布 局 文 件 承 载 ,它 主 要 用来输入和显示文本消息、打开蓝牙可见性及搜索蓝牙设备。
控制层负责表示层和业务层的流程控制 ,一方面将表示层的调用发到业务层请求处理 ;另一方面将业务层的处理结果反应到表示层进行界面上的显示。
业务和数据交互层,封装了蓝牙数据传输的核心操作,如创建 socket 创建通道、传输数据、处理输入输出流 图 2 软件总体架构等。
它可以通过控制层被调用,也可以在收到连接请求或 文 本 消 息 时 把 结 果 返回 给 控 制 层 , 进 而 返 回 到 表 示 BtStreamWatcher 线程 , 用 来 监 听 这 个 socket 里 的 输 入层。
输出流,把此线程也放到另外一个 HashMap 里。
接着创 整个系统采用了 MVC 设计模式, 对整个代码进行 建新的 ConnectionWaiter 线程,继续监听新的连接请求。
了分层,使程序结构更加清晰、代码更加健壮,提高了模 也就是说 ,创建多个通信线程 ,并放到 HashMap 里进 行块化程度,各模块职责明确,高效率地处理相应事件。
管理,以完成蓝牙的一对多通信。
5 系统实现 ⑥ BtStreamWatcher 用 来 处 理 输 入 输 出 流 。
在 系统分为服务器端和客户端分别进行实现。
BTServer 界 面 上 进 行 输 入 的 时 候 , 根 据 目 的 地 址5.1 蓝牙聊天系统服务器端 (address)的 不 同 ,从 HashMap 里 取 出 对 应 的 socket ,由 ① 在 BTServer 里 ,有 两 个 ListView,分 别 用 来 显 示 它来向此 address 发送消息 。
接收到文本消息时 , 回调从 不 同 客 户 端 接 收 到的 文 本 消 息 ,两 个 输 入 框 ,用 来 输 OnMessageReceivedListener 来通知上层,在界面上显示。
入文本消息发给客户端。
这是程序的界面构成。
5.2 蓝牙聊天系统客户端 ② 启动程序 后 ,到 StartDiscoverableModeActivity 界 ① 在 BtClient 里,有一个 listView 和一个输入框,分面,提示用户设置本设备“可被查找”。
“可被查找 ”的含 别 用 来 显 示 接 收 到的 服 务 器 端 发 送 的 消 息 和 输 入 文 本义是其他蓝牙设备在搜索的情况下 ,能获得服务器端的 消息向服务器端发送。
这是程序的界面构成。
存在及其相关信息。
为了隐私保护及安全,蓝牙设备默 ② 启 动 程 序 后 ,客 户 端 进 行 初 始 化 操 作 ,包 括 构 造认是关闭状态,需要在用户的同意下才打开并设置为可 OnMessageReceivedListener 、OnConnectionServiceReady被查找。
Listener ;启动 ConnectionService 。
③ 服 务 器 进 行 初 始 化 操 作 , 包 括 构 造 ③ 准 备 工 作 完 毕 后 , 回 调 OnConnectionServiceOnMessageReceivedListener 用 以 监 听 消 息 到 来 事 件 ;启 ReadyListener ,启动 ServerListActivity 界面,显 示 搜 索 到动 ConnectionService ,由它来处理发送和接收文本消息。
的蓝牙设备, 点击服务器端所在设备地址, 通过 ④ 在 ConnectionService 里 , 创 建 ConnectionWaiter Connection 调 用 ConnectionService 的 connect 函 数 , 来线 程 , 在 ConnectionWaiter 线 程 里 创 建 Bluetooth 向服务器发起连接请求。
ServerSocket 监听连接请求。
④ 等 服 务 器 接 受 连 接 请 求 后 , 返 回 Bluetooth ⑤ 在 有 连 接 请 求 的 时 候 ,ConnectionService 里 的 Socket,把服 务 器 端 地 址 address 和 这 个 BluetoothSocketConnectionWaiter 线程接收请求, 创建 BluetoothSocket , 放到 HashMap 里, 用来管理 socket。
接着启动 BtStream并把远端请求的地址 address 和这个 BluetoothSocket 放 Watcher 线程,用来监听这个 socket 里的输入输出流,把到 HashMap 里 , 用 来 管 理 socket 。
接 着 启 动 此线程也放到另外一个 HashMap 里。
信息安全与技术 2012 年 6 月 81 Successful Cases 案 例 技术实践 ⑤ BtStreamWatcher 用 来 处 理 输 入 输 出 流 。
在 参考文献 BTClient 界面上进行输入的时候, 根据服务器地址 ,从 1 靳岩 姚尚明 .Google
Android 开发 入门 与 实 战 M. 北 京 :人 民邮 HashMap 里取出对应的 socket ,由它 来 向 此 服 务器 发 送 电出版社,2009. 2 胡新华 杨继 隆 姜 伟等 . 蓝 牙 技 术 综 述 J. 现代 电 子 技 术 ,2002 , 消 息 。
接 收 到 文 本 消 息 时 , 回 调 OnMessageReceived 5:93-96. Listener 来通知上层,在界面上显示。
3 杨丰盛 .
Android 技 术 内 幕 系统 卷 M. 北 京 :机 械 工 业出 版 社 , ⑥ 启动第二个客户端,进行同样操作。
2011. 6 结束语 4 朱 勇 . 回 声 消 除 技 术 在 蓝 牙 车 载 免 提 系 统 中 的 应 用 J. 黑 龙 江 水专学报,2008 ,1:112-115. 本文首先讨论了
Android 开 发 应 用程 序 的 组 成 ,然 5 余 志 龙 等 .Google
Android SDK 开 发 范 例 大 全 . 人 民 邮 电 出 版 后 介 绍 了 蓝 牙 相 关 知 识 及
Android 平 台 上 蓝 牙 开 发 的 2009 年 07 月 . 实现及方法。
本文以 MVC 模式架构设计了蓝牙通信的 服 务 器 端 和 客户 端 ,并 对 各 层 作 了 简 要介 绍 ,详 细 实 现 作者简介: 了服务器端和客户端。
实验证明,本文所设计的蓝牙聊 孟刚 1981- ,男 ,汉 族 ,陕 西 人 ,软 件 工 程 硕 士 ,现 供 职 于 上 海 华 天系统简单可靠,可最多支持 10 人同时在线聊天。
章信息科技有限公司 ;研究方向:嵌入式系统软件 。
【上接第 75 页】 ② 在 Windows 中安装网卡驱动程序。
加打印机向导”安装本地打印机。
在安装过程中会出现 ③ 若非即插即用网卡,则手工设置网卡的 IP、I/O 基 是 否 设 置 打 印 机 为 共享 打 印 机 的 对 话 框 ,此 时 选 择 “共 址等跳线。
享为”, 然后按照 Windows2000 给出的相应提示进行安 (2)制作网线 装,直到完成。
(3)网络连接 4 结束语 此 步 用 带 RJ-45 接 口 的 双 绞 线 连 接 计 算 机 网 卡 口 项目驱动教学的实施,为学生提供了自主学习的大 与集线器端口。
量机会,唤起了学生的主体意识。
一个项目完成了,学生 (4)配置网络协议 获得了成就感.