【问题标题】:How to call to get a single gps fix when ever i want android?当我想要 android 时如何调用以获得单个 gps 修复?
【发布时间】:2011-12-23 16:19:57
【问题描述】:

如何仅通过调用一个函数来获得我所在位置的单个 GPS 定位?就这个例子来说,我怎样才能让纬度和经度成为敬酒。

【问题讨论】:

    标签: android gps location


    【解决方案1】:

    What have you tried?

    这里有两个官方的位置页面:http://developer.android.com/reference/android/location/Location.html http://developer.android.com/reference/android/location/LocationManager.html

    但是要获取最近的位置并将其显示在 Toast 中:

    LocationManager locMan = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
    Location loc = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    String lat = String.valueOf(loc.getLatitude());
    String longitude = String.valueOf(loc.getLongitude());
    Toast.makeText(context, lat+","+longitude, Toast.LENGTH_LONG).show();
    

    如果你想请求一个新的位置,它是更多的代码,我不会在这里介绍。您可以在此处进行一些谷歌搜索或搜索以了解如何使用它。您需要的方法是requestLocationUpdatesrequestSingleUpdate。我猜你会更喜欢requestSingleUpdate

    【讨论】:

    • 请注意,如果最近没有使用 GPS,则 GPS 的getLastKnownLocation() 可以返回null。如果粗略准确度没问题,则可能需要尝试从多个提供商处获取最后一个已知位置。多个提供商的解决方案在这里 - stackoverflow.com/a/23365895/937715
    【解决方案2】:

    我认为您不能只打一个电话就可以得到定位。 GPS / Android 就是不能那样工作。手机可能有最后一个已知位置,但最后一个已知位置可能是几小时前拍摄/记录的,而且距离数英里。 getLastKnownLocation() 方法返回的位置具有时间戳和精度,可用于查看该位置是否“足够好”。

    位置通常通过设置侦听器、侦听更新并在您有足够好的修复时停止侦听器来确定。请参阅 Obtaining User Location 以获得一个很好的示例,尤其是示例 isBetterLocation() 方法中的详细信息。

    我发现最好创建一个异步任务,根据应用程序是否有足够好的位置来主动注册和取消注册 GPS/网络/被动侦听器,并让该类导出一个 getMyPosition() 方法,该方法返回一个如果已经建立了足够好的位置,则为 Location 对象,否则为 null。然后主代码可以进行简单的一行函数调用来获取当前位置。但这只是因为在幕后有一个异步任务在做艰苦的工作。

    我尝试让我的异步任务主动取消注册 GPS 侦听器并关闭 GPS 电路以节省电池电量,当我有足够好的修复时。我关闭监听器的时间取决于应用程序的需要。让被动监听器保持打开(注册)允许我的任务/应用程序“免费”监听设备上任何其他应用程序引起的 GPS 位置报告。

    获得一个足够好的职位不是一个函数调用的交易,除非你通过大量的幕后工作来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 2012-08-14
      • 2020-02-11
      • 2010-11-15
      相关资源
      最近更新 更多