Android 蓝牙自动打开并扫描设备,以及获取对方蓝牙设备的种类

坑是这个样子的:大家可以写一段蓝牙的代码,监测蓝牙设备是否是开启的,如果没有开启请开启蓝牙设备并且扫描周围设备。那么代码就是这个样子的:

if (!mAdapter.isEnabled()){
                mAdapter.enable();
            }

            if (mAdapter.isDiscovering()) {
                Log.d(TAG, "btnScanBlue: true");
                mAdapter.cancelDiscovery();
                mAdapter.startDiscovery();
            }else{
                Log.d(TAG, "btnScanBlue: " + mAdapter.isEnabled());
                mAdapter.startDiscovery();
            }
运行一下试试呢,就会发现打印的日志虽然是 enable 了但依然是 false 嘛!导致并没有自动扫描,也就没有设备的发现了。当然这个 log 也是我最后排查错误的时候想到的。网络的资源大多都没有这个问题,解决方式如下两种:

1. 第一种是改业务逻辑,当进入这个操作界面的时候就自动 enable,用户按下按钮或者其他的时候开始扫描。

2. 在 enable 及 startDiscovery() 之间, sleep 一小会儿,就可以解决这个问题。


那如何获取对方蓝牙设备的种类呢?在广播接收者里写,上代码:

if (action.equals(BluetoothDevice.ACTION_FOUND)) {
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

                int deviceClass = device.getBluetoothClass().getMajorDeviceClass();
                mTxtDevice.append(device.getName() + ": " + device.getAddress() + "\n");

                switch (deviceClass) {
                    case BluetoothClass.Device.COMPUTER_UNCATEGORIZED:
                        mTxtDevice.append("平板电脑\n");
                        break;
                    case BluetoothClass.Device.PHONE_UNCATEGORIZED:
                        mTxtDevice.append("手机\n");
                        break;
                    default:
                        mTxtDevice.append("其他类型...\n");
                        break;
                }


            }else if(action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){
		// 完成
            }

转载请标明出处:http://blog.csdn.net/qq_24712507



Demo代码

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值