• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 建筑房产 > 正文

    基于Android蓝牙聊天系统的设计与实现

    时间:2020-09-19 07:55:03 来源:达达文档网 本文已影响 达达文档网手机站

    【 摘要 】 针对当前Android在移动互联网市场份额的日益增长,以及蓝牙作为短距离无线通信技术的流行,通过研究Android应用程序组成和Android中蓝牙的实现,最后设计实现了基于Android平台的蓝牙聊天系统。总体来说,文章所设计的蓝牙聊天系统具有性能强、通用性好以及扩展能力强等优点。

    【 关键词 】 Android;蓝牙;聊天系统

    Bluetooth Chat System Based on Android Platform

    Meng Gang

    (Shanghai Huazhang Information Technologyco.,ltdShanghai 200235)

    【 Abstract 】 In view of 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

    0 引言

    随着移动通信技术的进步,移动终端在近年中发展迅速,尤其是智能手机平台Android的发布与开源,其发展势头强劲,市场占有率稳步提升,给移动领域注入了新的活力。根据市场研究公司Canalys的调查数据,在Canalys调查的全世界56个国家中,Android在其中35个国家处于领先地位,并占据了全球48%的市场份额。

    Android一词的英文本义是“机器人”,它是 Google 公司于2007年11月宣布的基于Linux平台的开源手机操作系统,它是一套真正意义上的开放性的移动设备综合平台。该平台由操作系统、中间件、用户界面和应用软件组成。Android最大的特点在于其开放性,它宣布开放源代码,手机制造商、手机芯片厂商、移动运营商以及开发者都可以对源码进行学习和修改并进行开发。 蓝牙是智能手机的一项重要功能,它也被整合到了Android平台上,作为Android的一个移动网络通信模块。Android系统提供了蓝牙开发的API,供开发者调用。

    本文实现了基于 Android平台通过蓝牙进行通信的一对多聊天系统。选择蓝牙作为通信手段是由于蓝牙连接简单,避免了网络连接对于网络及信号强度的依赖性。Android手机使用蓝牙模块分别作为客户端和服务器端,实现好友或陌生人间即时的一对多聊天系统。

    1 Android应用程序概述

    一般来说,Android应用程序主要由四部分组成:Activity(活动对象)、Broadcast Receiver(广播接收器)、 Service(服务)、 Content Provider(内容提供者)。然而,并不是所有的程序都需要全部部分,可以由上面的一个或几个来组建。使用某些组件构建Android应用程序时,需要在AndroidManifest.xml文件里进行声明。

    1.1 Activity

    在Android应用程序中,Activity一般代表手机的一屏,即用户可见的一个界面。 Android应用程序的运行过程就是在不同的Activity之间切换的过程。每个Activity都有自己的视图和事件对应。大多数应用程序都有多个Activity。

    1.2 Broadcast Receiver

    Broadcast Receiver 是一个接受广播消息并响应的组件。广播消息可以由系统产生,例如时区发生变化、电池电量发生变化等。同时也可以由其他应用程序产生,对于这两种广播,在 Broadcast receiver 里都可以设置相应的过滤规则来进行接收。

    1.3 Service

    Service是具有长生命周期并且没有用户界面的代码。通过StartService(Intent service)可以来启动一个 Service,通过Context.bindService()可以绑定一个Service。当已经连接上了一个服务,就可以使用服务提供的外部接口来和服务通讯了。

    2 Content Provider

    Content Provider 就是一个类,作为应用程序之间唯一的共享数据的途径,它实现了一个标准的方法集合,其他应用程序可以使用这些方法在应用程序之间共享数据。

    3 Android上的蓝牙概述

    蓝牙通用应用框架如图1所示。Android平台支持蓝牙协议栈,允许一台设备与另外的蓝牙设备无线交换数据,另外Android还提供了相关的蓝牙API来支持蓝牙方面应用的开发。

    使用蓝牙进行通信有主要的四个步骤:设置蓝牙、搜索蓝牙设备、连接设备和传输数据。

    本文用到的主要类有:

    1) BluetoothAdapter:表示本地的蓝牙适配器。BluetoothAdapter是所有蓝牙操作的入口点。用它可以搜索其他的蓝牙设备、查询已配对的设备、用已知的MAC地址来实例化一个蓝牙设备(BluetoothDevice),建立一个BluetoothServerSocket来监听其他设备的连接请求。

    2) BluetoothDevice:表示一个蓝牙设备。用它来向服务器端设备发起连接请求(通过BluetoothSocket),或者查询设备信息,如名字、地址、配对状态等。

    3) BluetoothServerSocket :表示一个开启的 Server Socket 来监听连接请求(类似于 TCP ServerSocket)。为了连接两个蓝牙设备,其中一台设备必须用这个类创建 Server Socket。当远端设备向这个设备发出了连接请求,BluetoothServerSocket接收请求后会返回一个已连接的BluetoothSocket。

    4) BluetoothSocket:表示蓝牙套接字(类似于TCP socket),它是应用程序与其他蓝牙设备通过输入输出流交换数据的连接点。

    要在Android应用程序中使用蓝牙特性,必须声明两个蓝牙权限:

    4 基于Android的蓝牙聊天系统

    在本聊天系统中,一部Android手机作为蓝牙服务器端,另外的Android手机作为蓝牙客户端。客户端连到服务器,给服务器发送并接收文本消息;服务器也能够给客户端发送并接收文本消息。

    本系统主要用到的 Android系统组件为Activity和Service。在 Android的设计中,每个Activity都是一个独立的进程,每个Service也是一个独立的进程,而Activity要与Service进行通信,就是跨进程的通信,这时就需要使用Binder机制了。Android 对Binder 机制进行了抽象,定义了IBinder接口。在上层,其具体实现是由AIDL(Android Interface Definition Language,即 Android接口描述语言)来完成的。

    本文在蓝牙通信服务器端和客户端都使用了MVC模式,采用分层的结构,具体分为表示层、控制层、业务和数据交换层,对应MVC设计模式中的View、Controller和Model。

    软件总体架构如图2所示。

    表示层向用户展示模型的状态,在本软件中是以每个Activity的对应的页面、对话框和一些显示控件所展现,一般以layout文件夹下的布局文件承载,它主要用来输入和显示文本消息、打开蓝牙可见性及搜索蓝牙设备。

    控制层负责表示层和业务层的流程控制,一方面将表示层的调用发到业务层请求处理;另一方面将业务层的处理结果反应到表示层进行界面上的显示。

    业务和数据交互层,封装了蓝牙数据传输的核心操作,如创建socket创建通道、传输数据、处理输入输出流等。它可以通过控制层被调用,也可以在收到连接请求或文本消息时把结果返回给控制层,进而返回到表示层。

    整个系统采用了MVC设计模式,对整个代码进行了分层,使程序结构更加清晰、代码更加健壮,提高了模块化程度,各模块职责明确,高效率地处理相应事件。

    5 系统实现

    系统分为服务器端和客户端分别进行实现。

    5.1 蓝牙聊天系统服务器端

    ①在BTServer里,有两个ListView,分别用来显示从不同客户端接收到的文本消息,两个输入框,用来输入文本消息发给客户端。这是程序的界面构成。

    ②启动程序后,到 StartDiscoverableModeActivity界面,提示用户设置本设备“可被查找”。“可被查找”的含义是其他蓝牙设备在搜索的情况下,能获得服务器端的存在及其相关信息。为了隐私保护及安全,蓝牙设备默认是关闭状态,需要在用户的同意下才打开并设置为可被查找。

    ③服务器进行初始化操作,包括构造OnMessageReceivedListener 用以监听消息到来事件;启动 ConnectionService,由它来处理发送和接收文本消息。

    ④在ConnectionService里,创建ConnectionWaiter线程,在ConnectionWaiter线程里创建Bluetooth ServerSocket监听连接请求。

    ⑤在有连接请求的时候,ConnectionService里的ConnectionWaiter线程接收请求,创建BluetoothSocket,并把远端请求的地址address和这个BluetoothSocket放到 HashMap里,用来管理 socket。接着启动BtStreamWatcher 线程,用来监听这个socket里的输入输出流,把此线程也放到另外一个HashMap里。接着创建新的ConnectionWaiter 线程,继续监听新的连接请求。也就是说,创建多个通信线程,并放到HashMap里进行管理,以完成蓝牙的一对多通信。

    ⑥BtStreamWatcher 用来处理输入输出流。在BTServer界面上进行输入的时候,根据目的地址(address)的不同,从 HashMap 里取出对应的socket,由它来向此address发送消息。接收到文本消息时,回调OnMessageReceivedListener来通知上层,在界面上显示。

    5.2 蓝牙聊天系统客户端

    ①在BtClient里,有一个listView和一个输入框,分别用来显示接收到的服务器端发送的消息和输入文本消息向服务器端发送。这是程序的界面构成。

    ②启动程序后,客户端进行初始化操作,包括构造OnMessageReceivedListener、OnConnectionServiceReady Listener;启动ConnectionService。

    ③准备工作完毕后,回调OnConnectionService ReadyListener,启动 ServerListActivity界面,显示搜索到的蓝牙设备,点击服务器端所在设备地址,通过 Connection 调用ConnectionService的connect函数,来向服务器发起连接请求。

    ④等服务器接受连接请求后,返回Bluetooth Socket,把服务器端地址address和这个BluetoothSocket 放到 HashMap里,用来管理socket。接着启动BtStream Watcher线程,用来监听这个socket里的输入输出流,把此线程也放到另外一个HashMap里。

    ⑤BtStreamWatcher 用来处理输入输出流。在BTClient界面上进行输入的时候,根据服务器地址,从HashMap里取出对应的socket,由它来向此服务器发送消息。接收到文本消息时,回调OnMessageReceived Listener来通知上层,在界面上显示。

    ⑥启动第二个客户端,进行同样操作。

    6 结束语

    本文首先讨论了 Android开发应用程序的组成,然后介绍了蓝牙相关知识及Android平台上蓝牙开发的实现及方法。本文以MVC模式架构设计了蓝牙通信的服务器端和客户端,并对各层作了简要介绍,详细实现了服务器端和客户端。实验证明,本文所设计的蓝牙聊天系统简单可靠,可最多支持10人同时在线聊天。

    参考文献

    [1]靳岩,姚尚明.Google Android开发入门与实战[M].北京:人民邮电出版社,2009.

    [2]胡新华,杨继隆,姜伟等.蓝牙技术综述[J].现代电子技术,2002,(5):93-96.

    [3]杨丰盛. Android技术内幕系统卷[M]. 北京:机械工业出版社,2011.

    [4]朱勇.回声消除技术在蓝牙车载免提系统中的应用[J].黑龙江水专学报,2008,(1):112-115.

    [5]余志龙等.Google Android SDK开发范例大全.人民邮电出版,2009年07月.

    作者简介:

    孟刚(1981-),男,汉族,陕西人,软件工程硕士,现供职于上海华章信息科技有限公司;研究方向:嵌入式系统软件。

    相关热词搜索: 蓝牙 聊天 设计 系统 Android

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网