Android 手机开启一个前台服务 开启任务栏通知
在前台服务里面 接收手机微信 qq消息 推送到蓝牙设备
在手机息屏后 几分钟 就推送不了 微信/qq 消息了
然后在手机再次解锁 后 之前没有推送过去的消息 一下子全部推送过去了
导致设备 一下子频繁震动 卡死
** 有没有什么解决方案 再次解锁屏幕后 不推送信息 ? **
蓝牙采用的 implementation 'no.nordicsemi.android:ble:2.3.1' sdk
连接代码如下
var f = BluetoothAdapter.getDefaultAdapter().isOffloadedScanBatchingSupported
// Scanning settings
val settings =
ScanSettings.Builder()
// .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) //低功耗模式 应用在后台时候采用此模式
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) // 平衡模式
.setReportDelay(0)
.setUseHardwareBatchingIfSupported(false) // 是否 选择批量发送信息 间隔 50 毫秒发送一次 不再实时推送 以达到省电
.setUseHardwareCallbackTypesIfSupported(false) //休眠唤醒后是否 继续发送 休眠途中 收到的信息
.build()
if(BleUtil.isBleEnabled()) {
Logger.e("尝试连接设备... 清除旧的连接状态 扫描2秒")
val scanner = BluetoothLeScannerCompat.getScanner()
scanner.stopScan(scanCallback)
Thread.sleep(100);
var array = arrayListOf<ScanFilter>();
scanner.startScan(array, settings, scanCallback)
flowViewModel.refreshDevice()
handler.postDelayed({
scanner.stopScan(scanCallback)
flowViewModel.connect(
device,
AppPreferences.bluetoothName ?: "",
address
)
}, 600)
}
app有没有做保活?息屏期间你的蓝牙服务还在运行吗?
这个各大手机厂商的限制后台都不太一样,目前一般是考虑前台service进行处理,但需要用户不清理后台才能实现你想要的效果,可以引导用户开启后台运行的权限,但有一点是需要注意的,如果用户不想接收你的消息,即时你代码怎么改用户都有方法拒绝你的推送,这应该就是android平台目前的政策
这个是 经测试 在 华为手机上 鸿蒙os 就会出现