【问题标题】:How to get the actual location?如何获得实际位置?
【发布时间】:2013-09-09 12:24:52
【问题描述】:

我有一个必须获取实际纬度和经度的应用程序。我正在尝试使用此处发布的代码:How do I get the current GPS location programmatically in Android?GPSTracker

问题在于,有时获取位置太慢,有时获取的位置已过时。我不需要继续跟踪位置,我只需要在用户按下按钮时获取位置。谷歌的地图应用可以这么快,我该怎么做?

【问题讨论】:

  • setMyLocationEnabled(true) ?? setMyLocationButtonEnabled(true) ???

标签: android gps android-location


【解决方案1】:

如何使用新引入的 Fused location 提供程序,引用自:http://developer.android.com/training/location/retrieve-current.html

public static class MyActivity extends Activity
            implements
                GooglePlayServicesClient.ConnectionCallbacks,
                GooglePlayServicesClient.OnConnectionFailedListener,
                LocationListener {
        private LocationRequest lr;
        private LocationClient lc;
        Location location;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // inflate view
        lr = LocationRequest.create();
        lr.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        lc = new LocationClient(this,
                this, this);
        lc.connect();
    }

    @Override
    public void onLocationChanged(Location location) {
       //Get new Location here.
    }

    @Override
    public void onConnectionFailed(ConnectionResult arg0) {

    }

    @Override
    public void onConnected(Bundle connectionHint) {
        lc.requestLocationUpdates(lr, this);
        // get last Location
        location = lc.getLastLocation();
    }

    @Override
    public void onDisconnected() {

    }
}

【讨论】:

  • 这个 GooglePlayServicesClient 是什么?所有手机都有这个?为什么我必须先检查一下?
  • Google Play 服务现在几乎可以在所有设备上使用,但仍有可能用户没有更新或安装它,所以我们需要检查它,它简化了许多事情,比如获取位置很容易,更多信息在这里developer.android.com/google/play-services/index.html
  • 旧手机也有Google Play服务?如果不安装,应用程序将无法工作?
  • @Roland Play Service 在 api 8 及以上的手机上可用,是的,没有这个服务,你的应用程序会报错,所以在开始使用应用程序之前最好检查一下播放服务,这不是困难。
  • 好的,所以它安装在 api 8 及更高版本 (froyo) 中?感谢您的回答。我将在今天晚些时候测试这门课。如果工作更快会让你知道。非常感谢。
【解决方案2】:

我相信他们会使用这个“新”位置 API。您还可以在此处提供示例代码来帮助您启动和运行。我已经在我正在开发的应用程序中使用了它,并且效果非常好。我用的是“平衡”模式。

http://developer.android.com/google/play-services/location.html

【讨论】:

  • 我不是很明白,手机一定是安装了google play服务吧?那是什么?
  • 来自上述页面。 “虽然这些 Google 服务不包含在 Android 平台中,但大多数 Android 设备都支持它们。使用这些服务时,您可以在 Google Play 上将您的应用分发到所有运行 Android 2.2 或更高版本的设备上,有些服务甚至支持更多设备。”
  • 所以你真的应该检查(在你的代码中)谷歌服务是否已安装。
  • 我试图实现这个类,但它不起作用。我无法实现“GooglePlayServicesClient”。它给了我一个错误“GooglePlayServicesClient 无法解析为一种类型”。
  • 这是我的进口商品。
【解决方案3】:

我可能对此不正确,因为我也是android的新手。

但在我看来,可以通过三种不同的方式找到用户的位置。

  1. 使用 wi-fi 提供商
  2. 使用网络提供商
  3. 使用 GPS 提供程序

与休息相比,从 GPS 获取数据非常慢。

您可以做的是,首先检查网络可用性,如果存在,则从那里获取纬度和经度。

稍后您可以使用 GPS 获得更准确的信息。 但最初,从网络获取位置要快得多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    相关资源
    最近更新 更多