Android FusedLocationProviderClient.requestLocationUpdates() 返回相同的位置坐标
Android FusedLocationProviderClient.requestLocationUpdates() returning same location coordinates
我在 SO 上发现了两种类似的问题,但都没有答案。
我正在使用 FusedLocationProviderClient
来获取我的设备的位置。我使用 requestLocationUpdates()
.
使用后台服务获取位置
即使应用程序处于前台,方法返回的纬度和经度也不会改变。
这是我如何使用 class 的片段:
private FusedLocationProviderClient fusedLocationClient
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
fusedLocationClient.requestLocationUpdates(new LocationRequest(), locationCallback, Looper.getMainLooper());
locationCallback
只是一种在控制台上打印经度和纬度的方法。
已授予所有权限,我正在检查我的清单中的权限。这是我添加的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">
<activity android:name=".HomeActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".LocationService" />
</application>
LocationService
是我试图获取位置的服务。
有人知道问题出在哪里吗?我已经被困了几个小时了!
如果您想要更改,您应该监听位置更新。
https://developer.android.com/training/location/request-updates
或者如果没有应用请求位置更新,它会return始终使用相同的最后已知位置。
我在 SO 上发现了两种类似的问题,但都没有答案。
我正在使用 FusedLocationProviderClient
来获取我的设备的位置。我使用 requestLocationUpdates()
.
即使应用程序处于前台,方法返回的纬度和经度也不会改变。
这是我如何使用 class 的片段:
private FusedLocationProviderClient fusedLocationClient
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
fusedLocationClient.requestLocationUpdates(new LocationRequest(), locationCallback, Looper.getMainLooper());
locationCallback
只是一种在控制台上打印经度和纬度的方法。
已授予所有权限,我正在检查我的清单中的权限。这是我添加的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/AppTheme">
<activity android:name=".HomeActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".LocationService" />
</application>
LocationService
是我试图获取位置的服务。
有人知道问题出在哪里吗?我已经被困了几个小时了!
如果您想要更改,您应该监听位置更新。
https://developer.android.com/training/location/request-updates
或者如果没有应用请求位置更新,它会return始终使用相同的最后已知位置。