Android ble 蓝牙4.0总结——基础版
来源:互联网 发布:淘宝钻石买家最爱 编辑:程序博客网 时间:2024/06/07 02:05
一、了解api及概念
1.1 BluetoothGatt
继承BluetoothProfile,通过BluetoothGatt可以连接设备(connect),发现服务(discoverServices),并把相应地属性返回到BluetoothGattCallback
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:readCharacteristic对应onCharacteristicRead;
gatt.readCharacteristic(characteristic);
1.8.3: writeCharacteristic对应onCharacteristicWrite;
gatt.wirteCharacteristic(mCurrentcharacteristic);
1.8.4:连接蓝牙或者断开蓝牙 对应 onConnectionStateChange;
1.8.5: readDescriptor对应onDescriptorRead;
1.8.6:writeDescriptor对应onDescriptorWrite;
gatt.writeDescriptor(descriptor);
1.8.7:readRemoteRssi对应onReadRemoteRssi;
gatt.readRemoteRssi()
1.8.8:executeReliableWrite对应onReliableWriteCompleted;
1.8.9:discoverServices对应onServicesDiscovered。
gatt.discoverServices()
1.9 BluetoothDevice
扫描后发现可连接的设备,获取已经连接的设备
二、开启蓝牙权限
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
如果 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比较清晰啊
1 0
- Android ble 蓝牙4.0总结——基础版
- Android ble 蓝牙4.0 总结
- Android ble 蓝牙4.0 总结
- Android蓝牙4.0 BLE开发坑总结
- Android 蓝牙4.0 BLE 开发总结
- Android蓝牙4.0 BLE开发坑总结
- Android蓝牙4.0BLE
- Android ble 蓝牙4.0
- Android BLE蓝牙4.0
- Android BLE蓝牙4.0开发—Android手机与BLE终端通信
- 蓝牙4.0——Android BLE开发官方文档翻译
- 蓝牙4.0——Android BLE开发官方文档翻译
- Android 蓝牙4.0 Ble 连接Ble模块
- 【android 蓝牙开发——BLE(低功耗)蓝牙】
- Android 蓝牙4.0 BLE调试
- Android 蓝牙4.0 BLE调试
- Android 蓝牙4.0 BLE 理解
- Android 蓝牙4.0 BLE 理解
- something about bootcmd and bootargs
- hdoj 2602 Bone Collector 【01背包】
- 184Sum
- QSplitter分割器分割比例设定
- 虚函数和纯虚函数的区别 虚函数和纯虚函数的区别
- Android ble 蓝牙4.0总结——基础版
- ssh下载数据库blob+指定路径下文件
- hibernate lazy策略
- hibernate一多一关联配置出错org.hibernate.MappingException:should be mapped with insert="false"update="false
- HDU 1698 Just a Hook
- IE报:SCRIPT1028:缺少标识符、字符串或数字(火狐谷歌通过)
- js局部刷新
- wordpress分类目录打开全部是404页面!解决办法!
- HDOJ 1203 I NEED A OFFER!(01背包)