使用 FusedLocationProviderClient 获取按钮单击的最后一个已知位置
Posted
技术标签:
【中文标题】使用 FusedLocationProviderClient 获取按钮单击的最后一个已知位置【英文标题】:Get last known location on button click with 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
运行?或者最好的方法是什么?
【问题讨论】:
【参考方案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
。
【讨论】:
以上是关于使用 FusedLocationProviderClient 获取按钮单击的最后一个已知位置的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)