题记:不要放弃自己进步的机会
背景
公司刚接了一个大项目,其中涉及低功耗蓝牙BLE,使用ibeacon设备来与微信的摇一摇功能互动,达到宣传,以及用户在厅店参加活动的效果.
那么刚好我上一个项目完结,落到我头上了,本来已经抱着辞职的心态来做了,是在是不会不会啊.
甲方要招标,使用它们提供的标准生产设备,要求我写一个控制软件
1.挣扎的开始
各种百度,google,发现国内资料很少,有的也是商业公司提供的sdk,这并不符合我需要,
google倒是不少,然而以我的英语水平,望洋兴叹罢了@
不发牢骚了:
首先你需要了解这些资料
1、profile
profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力。2、service
service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据3、characteristic
characteristic特征值,ble主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。4、UUID
UUID,统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识
PS: 百度到的,我以一个过来人的身份保证这个很重要
2.资料,准备
资料看这里:
这也是最重要的资料来源
接上文,说完资料,
这是一个很好的demo
sdk\samples\android-22\connectivity\BluetoothLeGatt
该目录下为谷歌提供的demo,我的应用也是在它的基础上改进而成的.
由以下部分组成:
1.一个服务 BluetoothLeService,主负责与蓝牙设备进行数据交换
2.两个activity:DeviceControlActivity,DeviceScanActivity
见名知意,一个负责扫描设备,而两外一个与设备进行交互
3.一个SampleGattAttributes
主要是存储了一些UUID,我对它进行了加强
3.BLE设备的使用步骤概况
1.首先要说明的一点是,要求Android版本为4.3及其以上
接着确认设备支持
/**
* 支持BLE
* check to determine whether BLE is supported on the device
*/
public void isSupported(){
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, "设备不支持BLE功能", Toast.LENGTH_SHORT).show();
}
}