【问题标题】:Is it possible schedule events(GPS On/Off, Wifi On?Off) in workmanager?是否可以在工作管理器中安排事件(GPS 开/关、Wifi 开?关)?
【发布时间】:2018-09-18 06:41:03
【问题描述】:
从 android Oreo 我们不能使用一些隐式广播接收器(网络状态等)。取而代之的是,我们可以使用作业调度程序或调度程序。但在 I/O 2018 中,谷歌引入了一个名为 workmanager 的新库。
但问题出现了,我如何在工作管理器中处理系统事件(通话接收、网络状态更改、GPS 开/关等)?或者我如何在特定时间安排我的工作(不使用时间计算)?
如果有人对此有任何想法,请告诉我。提前致谢。
【问题讨论】:
标签:
android
service
broadcastreceiver
android-jobscheduler
android-workmanager
【解决方案1】:
只需使用 LocationService 类中的 setInterval 方法即可存档。
按照指南使用 FusedLocaation 创建侦听器,这可以为您提供更好的位置逻辑结果。
https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setInterval(5000);
// in milliseconds in you case change into 3600000
locationRequest.setFastestInterval(1000);
locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
然后用回调启动一个fusedLocation
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(locationActivity);
mFusedLocationClient.requestLocationUpdates(locationRequest, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
}
@Override
public void onLocationAvailability(LocationAvailability locationAvailability) {
super.onLocationAvailability(locationAvailability);
}
},null);
谢谢