安卓APP蓝牙上位机的编写二——搜索附近蓝牙设备
前言
传统蓝牙即蓝牙2.0以及之前的版本,功耗较高不能满足可穿戴设备对于续航的要求。所以目前大部分可穿戴设备都采用蓝牙4.0,即BLE蓝牙技术。
BLE(Bluetooth Low Energy)蓝牙的功耗低,能够实现快速搜索,快速连接,超低功耗保持连接和数据传输。但是BLE蓝牙数据传输速率低,特别是在安卓开发过程,BLE蓝牙一包数据最多为20字节,因此安卓系统下最好不要使用BLE蓝牙传输大量数据。
转入正题,蓝牙搜索附近设备有两种情况:
1、蓝牙搜索附近所有已经配对的设备,这种实现起来相对简单。
2、蓝牙搜索附近所有的设备,这种呢实现起来相对复杂一点。
本篇文章需要一点安卓开发的知识,如有问题/错误,欢迎在下方评论斧正。
搜索已经配对的蓝牙
APP源码链接:https://gitee.com/takajiaka/test2.git
第一种情况:如果是搜索已经配对的蓝牙那么很简单,只需要一个点击事件调用系统自带的蓝牙适配器就可以了,效果图如下:
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:onClick="list"
android:text="@string/List"
/>
MainActivity部分关键代码:
private BluetoothAdapter BA;//蓝牙适配器
//private BluetoothControler mBluetoothcontrol=new BluetoothControler();
private Set<BluetoothDevice>pairedDevices; //蓝牙设备,已经连接的设备
//点击事件处理函数
public void list(View view)
{
if(BA.isEnabled()) {//判断蓝牙已经开启
pairedDevices = BA.getBondedDevices();//获取已经匹配额设备
ArrayList list = new ArrayList();//数组
for (BluetoothDevice bt : pairedDevices)
list.add(bt.getName() + ":" + bt.getAddress());
Toast.makeText(getApplicationContext(), "显示已经连接的设备", Toast.LENGTH_SHORT).show();
final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);数组适配器
lv.setAdapter(adapter);//listview绑定适配器
}
else Toast.makeText(getApplicationContext(), "请先开启蓝牙!", Toast.LENGTH_SHORT).show();
}
以上代码是不是比较简单呢?用以上代码先热热身,那么接下来我们就进入攻坚环节。
搜索附近所有的蓝牙设备
APP源码链接:https://gitee.com/takajiaka/ZhiNengKaiGuan.git
第二种情况:搜索附近所有的蓝牙设备,因为未配对的蓝牙设备在本机中是没有信息存储的,需要对外搜索附近的设备,只有附近的设备是“可见”才可以搜索到,搜索到之后附近蓝牙设备才将它们的设备信息发给本机。
这种情况需要用到广播以及广播监听,因为搜索时一个过程性的,一旦搜索到新的设备,手机蓝牙就会产生一个广播,如果APP注册了蓝牙广播,就能在搜索过程中接收广播,获取设备的信息。效果图如下: