我希望我的Android应用无限期地在后台扫描BLE外设。
注意:我想要实现的效果等同于使用iOS状态保存和还原-这对我来说非常有效。即使系统挂起,打ze(Android)或从内存中删除该应用程序,我也想拿起广告。
如果发现外围设备,我的整个BLE回调系统将正常运行。问题是,在后台运行了几分钟(在某些设备上为5个)之后,不再显示广告。我之所以知道是因为我被黑了一些实时工具,以查看何时发生发现。
创建服务并将其提升为前台服务
Intent intent = new Intent(getApplicationContext(), DataCollectionService.class);
startService(intent);
//... and then from the service itself...
@Override
public void onCreate() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder
.setContentTitle("Adrich is running.")
.setContentText("You're all set. Keep an eye on your email inbox for sweet discounts.")
.setSmallIcon(R.drawable.adrich_android_notify_icon);
startForeground(1, builder.build());
}
我也尝试过(但随后删除了)一个计时器系统,该系统在10秒钟左右的时间后重新启动BLE。我在Android 7.0, BLE stops after 30 minutes之后读过这本书。
这是我的背景扫描,大约5分钟后就停止了。
我担心这里缺少真正明显的东西,因为背景扫描的效果非常差。有什么建议吗?我该如何尝试使BLE后台扫描更好地工作?