有关Android Bluetooth/蓝牙的介绍

本文详细介绍了Android蓝牙开发的三个方面:扫描蓝牙(包括startDiscovery()、startLeScan()及其替代方法startScan()),连接蓝牙设备(通过connectGatt()及BluetoothGattCallback处理连接状态和服务发现),以及蓝牙设备间的通信(通过BluetoothGattCharacteristic进行数据交换)。同时,提到了蓝牙开发中需要注意的权限问题、数据读写问题和相关示例代码。
摘要由CSDN通过智能技术生成

最近在做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();
                        }
                    }
                });
            }
        };

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值