我已尝试(但徒劳)强制要求我的Android Widget(Android Oreo)上的GPS位置更新。
小部件设置为每15-20分钟更新一次并获取手机的当前位置并显示。
但是,它只会选择安装手机的位置,即使手机移动,后续运行也不会返回新位置。
我仔细阅读了此处提供的解决方案How does it work - requestLocationUpdates() + LocationRequest/Listener并实施了该解决方案,但它似乎没有帮助。
LocationManager locationManager = (LocationManager)
context.getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
300000L, 500.0f, new LocationListener() {
@Override
public void onLocationChanged(android.location.Location location) {
if(location != null)
{
LocationPreferences.setLastLocationLatLon(context,location);
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
});
话虽如此,它在其中一个活动中(而不是在小部件中)更可靠,但鉴于小部件应该执行后台位置更新,它不起作用,onlocationchanged永远不会被调用(我感觉它在后台默默杀死)
是否有人在Oreo上使用GPS创建/使用Android小部件?任何正确方向的帮助将不胜感激。非常感谢你提前。