工作时间不是很长,如以下观点中出现不对的地方欢迎指正
目前在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();
然后拿到输入输出流 对蓝牙设备进行数据的写入和读取
这就完成了一个简单的蓝牙设备的数据传输