从接触ble4.0(以下简称ble)到现在快半年的时间,一直想找个时间整理下自己的体会。终于等到了今天!开始~~~~!
在这里我就不介绍什么是BLE了,我也说的不是很准确,去百度百科比较靠谱。下面我们简单说下,在安卓端如何搜索、链接、控制,最后奉上一个简单的demo。
开始之前需要初始化蓝牙一些东东,如下:
BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
mBluetoothAdapter = manager.getAdapter();
// 绑定服务
boolean bl = bindService(new Intent(this, BluetoothService.class),
con, Context.BIND_AUTO_CREATE);
if (bl) {
System.out.println("启动服务 。。。");
} else {
System.out.println("启动失败。。。");
}
// 搜索蓝牙
// TimerScanBle();
// 注册广播
registerReceiver(mBroadcastReceiver, Confing.getfilter());
1.搜索
很简单,在api里有很直接的方法使用。废话少说,直接上代码吧!
<span style="white-space:pre"> </span>public boolean startLeScan (BluetoothAdapter.LeScanCallback callback) //开始搜索
<pre name="code" class="java"><span style="white-space:pre"> </span>public void stopLeScan (BluetoothAdapter.LeScanCallback callback)//结束搜索
那么如何使用呢?别急看下面的代码片段!瞅~~!
private void scanLeDevice(final boolean enable) {
if (enable) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
MainActivity.mBluetoothAdapter.stopLeScan(mLeScanCallback);//停止搜索的回调
}
}, SCAN_PERIOD);//搜索多少时间
mScanning = true;
MainActivity.mBluetoothAdapter.startLeScan(mLeScanCallback);//开始搜索的回调
} else {
mScanning = false;
MainActivity.mBluetoothAdapter.stopLeScan(mLeScanCallback);//停止搜索的回调
}
}
//回调
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {//添加扫描到的设备并更新界面
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
}
});
}
};
2.连接
连接其实就是调用一个connect()这个方法。获取到了设备的地址,用bluetoothservice调用此方法进行连接。
3.控制
调用write方法进行写特征值,调用read方法进行读特征值。具体下载demo运行即可。如有疑问,可以联系我。44493547@qq.com
下载链接:点击打开链接