在这个项目中,手机端作为客户端,去连接到蓝牙模块上。而接受蓝牙模块发过来的信息的时候,是没有必要再创建服务器端的,我们只要一个不断监听对方消息的循环就行。
注意:在socket.connect();之前,我们需要执行bluetoothadapter.canceldiscovery();,这是为了停掉搜索设备,否则连接可能会变得非常慢,并且容易失败。
蓝牙开发中的几个关键步骤:
1、开启手机上的蓝牙功能。
2、搜索附近存在的蓝牙设备。
3、创建蓝牙socket,由socket获取device。
4、发送和读取数据。
5、清场(断开各种线程,注销广播接收器等)
//主线条
Adapter ----> device -----> socket
//step1:取得默认的蓝牙适配器
- private BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter();
//step2:强制开启蓝牙设备
- if(!mBtAdapter.isEnabled()){
- mBtAdapter.enable();
- }
//step3:注册广播接收器,注意:开启step4即搜索设备前,应先注册广播接收器
//step4:开始搜索附近可以存在的蓝牙设备,之后系统会发送广播给广播接收器
- mBtAdapter.startDiscovery();
//step5:根据搜索到的蓝牙设备的MAC地址,得到该设备</span>
- mBtDevice = mBtAdapter.getRemoteDevice(mBtAddress);
//step6:开启客户端线程,线程里面完成了与SPP协议的连接
- mBtClientConnectThread = new clientThread();
- mBtClientConnectThread.start();
- mBtAdapter.cancelDiscovery();
- mBtSocket = mBtDevice.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
- mBtSocket.connect();
- sendMessageHandle(“要发送的数据”);
(由于接收数据的线程已经打开,所以当有数据到来时,数据就自动赋给变量S了,而此时S就是我们读取的数据 )