当前位置:   article > 正文

有关Android Bluetooth/蓝牙的介绍_bluetoothlescanner需要在子线程操作吗

bluetoothlescanner需要在子线程操作吗

最近在做android bluetooth方面的项目,在网上找了很多所谓的demo和官方的demo。发现或多或少的都有些问题,今天是第一次写技术方面的文章,我就从这篇开始吧!
关于android bluetooth 无非就是三点:
一. 扫描蓝牙 二. 连接蓝牙设备 三. 通信。
下面让我们就同第一点开始:
android蓝牙的扫描有三种函数:
1.public boolean startDiscovery();
2.public boolean startLeScan(LeScanCallback callback)和 public boolean startLeScan(final UUID[] serviceUuids, final LeScanCallback callback)。
这两张函数都是在BluethoothAdapter这个类中。下面我们就来解释下这两个函数:
public boolean startDiscovery()这个函数只能扫描传统意义的蓝牙设备 时间扫描12s自动关闭,这是异步操作扫描蓝牙设备。首先你要注册一个接收者。
filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(mReceiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(mReceiver, filter);
//广播接收者
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action))
}
}
}
};
当然还有其他的广播事件你也可以注册。请自己查看SDK。
public boolean startLeScan(LeScanCallback callback)和 public boolean startLeScan(final UUID[] serviceUuids, final LeScanCallback callback)这两个函数是扫描低功耗蓝牙设备的,好像没有扫描时间限制,只能调用public void stopLeScan(LeScanCallback callback)来关闭。这个两个不同的地方就是可以过滤你想要扫描的UUID,他们都是通过的LeScanCallback回调接口来返回扫描的结果。
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        LogUtil.d(TAG, device.getAddress()+" LeScanCallback:::"+device.getName());
                        if (!mArrayList.contains(device)) {
                            mArrayList.add(device);
                            mDeviceAdapter.notifyDataSetChanged();
                        }
                    }
                });
            }
        };
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

但是这种扫描低功耗蓝牙的方法在api21就被标记废弃使用。下面介绍第三扫描蓝牙设备的函数:
3.public void startScan(final ScanCallback callback)和public void startScan(List filters, ScanSettin

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/483798
推荐阅读
相关标签
  

闽ICP备14008679号