是否有可能知道我的设备是否可以获得我的位置

时间:2014-08-13 07:25:11

标签: android google-maps

让我们看看,我正在使用Google地图。我知道Google使用各种技术来获得我的位置,但有时Google无法获得它。

我创建了一个GoogleMap对象,并将myLocationEnable设置为True。当Google能够获得我的位置时,没有问题,当我按下按钮时,它会将我带到我的位置,但有时候,当我按下按钮时它什么都不做。我猜这种情况发生在谷歌无法访问我的位置时。

所以我的问题是,有什么方法让我知道我的位置何时无法解决?我想告诉用户他必须打开GPS,如下所示:

public boolean onMyLocationButtonClick() {
    if (myPositionUnreachable){
        Toast.makeText(getApplicationContext(), "Turn on GPS", Toast.LENGTH_SHORT).show();
    }
}

任何人都可以给我一个提示吗?我会很感激。很多。

1 个答案:

答案 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。