当前位置: 首页> 房产> 建筑 > 【Android】 怎么设置蓝牙等待设备连接和接收数据

【Android】 怎么设置蓝牙等待设备连接和接收数据

时间:2025/7/9 7:59:47来源:https://blog.csdn.net/qq_43358469/article/details/139358307 浏览次数:0次
项目需求

1.打开蓝牙之后等待别的蓝牙设备进行连接。
2.连接之后等待别的设备发送数据,然后接收数据。
3.跟别的蓝牙设备断开连接值进入到等待状态,等待别的蓝牙设备连接。

解决方式
//非手机终端的UUID
public static final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9B34FB");
//手机终端的UUID
public static final UUID MOB_UUID = UUID.fromString("00001105-0000-1000-8000-00805f9B34FB");
    private BluetoothServerSocket mSSocket;private BluetoothSocket socket;/*** 监听客户端发起的连接*/public void listen() {try {BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();mSSocket = adapter.listenUsingRfcommWithServiceRecord(TAG, SPP_UUID); //加密传输,Android强制执行配对,弹窗显示配对码
//            mSSocket = adapter.listenUsingInsecureRfcommWithServiceRecord(TAG, MOB_UUID); //明文传输(不安全),无需配对// 开启子线程Util.EXECUTOR.execute(new Runnable() {@RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overridepublic void run() {try {socket = mSSocket.accept(); // 监听连接
//                        mSSocket.close(); // 关闭监听,只连接一个设备loopRead(socket); // 循环读取} catch (Throwable e) {close();//当设备连接之后,对面设备断开蓝牙连接之后会出现一个 return -1 的异常listen();}}});} catch (Throwable e) {close();}}public void close() {super.close();try {if (socket != null) {socket.close();}if (mSSocket != null) {mSSocket.close();}} catch (Throwable e) {e.printStackTrace();}}
private BluetoothSocket mSocket;private DataOutputStream mOut;/*** 循环读取对方数据(若没有数据,则阻塞等待)*/@RequiresApi(api = Build.VERSION_CODES.KITKAT)void loopRead(BluetoothSocket socket) throws IOException {mSocket = socket;try {if (!mSocket.isConnected())mSocket.connect();mOut = new DataOutputStream(mSocket.getOutputStream());try (DataInputStream in = new DataInputStream(mSocket.getInputStream())) {byte[] buffer = new byte[1024];int bytesRead;while (true) {bytesRead = in.read(buffer);if (bytesRead == -1) {Log.e("test", "buff length: " + bytesRead);} else {byte[] data = new byte[bytesRead];System.arraycopy(buffer, 0, data, 0, bytesRead);String textData = new String(data);Log.i("test", "Received data: " + textData);}}}} catch (IOException e) {close();Log.e("test", "error io:" + e.getMessage());throw e; // 将捕获到的异常抛出}}
关键字:【Android】 怎么设置蓝牙等待设备连接和接收数据

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: