android - 如何使用融合位置客户端仅获得一个位置?
问题描述
我想要的是在获得第一次位置更新并将其添加到领域后只获得一个新位置并删除位置更新,但面临的问题是有时在一次更新中获得超过 100 个位置并在领域崩溃应用程序中执行 100 个事务
public void getCurrentLocation(final Context context) {
LocationRequest mLocationRequest;
final LocationCallback mLocationCallback;
final FusedLocationProviderClient mFusedLocationClient;
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(context);
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(60000);
mLocationRequest.setNumUpdates(1);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult)
{
if (locationResult == null)
{
return;
}
mFusedLocationClient.removeLocationUpdates(this);
Location tempLocation = locationResult.getLastLocation();
if (locationResult.getLocations().size() > 0)
{
tempLocation = locationResult.getLocations().get(0);
}
if(tempLocation != null )
{
RealmManager.writeLocationInRealm(context, tempLocation, true, 0);
}
}
};
mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
}
解决方案
您可以通过以下代码实现此目的
此代码在 Kotlin 中
private var fusedLocationClient: FusedLocationProviderClient?=null
在你的 onCreate()
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this@YourActivity)
fusedLocationClient!!.lastLocation
.addOnSuccessListener { location: Location? ->
//Your lattitude location!!.latitude
//Your Longitude location.longitude
}
推荐阅读
- python - 在 seaborn 中使用 catplot 时更改 x-labels 和宽度
- python - 在数据框中搜索索引值
- c - 警告:“root”声明中的类型默认为“int”[-Wimplicit-int]|
- vue.js - axios api 身份验证标头 jwt 和安全性
- python - 删除圆形蒙版周围的空白区域
- rust - 嵌套宏未正确扩展
- javascript - VueJS - 为什么 forEach / push 和 .filter 返回不同的结果?
- reactjs - 如何消除两行之间的间隙?
- knitr - 一致的代码格式内联和带有 bookdown 的块
- python - 为什么我的 python 程序没有给出正确的文件输出?