20160707_Android蓝牙服务的相关类简介之BluetoothAdapter

Android蓝牙服务的相关类简介之BluetoothAdapter

BluetoothAdapter

代表了本地设备蓝牙适配器,其作用有:执行基本的蓝牙任务,如初始化设备扫描,查询一系列配对的设备,利用MAC地址链接BluetoothDevice,
创建BluetoothServerSocket来监听其他设备的链接请求,开始对Bluetooth LE devices(android4.3后支持的蓝牙类型)的扫描.

如何得到BluetoothAdapter?
系统是JELLY_BEAN_MR1(android4.2* API17)或者更低版本,通过BluetoothAdapter.getDefaultAdapter() 的静态方法得到.
系统是JELLY_BEAN_MR2(android4.3 API18)或者更高版本,也可以通过下面方法获得

BluetoothManager manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter adapter = manager.getAdapter();

可以肯定的说,获得BluetoothAdapter是蓝牙操作的开端.

获得了BluetoothAdapter后,可以通过getBondedDevices获得已经配对的设备集合;通过startDiscovery()开始设备扫描;
创建BluetoothServerSocket监听到来的链接请求(listenUsingRfcommWithServiceRecord(String,UUID));
或者利用startLeScan(LeScanCallback callback)来开启扫BLE设备

常用方法

  • isEnabled()

    如果本地蓝牙处在可用状态(例如手机蓝牙开启)就返回true

  • getState()

    获得蓝牙状态 一般有BluetoothAdapter.STATE_BLE_ON ,STATE_BLE_TURNING_ON ,STATE_BLE_TURNING_OFF ,STATE_OFF

  • enable()

    打开蓝牙设备,这种方式不友好,建议使用下面方法

      Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
      startActivityForResult(intent,OPEN_REQUEST_CODE);
    

    这样会有个弹窗提示用户是否开启蓝牙

  • disable()

    关闭所有的蓝牙连接后关闭本地蓝牙服务

  • getAddress()

    获得蓝牙mac地址

  • getName()

    获得蓝牙名称,也就收我们经常设置的蓝牙名称

  • setName()

    设置蓝牙名称

  • startDiscovery()

    开始发现设备(注意是设备,例如另外一个手机,而不是蓝牙耳机之类的)

  • getBondedDevices()

    获取绑定(配对)的设备,测试发现只有手动取消绑定才管用,否则即使关闭蓝牙,间隔一会再打开,这些仍然是绑定的.
    同时一些绑定的设备(例如手环)用这个方法并没有返回对应的device

  • startLeScan(LeScanCallback)

    开始对Bluetooth LE devices设备(蓝牙耳机,手环,电子称等)的扫描.回调函数会把扫描到的设备返回,
    注意设备会重复被扫描到,最好去掉重复,去重时可以用mac地址,也可以用名称,但是扫描到的Device第一次没有把
    名称带回,所以获取名称时最好做非空判断

  • stopLeScan(LeScanCallback)

    停止扫描

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容