关于安卓蓝牙配对上设备后为什么连接失败?

天然卷 发布于 2015/12/07 18:00
阅读 4K+
收藏 0

【开源中国 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();
			}
		}
	}
}



万分感激!



加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部