Android 蓝牙
Posted 淅淅淸雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 蓝牙相关的知识,希望对你有一定的参考价值。
一、蓝牙权限
在清单文件中androidManifest.xml加入四个权限,注意
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
这两个权限是是后面Android6.0新需要的权限,不然搜索设备是获取不到的
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
二、蓝牙相关的类
1.BluetoothAdapter:本地蓝牙设备适配器,用于管理蓝牙的开启/关闭、重命名、扫描、配对、连接
2.BluetoothClass:蓝牙设备类,用于描述蓝牙设备类型
3.BluetoothDevice:远程蓝牙设备类
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//获取本地蓝牙适配器
Set<BluetoothDevice> devices = mBluetoothAdapter.getBondedDevices();//已经配对过的蓝牙 用set集合 避免重复出现
三、蓝牙搜索
在搜索时使用BluetoothAdapter的startDiscovery()方法来搜索蓝牙设备。该方法会进行对其他蓝牙设备的搜索,该过程会持续12秒。
if (mBluetoothAdapter.isDiscovering()){//此时没有开启蓝牙扫描 返回值是false
//作用 : 是否正在搜索;
//返回值 : 如果设备正在搜索, 返回true; 如果设备没有进行蓝牙搜索, 返回false;
mBluetoothAdapter.cancelDiscovery();
}
mBluetoothAdapter.startDiscovery();
//开启蓝牙扫描功能 adapter.startDiscovery();
//关闭蓝牙扫描功能 adapter.cancelDiscovery();
IntentFilter mFilter = new IntentFilter();//设置广播信息过滤
mFilter.addAction(BluetoothDevice.ACTION_FOUND);//搜索结果
mFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); //搜索完成
registerReceiver(mReceiver, mFilter);//注册广播接收器,接收并且处理搜索结果
系统有关的三个广播:
ACTION_DISCOVERY_START:开始搜索
ACTION_DISCOVERY_FINISHED:搜索结束
ACTION_FOUND:找到设备,
还有两个附加域EXTRA_DEVICE和EXTRA_CLASS,附加域是放在Intent中的, 使用Intent.putExtra(附加域,附加值)方法添加附加域;
int rssi = intent.getExtras().getShort(BluetoothDevice.EXTRA_RSSI);
接受搜索后的返回列表 发现新的设备添加到布局中 蓝牙广播接收器
private BroadcastReceiver mReceiver = new BroadcastReceiver() {}
注:本文是个人简单总结,我也是个菜鸟一点一点学
以上是关于Android 蓝牙的主要内容,如果未能解决你的问题,请参考以下文章
Qt低功耗蓝牙系列三(低功耗蓝牙客户端的程序设计纯Android代码)
Qt低功耗蓝牙系列三(低功耗蓝牙客户端的程序设计纯Android代码)