【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
今天在学习蓝牙连接模块的时候遇到一点问题,自己找了老半天愣是没找出具体原因,麻烦熟悉安卓蓝牙开发的大神们解疑。
我遇到的问题是,我原先的想法是在广播接收器类(BtBroadcastReceiver)中接收到蓝牙配对某个设备成功的action里进行蓝牙连接,但是调试的时候发现设备配对上了,但是蓝牙没连接上,这让我感到郁闷,希望大家帮忙看看,给点思路。代码如下:
private class BtBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); if (action == BluetoothDevice.ACTION_BOND_STATE_CHANGED) { // 获取配对蓝牙设备 BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); // 判断是否设备已经配对 if (device.getBondState() == BluetoothDevice.BOND_BONDED) { String addr = device.getAddress(); String name = device.getName(); try { // 创建BluetoothSocket实例 btSocket = device.createInsecureRfcommSocketToServiceRecord( UUID.fromString("00001101-0000-1000-8000-00805F9B34FB")); } catch (IOException e) { Toast.makeText(getApplicationContext(), "蓝牙连接异常", Toast.LENGTH_SHORT).show(); } // 开启新线程与设备进行连接 new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub Message msg = new Message(); msg.what = SHOW_TOAST_MSG; try { // 连接设备 btSocket.connect(); msg.obj = "蓝牙连接成功"; handler.sendMessage(msg); } catch (IOException e) { Log.d("TAG", e.toString()); msg.obj = "蓝牙连接失败"; handler.sendMessage(msg); } } }).start(); } } } }