【发布时间】:2021-10-28 04:37:25
【问题描述】:
我正在尝试创建一个前台服务,该服务可以使用手机的 GPS 跟踪用户的位置。我有一个ForegroundService 类,在onCreate() 方法中我调用了一个函数,该函数应该从请求位置更新开始:
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
locationManager = getSystemService(LOCATION_SERVICE) as LocationManager
val locationListener: LocationListener = this
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 2000, 0F, locationListener
)
我的班级正在实施Service() 和LocationListener。然后我覆盖onLocationChanged,我应该在其中记录当前速度(并将onAccuracyChanged留空)。
当然,我在 android 中正确显示了一个通知,所以该服务肯定正在运行,但我似乎没有得到任何位置更新。问题可能是什么?谢谢。
【问题讨论】:
-
您是否请求了位置的运行时权限?我在那里看不到它,所以我假设没有。您还需要在清单中请求静态权限。
-
@GabeSechan 是的,并且在请求更新之前检查它们是否已被接受。我尝试用于前台服务的代码在正常活动中工作,屏幕打开等。
-
用户是否授予后台位置收集权限?在现代 Android 中,用户可以选择在应用程序仅在前台时允许收集位置。即使您的应用在前台,在 Service 中运行也算作后台。
-
@GabeSechan 是的,也完成了。
-
在 Activity(前台)中运行时,您提供的相同代码是否有效?
标签: java android kotlin gps location