让我们看看,我正在使用Google地图。我知道Google使用各种技术来获得我的位置,但有时Google无法获得它。
我创建了一个GoogleMap对象,并将myLocationEnable设置为True。当Google能够获得我的位置时,没有问题,当我按下按钮时,它会将我带到我的位置,但有时候,当我按下按钮时它什么都不做。我猜这种情况发生在谷歌无法访问我的位置时。
所以我的问题是,有什么方法让我知道我的位置何时无法解决?我想告诉用户他必须打开GPS,如下所示:
public boolean onMyLocationButtonClick() {
if (myPositionUnreachable){
Toast.makeText(getApplicationContext(), "Turn on GPS", Toast.LENGTH_SHORT).show();
}
}
任何人都可以给我一个提示吗?我会很感激。很多。
答案 0 :(得分:1)
您可以检查GPS是否启用如下:
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
您可以注册一个可以告知您GPS更改的听众。
// Define a listener that responds to location updates
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the GPS location provider.
makeUseOfNewLocation(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) {
case LocationListener.OUT_OF_SERVICE:
case LocationListener.TEMPORARILY_UNAVAILABLE:
//TODO do what you need here
break;
case LocationListener.AVAILABLE:
//it's working again
break;
}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
// Register the listener with the Location Manager to receive location updates
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
有效设置更新阅读this
<强>更新强>
如果您愿意,也可以使用Google服务中的Location API并通过该API注册相同的监听器。
更新2
要立即获得职位,您可以致电
Location location = manager.getLastKnownLocation(GPS_PROVIDER);
来自javadoc的描述:
返回指示上一个已知位置的数据的位置 从给定的提供者处获得的修复。
这可以在不启动提供程序的情况下完成。请注意这一点 位置可能已过时,例如,如果设备已转动 关闭并搬到另一个地方。
如果当前禁用了提供程序,则返回null。