Android开发蓝牙篇之蓝牙配对、连接与接收数据
2017-08-23 14:50
1216 查看
首先是此部分涉及到的类
BluetoothAdapter 蓝牙适配器,即该类里面包含了蓝牙使用中常用到的一些API。BroadcastReceiver 广播接收者,不难猜测,蓝牙设备开启或者关闭、搜索到周边设备就要来通知应用,那么Android系统就会以广播的方式来通知。
BluetoothDevice 蓝牙设备,即一个相当于蓝牙设备的类,实现了Parcelable接口,用于Android的IPC通信机制。里面实在广播时发送的蓝牙的相关信息:蓝牙名称,地址,类型和uuid等。
蓝牙配对操作
public void makePair(Context context, String address, MakePariBlueToothListener mMakePariListener) throws Exception { this.mMakePariListener = mMakePariListener; this.context = context; IntentFilter iFilter = new IntentFilter( BluetoothDevice.ACTION_BOND_STATE_CHANGED); context.registerReceiver(mSearchReceiver, iFilter); enableBlueTooth(); BluetoothDevice device = BTadapter.getRemoteDevice(address); device.createBond(); }
在蓝牙配对过程中,设备会以广播的方式告知应用配对的过程和结果如:配对开始、配对成功与失败、配对结束等,所以这里创建一个MakePariBlueToothListener 的配对监听器的接口,在配对的广播中调用监听器的各个结果由用户处理配对结果。所以要传递一个配对监听器的对象,还有注册广播接收者。
之后依据对方蓝牙地址,获取蓝牙设备对象BluetoothDevice,调用Android的api的device.createBond()方法开始蓝牙配对,之后再以广播的方式获取到配对结果。
public interface MakePariBlueToothListener { public void whilePari(BluetoothDevice device); public void pairingSuccess(BluetoothDevice device); public void cancelPari(BluetoothDevice device); }
在开始配对后调用whilePari( )方法,并将配对的蓝牙设备对象返回给调用者。
在配对成功后调用pairingSuccess( )方法,也将配对的蓝牙设备对象返回给调用者。
在配对失败或者取消后调用cancelPari( )方法,也将配对的蓝牙设备对象返回给调用者。
广播接收者的处理:
private BroadcastReceiver mSearchReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub String action = arg1.getAction(); switch (action) { case BluetoothDevice.ACTION_BOND_STATE_CHANGED: device = arg1.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); switch (device.getBondState()) { case BluetoothDevice.BOND_BONDING:// 正在配对 mMakePariListener.whilePari(device); break; case BluetoothDevice.BOND_BONDED:// 配对结束 mMakePariListener.pairingSuccess(device); break; case BluetoothDevice.BOND_NONE:// 取消配对/未配对 mMakePariListener.cancelPari(device); default: break; } break; } } };
在广播接收者中,接收到ACTION_BOND_STATE_CHANGED的广播时,说明配对时蓝牙设备的关系状态发生改变,依据改变的状态,调用之前的蓝牙配对监听器的不同方法。
在收到BOND_BONDING的状态时说明开始配对了,就调用监听器的whilePari( )方法。
接收到BOND_BONDED的状态时说明已经配对了,并且配对成功了,就可以调用监听器的pairingSuccess( )方法。
接收到BOND_NONE就表示配对失败了,或者是配对取消了,就可以调用监听器的cancelPari( )方法。
统一由用户做出不同的相应操作。
蓝牙连接与接收数据操作
public BluetoothSocket getBluetoothSocket(String address) throws IOException { BluetoothDevice device = BTadapter.getRemoteDevice(address); BluetoothSocket socket = device.createRfcommSocketToServiceRecord(UUID .fromString(BlueTooth.MY_UUID)); return socket; }
首先依据对方的蓝牙地址获取蓝牙设备对象,再从蓝牙设备对象中获取设备连接的Socket,而UUID是由Android设备统一的蓝牙的通用唯一识别码 ,获取到socket后就可以直接在socket中得到对应的输入流和输出流了
socket.connect(); InputStream is = socket.getInputStream();
这里就是先通过socket建立连接后,获取一个输入流的对象,之后就流的操作了,也不再多说了。
下面贴出整合蓝牙操作的Java源代码:
码云链接:https://gitee.com/D_inasour/codes/8c5yt4nd2xb9uzml10h7e16
csdn资源链接:http://download.csdn.net/download/d_inosaur/9946750
相关文章推荐
- Android 蓝牙设备通讯的开发(配对/连接/传输数据)
- Android 6.0后蓝牙的开发,搜索,配对,连接发送数据等(二)
- Android 6.0后蓝牙的开发,搜索,配对,连接发送数据等(一)
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- Android 蓝牙开发之搜索、配对、连接、通信大全
- android开发之蓝牙配对连接的方法
- Android 低功耗蓝牙的多设备连接与数据接收,简单实现
- android开发之蓝牙主动配对连接手机
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- Android安卓蓝牙BLE 扫描连接接收数据 封装好的类
- [置顶] Android 蓝牙开发之搜索、配对、连接、通信大全
- 如何实现android蓝牙开发 自动配对连接,并不弹出提示框
- Android之蓝牙开发初编(发现蓝牙,配对蓝牙,连接蓝牙)
- android开发之蓝牙配对连接的方法
- android开发之蓝牙配对连接的方法
- Android开发笔记(一百六十二)蓝牙设备的连接与配对
- Android开发之蓝牙连接与配对设备
- android开发之蓝牙主动配对连接手机
- Android 蓝牙开发之搜索、配对、连接、通信大全
- Android 蓝牙开发之搜索、配对、连接、通信大全