Bluetooth Android蓝牙连接参数
我一直在寻找答案,但没有找到答案,很想在Android(主)设备上更改蓝牙连接参数(连接间隔,从机延迟,监控超时)。对我来说最重要的是监控超时,因为defaut在android上是20秒,我需要减少,我发现Bluetooth Android蓝牙连接参数,bluetooth,bluetooth-lowenergy,android-bluetooth,Bluetooth,Bluetooth Lowenergy,Android Bluetooth,我一直在寻找答案,但没有找到答案,很想在Android(主)设备上更改蓝牙连接参数(连接间隔,从机延迟,监控超时)。对我来说最重要的是监控超时,因为defaut在android上是20秒,我需要减少,我发现连接优先权\u平衡,连接优先权\u高和连接优先权\u低功率但它们不会改变监控超时时间 或者无法从Android(主)更改连接参数? 请帮帮我。 非常感谢您的建议。不幸的是,您只能执行API允许的任何操作。在大多数情况下,移动操作系统API不允许您出于用户友好体验的目的进行低级设置。想象一下,你
连接优先权\u平衡
,连接优先权\u高
和连接优先权\u低功率
但它们不会改变监控超时时间
或者无法从Android(主)更改连接参数?
请帮帮我。
非常感谢您的建议。不幸的是,您只能执行API允许的任何操作。在大多数情况下,移动操作系统API不允许您出于用户友好体验的目的进行低级设置。想象一下,你开发了一个应用程序,它使用消耗电池电量的连接参数。。。然后,应用程序的用户很可能会抱怨操作系统提供商或OEM。这不是我们想要的,应该防止。但是,如果您出于实验原因(研究等)希望进行低级别更改,我建议您下载Android API源代码,进行更改并将自定义Android API插入手机(您需要根目录) 以下是与您的请求相关的
BluetoothGatt.class
中源代码的相关部分:
public boolean requestConnectionPriority(int connectionPriority) {
if (connectionPriority < CONNECTION_PRIORITY_BALANCED ||
connectionPriority > CONNECTION_PRIORITY_LOW_POWER) {
throw new IllegalArgumentException("connectionPriority not within valid range");
}
if (DBG) Log.d(TAG, "requestConnectionPriority() - params: " + connectionPriority);
if (mService == null || mClientIf == 0) return false;
try {
mService.connectionParameterUpdate(mClientIf, mDevice.getAddress(), connectionPriority);
} catch (RemoteException e) {
Log.e(TAG,"",e);
return false;
}
return true;
}
public boolean requestConnectionPriority(int-connectionPriority){
如果(连接优先级<连接优先级\u平衡||
连接优先级>连接优先级(低功率){
抛出新的IllegalArgumentException(“connectionPriority不在有效范围内”);
}
if(DBG)Log.d(标记“requestConnectionPriority()-params:+connectionPriority”);
if(mService==null | | mClientIf==0)返回false;
试一试{
mService.connectionParameterUpdate(mClientIf,mDevice.getAddress(),connectionPriority);
}捕获(远程异常){
Log.e(标签“,”e);
返回false;
}
返回true;
}
我将寻找
BluetoothGattService#connectionParameterUpdate
的实现 很好,但是如何在20秒内发现蓝牙le设备何时断开连接?示例超出范围或断电?因为现在当连接状态改变时,我需要等待20秒。我只是假设,但我的假设对你们来说是一个很好的起点。固件代码或android源代码中必须有一个表示监督超时的变量。您可以修改此变量并硬编码所需的值。我不认为这是容易的,但我认为这不是不可能的。但我在android代码ir中找不到任何地方。我更改蓝牙模块RN4020(从)的超时时间。当我连接android(主)时,主设置超时时间在20秒内再次设置,我不知道如何少于。。。并且找不到任何表示超时时间的变量…请查看指导如何下载android源代码的网站:。Android将该值设置回原来的值是很正常的,因为根据蓝牙规范,当主设备(手机)发送连接更新请求时,从设备应接受该请求。(有关更多信息,请查看蓝牙4.0规范)