码迷,mamicode.com
首页 > 其他好文 > 详细

ble开发要点

时间:2015-04-23 18:05:03      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

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

 

首先发一下官方的demo,有兴趣的可以过去看看:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html。android系统4.3以上,手机支持蓝牙4.0,具有搜索,配对,连接,发现服务及特征值,断开连接等功能,下载地址:http://download.csdn.net/detail/lqw770737185/8116019。

 

一、了解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比较清晰啊


ble开发要点

标签:

原文地址:http://my.oschina.net/owen123456/blog/405572

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!