Android蓝牙API之BluetoothSocket类

ZDNet软件频道 时间:2010-08-17 作者:亿八佰 | 亿八佰 我要评论()
本文关键词:嵌入式 Android API

    本文通过BluetoothSocket类建立有关蓝牙通讯的套接字。从Android 2.0开始支持这一特性,蓝牙和LAN一样通过MAC地址来识别远程设备,建立完通讯连接RFCOMM通道后以输入、输出流方式通讯。

  一、连接设备

  蓝牙通讯分为server服务器端和client客户端,它们之间使用BluetoothSocket 类的不同方法来获取数据,

  1. 作为服务器

  如果一个设备需要和两个或多个设备连接时,就需要作为一个server来传输,在Android中提供了BluetoothServerSocket类来处理用户发来的信息,服务器端套接字在接受(accepted) 一个客户发来的BluetoothSocket时作出相应的响应。示例代码如下:

  private class AcceptThread extends Thread {

  private final BluetoothServerSocket cwjServerSocket;

  public AcceptThread() {

  BluetoothServerSocket tmp = null; //使用一个临时对象代替,因为cwjServerSocket定义为final

  try {

  tmp = myAdapter.listenUsingRfcommWithServiceRecord(NAME, CWJ_UUID); //服务仅监听

  } catch (IOException e) { }

  cwjServerSocket = tmp;

  }

  public void run() {

  BluetoothSocket socket = null;

  while (true) { //保持连接直到异常发生或套接字返回

  try {

  socket = cwjServerSocket.accept(); //如果一个连接同意

  } catch (IOException e) {

  break;

  }

  if (socket != null) {

  manageConnectedSocket(socket); //管理一个已经连接的RFCOMM通道在单独的线程。

  cwjServerSocket.close();

  break;

  }

  }

  }

  public void cancel() { //取消套接字连接,然后线程返回

  try {

  cwjServerSocket.close();

  } catch (IOException e) { }

  }

  }

  在这里Android开发网提醒大家需要注意的是服务器一般处理多个任务不嫩阻塞,必须使用异步的方法这里我们开了一个线程,目前Android的虚拟机上层没有提供I/O模型,这里我们以后会讲解高负载情况下性能优化解决方案。

嵌入式

Android

API


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134