博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android ble 蓝牙4.0 总结一
阅读量:6976 次
发布时间:2019-06-27

本文共 2654 字,大约阅读时间需要 8 分钟。

本文介绍Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level < 18,也是用不了蓝牙4.0的哦。

首先发一下官方的demo,有兴趣的可以过去看看:。android系统4.3以上,手机支持蓝牙4.0,具有搜索,配对,连接,发现服务及特征值,断开连接等功能,下载地址:。

一、了解api及概念

1.1 BluetoothGatt

继承BluetoothProfile,通过BluetoothGatt可以连接设备(connect),发现服务(discoverServices),并把相应地属性返回到 

1.2 BluetoothGattCharacteristic

相当于一个数据类型,它包括一个value和0~n个value的描述(BluetoothGattDescriptor)

1.3 BluetoothGattDescriptor

描述符,对Characteristic的描述,包括范围、计量单位等

1.4 BluetoothGattService

服务,Characteristic的集合。

1.5 BluetoothProfile

 一个通用的规范,按照这个规范来收发数据。

1.6 BluetoothManager

 通过BluetoothManager来获取BluetoothAdapter

BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

1.7 BluetoothAdapter

一个Android系统只有一个BluetoothAdapter ,通过BluetoothManager 获取

BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();

1.8 BluetoothGattCallback

已经连接上设备,对设备的某些操作后返回的结果。这里必须提醒下,已经连接上设备后的才可以返回,没有返回的认真看看有没有连接上设备。

private BluetoothGattCallback GattCallback = new BluetoothGattCallback() {			// 这里有9个要实现的方法,看情况要实现那些,用到那些就实现那些			public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState){};			public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status){};		};		BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);		BluetoothGatt gatt = device.connectGatt(this, false, mGattCallback);

1.8.1:notification对应onCharacteristicChanged

gatt.setCharacteristicNotification(characteristic, true);

1.8.2:对应onCharacteristicRead;

gatt.readCharacteristic(characteristic);

1.8.3: 对应onCharacteristicWrite;

gatt.wirteCharacteristic(mCurrentcharacteristic);

1.8.4:连接蓝牙或者断开蓝牙 对应 onConnectionStateChange;

1.8.5: 对应onDescriptorRead;

1.8.6:对应onDescriptorWrite;

gatt.writeDescriptor(descriptor);

1.8.7:对应onReadRemoteRssi;

gatt.readRemoteRssi()

1.8.8:对应onReliableWriteCompleted;

1.8.9:对应onServicesDiscovered。

gatt.discoverServices()

1.9 BluetoothDevice

扫描后发现可连接的设备,获取已经连接的设备

二、开启蓝牙权限

如果 android.hardware.bluetooth_le设置为false,可以安装在不支持的设备上使用,判断是否支持蓝牙4.0用以下代码就可以了

if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {    Toast.makeText(this, "设备不支持蓝牙4.0", Toast.LENGTH_SHORT).show();    finish();}

三、对蓝牙的启动关闭操作

1、利用系统默认开启蓝牙对话框

if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);}

2、后台打开蓝牙,不做任何提示,这个也可以用来自定义打开蓝牙对话框啦

mBluetoothAdapter.enable();

3、后台关闭蓝牙

mBluetoothAdapter.disable();

四、扫描设备,连接设备,获取设备信息 ,断开连接设备,自行查看官方demo,还是看demo比较清晰啊

转载于:https://www.cnblogs.com/liqw/p/4031437.html

你可能感兴趣的文章
asp.net 2.0中新增的AppendDataBoundItems .dropdownlist 添加第一项
查看>>
SQL Server 2008之WaitFor
查看>>
NYOJ 48
查看>>
Oracle 11g Release 1 (11.1) PL/SQL_多维 Collection 类型和其异常
查看>>
Android之传感器(一)
查看>>
继承log4.net的类
查看>>
Node.js Express 框架 Express
查看>>
oracle 11g wm_concat 、 listagg 函数的使用(合并数据)
查看>>
CC国内厂商现状
查看>>
reportNG定制化之失败截图及日志
查看>>
Getting Started with xUnit.net (desktop)
查看>>
myeclipse快捷键大全
查看>>
新建silverlight项目提示未将对象设置到实例解决方案
查看>>
tmux/screen里面如何用鼠标滚轮来卷动窗口内容
查看>>
(链表)反转链表Reverse List
查看>>
ArduinoYun教程之通过网络为Arduino Yun编程
查看>>
SSH连接不上Linux的解决方法
查看>>
HTML5学习笔记二 HTML基础
查看>>
mysql子查询
查看>>
JAVA并发编程J.U.C学习总结
查看>>