一对多聊天系统的实现方案

一对多聊天系统的实现方案,第1张

  引言

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

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

  1 Android 应用程序组成

  一般来说,Android 应用程序主要由下列四部分组成,分别是:

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

  AcTIvity

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

  Broadcast Receiver

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

  Service

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

  Content Provider

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

  本文系统主要用到了Activity 和Service.

  2 蓝牙

  蓝牙这个名称来自于第十世纪的一位丹麦国王 Harald Blatand , Blatand在英文里的意思可以被解释为Bluetooth(蓝牙)。现取其"统一"的含义,用来命名意在统一无线局域网通讯标准的蓝牙技术。它是一种支持设备短距离通信(一般10m 内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用蓝牙技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与Internet之间的通信,从而使数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,其数据速率为1Mbps,采用时分双工传输方案实现全双工传输。

  3 Android 上蓝牙模块

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

  使用蓝牙进行通信有主要的四个步骤:

  设置蓝牙、搜索蓝牙设备、连接设备、传输数据。

  本文用到的主要类有:

  BluetoothAdapter:表示本地的蓝牙适配器。BluetoothAdapter是所有蓝牙 *** 作的入口点。

  用它可以搜索其他的蓝牙设备、查询已配对的设备、用已知的MAC地址来实例化一个蓝牙设备(BluetoothDevice),建立一个BluetoothServerSocket来监听其他设备的连接请求。

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

  BluetoothServerSocket :表示一个开启的Server Socket 来监听连接请求(类似于TCPServerSocket)。为了连接两个蓝牙设备,其中一台设备必须用这个类创建Server Socket.

  当远端设备向这个设备发出了连接请求,BluetoothServerSocket接收请求后会返回一个已连接的BluetoothSocketBluetoothSocket:表示蓝牙套接字(类似于TCP socket),它是应用程序与其他蓝牙设备通过输入输出流交换数据的连接点。

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

  

一对多聊天系统的实现方案,第2张

 

  4 聊天系统设计

  蓝牙通信,类似于TCP通信,都需要有服务器端和客户端。在本聊天系统中,一部Android手机作为蓝牙服务器端,另外两台Android手机作为蓝牙客户端。客户端分别连到服务器,给服务器发送并接收文本消息;服务器也能够给客户端发送并接收文本消息。

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

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

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2713789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存