【问题标题】:Get last known location on button click with FusedLocationProviderClient使用 FusedLocationProviderClient 获取按钮单击的最后一个已知位置
【发布时间】:2017-09-14 12:23:26
【问题描述】:

我需要在单击按钮时立即将当前位置返回给服务器。

mFusedLocationClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                // Got last known location. In some rare situations this can be null.
                if (location != null) {
                    // ...
                }
            }
        });

在 Android 文档中,建议使用这种方式来获取位置。但如您所见,它不会立即返回该位置。我应该等待thread.sleep() 或相关的东西直到onSuccess 运行?或者最好的方法是什么?

【问题讨论】:

    标签: java android geolocation


    【解决方案1】:

    调用成功后调用一些方法将位置上传到服务器。

    mFusedLocationClient.getLastLocation()
            .addOnSuccessListener(this, new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(Location location) {
                    // Got last known location. In some rare situations this can be null.
                    if (location != null) {
                        sendToServer();
                    }
                }
            });
    

    【讨论】:

    • 不幸的是,这是不可能的。我有一个像public String getLastLocation 这样的方法,我需要从这个方法中将位置信息作为字符串返回。
    • 你想返回哪里?
    • 作为该方法的返回值。
    • 你不能从匿名内部类返回值给方法。
    【解决方案2】:

    没有办法“立即”获取位置。您必须等待回调。不,不要使用任何睡眠方法。在 UI 线程上,它会阻塞 ui,甚至没有必要。只需将位置发送到您的服务器onSuccess

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多