我正在尝试使用Ionic v1和Cordova创建一个应用程序,其目的是保持与蓝牙LE设备的连接,并在断开连接时通知用户(以及尝试重新连接等)。我正在使用此处找到的蓝牙插件:https://github.com/randdusing/ng-cordova-bluetoothle
但是,在Android 8.0上进行测试时,我发现该操作系统在断开连接时不会以及时的方式触发适当的回调(它似乎要等到下一个OS维护窗口,如此处所述:{{3 }})时,设备处于打ze / App待机模式。请参见下面的示例:
$cordovaBluetoothLE.connect({
address: address,
timeout: timeout
}).then(
null, // there is no "resolve" callback, this promise uses the "notify" callback on connection state change instead
function(e) {
return onConnectError(e);
},
function(result) { // this does not happen in a timely way when device is dozing
if(result.status === "connected") {
onConnected(result);
} else {
onDisconnected(result);
}
}
);
我已经尝试了以下操作(在运行Android 8.0的Moto G6上):
我已使用以下插件将我们的应用设置为在后台模式下运行:
我已通过“设置”>“电池”>“电池优化”手动关闭了专门针对此应用的电池优化
那么,当蓝牙断开连接时,我们如何让Android 8尽快通知我们?