Android 蓝牙设备与手机之间的数据传输

来源:互联网 发布:php时间 运算 编辑:程序博客网 时间:2024/04/30 15:53

工作时间不是很长,如以下观点中出现不对的地方欢迎指正

目前在Android领域蓝牙有2.0和4.0,这篇文章只写一下2.0的  以后我会继续补充4.0的

2.0和4.0的区别还是很大的,首先说4.0的耗电量就是很低


当我们准备对接一个设备的时候  首先是需要拿到该设备的UUID 这个uuid非常好拿到,目前Android市场有很多蓝牙读写器(BLE读写器)随便一搜很多的,连接上设备,去拿到他的UUID,准备工作做完之后  就是需要扫描连接

首先是扫描:首先我们需要拿到蓝牙的管理者 BluetoothManager  mbluetoothmanager =activity.getSystemServer(Context.BLUETOOTH_SEVRVER);

得到蓝牙的适配器对象  mbluetoothadapter=mbluetoothmanager .getAdapter(); 这是我们需要判断当前手机是否打开蓝牙mbluetoothadapter.isEnable();没有打开的话 我们就打开enable();

接下来开始扫描 mbluetoothadapter.statrtLeScan();这时可以在这个方法里面实现一个回调, LeScanCallBack 目的是拿到蓝牙设备的相关属性,比如name,address(我认为还是这两个是必须拿到的),当拿到设备信息之后,进行判断因为可能周围有很多蓝牙设备,我们只想拿到我们想要的  只需要根据名字进行过滤即可,扫描到我们想要的设备之后,我们就可以关掉扫描,因为蓝牙设备只能拦连接一个,不能多个手机都连接。

当设备的地址拿到之后我们就要进行,手机与蓝牙设备之间的连接了,这时我们有了蓝牙的名字和地址,我们就能连接起来,我们需要开启一个线程,我们需要维护一个手机与设备之间的数据连接正常与交互,我们需要根据地址拿到远程设备BluetoothDevice bd=mbluetoothadapter.getReoteDevice(address);根据这个设备创建一个蓝牙客户端,根据uuid

bd.createRfcommSocketToServiceRecord(UUID);创建一个socket。如果当前设备没有连接就发起连接Method creMethod=BluetoothDevice.class.getMethod("createBond");

creMethod.invoke(bd);(这两句话很重要,起到了配对的作用) mbluetoothadapter.connect();

然后拿到输入输出流  对蓝牙设备进行数据的写入和读取

这就完成了一个简单的蓝牙设备的数据传输

1 0
原创粉丝点击