在 Marshmallow 上为 API 21 使用 LocationListener
Using LocationListener for API 21 on Marshmallow
我有一个监听 GPS 更新的应用程序,它是去年使用 API21 实现的。它在几个 Android phones 运行 上进行了测试棒棒糖,例如 LG G4。现在我将它安装在带有 Marshmallow 的 LG G5 上,但我没有收到任何 GPS 更新,即从未调用 onLocationChanged()
。
权限已授予(phone的设置上的App视图显示Location权限),下面的语句是true
checkCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
AndroidManifest.xml 包括这些行:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" />
我使用的代码如下:
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationListener = getLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
private LocationListener getLocationListener() {
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
handleLocationChange();
}
public void onStatusChanged(String provider, int status, Bundle extras) { }
public void onProviderEnabled(String provider) { }
public void onProviderDisabled(String provider) { }
};
return locationListener;
}
我也试了NETWORK_PROVIDER
,没成功。
我在这里错过了什么?
我意识到 GPS 传感器没有向 phone 提供任何更新。例如,当我仅将定位精度限制为 GPS 传感器时,Google 地图永远无法定位。
如果我将 phone 连接到互联网,那么 NETWORK_PROVIDER
会提供位置更新。
我有一个监听 GPS 更新的应用程序,它是去年使用 API21 实现的。它在几个 Android phones 运行 上进行了测试棒棒糖,例如 LG G4。现在我将它安装在带有 Marshmallow 的 LG G5 上,但我没有收到任何 GPS 更新,即从未调用 onLocationChanged()
。
权限已授予(phone的设置上的App视图显示Location权限),下面的语句是true
checkCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
AndroidManifest.xml 包括这些行:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:name="android.hardware.location.gps" />
我使用的代码如下:
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationListener = getLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
private LocationListener getLocationListener() {
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
handleLocationChange();
}
public void onStatusChanged(String provider, int status, Bundle extras) { }
public void onProviderEnabled(String provider) { }
public void onProviderDisabled(String provider) { }
};
return locationListener;
}
我也试了NETWORK_PROVIDER
,没成功。
我在这里错过了什么?
我意识到 GPS 传感器没有向 phone 提供任何更新。例如,当我仅将定位精度限制为 GPS 传感器时,Google 地图永远无法定位。
如果我将 phone 连接到互联网,那么 NETWORK_PROVIDER
会提供位置更新。