如何获取设备位置

时间:2016-08-16 16:50:05

标签: android

所以,我正在尝试为练习构建一个天气应用程序,我一直在试图找到这个位置的问题。我读过人们建议通过融合位置API使用getLastLocation,问题是如果他们还没有在设备上注册的位置它出现null。我注意到使用模拟器的时间很少见,但我仍然喜欢我的应用程序来正确处理它。您可能碰到的一个例子是,他们只是关闭并重新打开GPS,或者手机刚打开。我做的一件事是如果getLastLocation确实返回null,是请求更新,但是你仍然需要等待设备注册更新的位置,这与天气应用程序的所有数据都是基于你的'你'仍然有点遇到同样的问题。我注意到其他应用程序这不是问题,有时我实际上必须加载谷歌地图才能让它注册一个位置。 Google地图如何强制它更新位置?以下是我的getLocation方法的示例:

public void getLocation() throws SecurityException {
    boolean gps_enabled;
    LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    if (gps_enabled) {

        Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
        if (location != null) {
            startGetForecast(location);
        } else {
            LocationRequest request = LocationRequest.create();
            request.setNumUpdates(1);
            request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
            LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, request, this);
        }
    } 
    else {
        AlertDialogFragment alertDialogFragment = new AlertDialogFragment();
        alertDialogFragment.setErrorTexts("Location Unavailable", "Could not retrieve location information.", "Exit");
        alertDialogFragment.show(getSupportFragmentManager(), "Location Unavailable");
    }
}

1 个答案:

答案 0 :(得分:1)

注意:这个答案可能听起来像没有直接回答问题但是在与OP聊天(有问题的评论)之后,因为他的代码一般都没问题,但问题围绕着问题,这个答案有满意的OP。

  

幸运的是,标准库不是Google可以获得的唯一方式   代码到你手中。除了标准库,谷歌   提供者播放服务。这是一组常见的服务   与Google Play商店应用程序一起安装。解决这个问题   位置一塌糊涂,Google在Play中发布了新的位置服务   服务称为融合位置提供商。

     

这些库   住在另一个应用程序中,你必须拥有该应用程序   安装。 这意味着只有具有Play商店应用的设备   已安装且最新的将能够使用您的应用程序。

所以结论是:

  1. 如上所述,您需要在设备上测试该应用。
  2. 由于您使用的是融合位置提供程序Api,这意味着Api将自动确定以下某个来源的最后位置:

    1. GPS收音机
    2. 来自手机信号塔的粗点
    3. WiFi连接
  3. 因此,您可以轻松地从代码中删除GPS

  4. 如果您必须使用GPS信号,那么您需要远离建筑物,实验室,家中或办公室。
  5. 如果你想在上述资源中挖掘更多内容并且有很多在线资源。

    资源:答案的第一部分,来源于:

    Android编程:大型书呆子牧场指南
    第2版
    第31章第552页Google Play服务