Android Bluetooth蓝牙技术基础讲解

原创 2016年05月30日 17:28:46

一:Bluetooth包简介

Android平台提供了一个android.bluetooth的包,里面实现蓝牙设备之间通信的蓝牙API。总共有8个类,常用的四个类如下:


BluetoothAdapter类

代表了一个本地的蓝牙适配器。它是所有蓝牙交互的入口点。利用它你可以发现其他蓝牙设备,查询绑定了的设备,使用已知的MAC地址实例化一个蓝牙设备和建立一个BluetoothServerSocket(作为服务器端)来监听来自其他设备的连接。


BluetoothDevice类

代表了一个远端的蓝牙设备,使用它请求远端蓝牙设备连接或者获取远端蓝牙设备的名称、地址、种类和绑定状态(其信息是封装在BluetoothSocket中)。


BluetoothSocket类

代表了一个蓝牙套接字的接口(类似于TCP中的套接字),它是应用程序通过输入、输出流与其他蓝牙设备通信的连接点。


BlueboothServerSocket类

代表打开服务连接来监听可能到来的连接请求(属于server端),为了连接两个蓝牙设备必须有一个设备作为服务器打开一个服务套接字。当远端设备发起连接连接请求的时候,并且已经连接到了的时候,BlueboothServerSocket类将会返回一个BluetoothSocket。


二:常用类的使用

BluetoothAdapter:蓝牙适配器

cancelDiscovery()取消探索,当我们正在搜索设备的时候调用这个方法将不再继续搜索
disable()关闭蓝牙
enable()打开蓝牙,这个方法打开蓝牙不会弹出提示,更多的时候我们需要问下用户是否打开,以下两行代码同样是打开蓝牙,但会提示用户:

Intentenabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(enabler);
getAddress()获取本地蓝牙地址
getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdapter
getName()获取本地蓝牙名称
getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备
getState()获取本地蓝牙适配器当前状态
isDiscovering()判断当前是否正在查找设备,是则返回true
isEnabled()判断蓝牙是否打开,已打开返回true,否则返回false
listenUsingRfcommWithServiceRecord(String name,UUID uuid)根据名称,UUID创建并返回BluetoothServerSocket,这是创建BluetoothSocket服务器端的第一步
startDiscovery()开始搜索,这是搜索的第一步


BluetoothDevice:远程蓝牙设备

createRfcommSocketToServiceRecord(UUIDuuid)根据UUID创建并返回一个BluetoothSocket,这个方法也是我们获取BluetoothDevice
的目的——创建BluetoothSocket

这个类其他的方法,如getAddress()、getName()等,同BluetoothAdapter。


BluetoothSocket:客户端

//这个类一共有6个方法

close()关闭

connect()连接

isConnected()判断是否连接

getInptuStream()获取输入流

getOutputStream()获取输出流

getRemoteDevice()获取

BluetoothSocket指定连接的远程蓝牙设备


BluetoothServerSocket:服务端

//这个类一共有4个方法
accept()
accept(int timeout)
close()关闭
getChannel()返回这个套接字绑定的通道

两者的区别在于后面的方法指定了过时时间,需要注意的是,执行这两个方法的时候,直到接收到了客户端的请求(或是过期之后),都会阻塞线程,应该放在新线程里运行。还有一点需要注意的是,这两个方法都返回一个BluetoothSocket,最后的连接也是服务器端与客户端的两个BluetoothSocket的连接


三:数据传输

蓝牙数据传输——服务器端

1、获得BluetoothAdapter。 
2、通过BluetoothAdapter.listenUsingRfcommWithServiceRecord(name,UUID uuid)方法创建BluetoothServerSocket对象。 
3、通过luetoothServerSocket.accept()方法返回一个BluetoothSocket对象。由于该方法处于阻塞状态,需要开启线程来处理。 
4、通过BluetoothSocket.getInputStream()和BluetoothSocket.getOutputStream()方法获得读写数据的InputStream和OutputStream对象。 
5、通过InputStream.read()方法来读数据。通过OutputStream.write()方法来写数据。


蓝牙数据传输——客户端

1、获得BluetoothAdapter。 
2、通过BluetoothAdapter.getRemoteDevice(String address)获得指定地址的BluetoothDevice对象。 
3、通过BluetoothDevice.createRfcommSocketToServiceRecord (UUID uuid)方法创建BluetoothSocket对象。
4、通过BluetoothSocket.connect()方法来连接蓝牙设备。 
5、通过BluetoothSocket.getInputStream()和BluetoothSocket.getOutputStream()方法获得读写数据的InputStream和OutputStream对象。 
6、通过InputStream.read()方法来读数据。通过OutputStream.write()方法来写数据。


四:Tip

UUID

// UUID:全局唯一标识符,格式为:88888888-44444-44444-44444-123456AAAAAA

// 两个蓝牙设备进行连接需要使用同一个UUID


添加权限

BLUETOOTH_ADMIN
BLUETOOTH


?
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android Bluetooth蓝牙技术出体验

转自:http://www.jb51.net/article/79334.htm1.Bluetooth包简介Android平台提供了一个android.bluetooth的包,里面实现蓝牙设备之间通信...
  • txadf
  • txadf
  • 2016-08-15 22:15
  • 161

Android蓝牙技术Bluetooth使用流程(详解)

蓝牙设备之间的通信主要包括了四个步骤设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的数据传输具体编程实现1. 启动蓝牙功能首先通过调用静态方法getDefaultAdapter()获...
  • pengkv
  • pengkv
  • 2016-02-12 20:32
  • 4182

Android蓝牙技术Bluetooth初体验

一:Bluetooth包简介//Android平台提供了一个android.bluetooth的包,里面实现蓝牙设备之间通信的蓝牙API。总共有8个类,常用的四个类如下:BluetoothAdapte...
  • pengkv
  • pengkv
  • 2016-02-12 19:28
  • 2168

Android Bluetooth蓝牙技术初体验

转载自 : http://www.jb51.net/article/79334.htm 这篇文章主要介绍了Android Bluetooth蓝牙技术初体验的相关资料,需要的朋友可以参考下 ...

Android Bluetooth蓝牙技术使用流程详解

转自:http://m.jb51.net/article/79335.htm Android Bluetooth蓝牙技术使用流程详解 作者:pengkv 这篇文章主要介绍了And...

蓝牙技术基础

  • 2012-08-04 17:54
  • 2.83MB
  • 下载

蓝牙技术基础

  • 2013-08-11 15:03
  • 2.85MB
  • 下载

蓝牙技术(BlueTooth)——(一)

一,概述    蓝牙是一种短距离的无线通信技术标准。    蓝牙协议分为4层,即核心协议层,电缆替代协议层,电话控制协议层,和      采纳的其它协议层。    这4中...

Bluetooth4_3 蓝牙技术

  • 2017-08-11 16:12
  • 13.76MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)