当前位置: 首页 > 知识库问答 >
问题:

位置数据空与. getLastPlace()FusedLocationProviderClient

单于智
2023-03-14

在我的应用程序中,我通过单击按钮将FusedLocationProviderClient的坐标存储到数据库中。问题是,当我重新启动手机或模拟器时,。getLastLocation()为空,我必须再次单击我订购的按钮才能使其工作。如果位置的值来自,是否有办法强制获取当前位置。lastKnownPosition()是否为空?

// Google fused location client for GPS position
private FusedLocationProviderClient flpc;
// Vars to store GPS info
public Double latitude, longitude;
public Float accuracy;


// Google Fused Client for location
public void getLocation() {
    // FusedLocationProviderClient
    flpc = LocationServices.getFusedLocationProviderClient(context);
    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        ......
        return;
    }

    // Get the latest position from device
    Task<Location> task = flpc.getLastLocation();

    task.addOnSuccessListener(new OnSuccessListener<Location>() {
        @Override
        public void onSuccess(Location location) {
            if(location!=null) {
                latitude = location.getLatitude();
                longitude = location.getLongitude();
                accuracy = location.getAccuracy();
            }
        }
    });
}

在我的按钮处理程序中,我调用getLocation(),并使用纬度、经度和精度存储到数据库中。

任何帮助赞赏!

共有2个答案

子车睿
2023-03-14

当手机重新启动时,缓存的最后一个位置将丢失,因此如果您没有打开使用GPS的应用程序(如谷歌地图或其他),则不会有最后一个位置。

从来没有一个位置返回给你,你应该总是假设它可能是空的。

如果你想获得位置,你只需要像@tenprint在这个线程中说的那样使用LocationCallback。

请参阅此链接

手机重启后Android get位置为空

濮阳宏硕
2023-03-14

当getLastPlace()为空时,您需要创建一个LocationRequest

private LocationRequest locationRequest;
private LocationCallback locationCallback;

...

locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(20 * 1000);
locationCallback = new LocationCallback() {
    @Override
    public void onLocationResult(LocationResult locationResult) {
        if (locationResult == null) {
            return;
        }
        for (Location location : locationResult.getLocations()) {
            if (location != null) {
                wayLatitude = location.getLatitude();
                wayLongitude = location.getLongitude();
                txtLocation.setText(String.format(Locale.US, "%s -- %s", wayLatitude, wayLongitude));
            }
        }
    }
};
mFusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())

如果不需要持续更新,则可以在收到请求后将其删除。

mFusedLocationClient.removeLocationUpdates(locationCallback);

更多信息在这里:https://medium.com/@droidbyme/get-当前位置-使用-fhedlocationSupply derclient-in-android-cb7ebf5ab88e

 类似资料:
  • 我正在使用谷歌api融合定位。我想获得当前位置的高精度,而不连续跟踪位置与LocationListener接口的位置。 我有一个简单的用例:用户点击按钮,应用程序将显示当前的纬度和经度(新位置)。 然后,getLastLocation()是从缓存中检索位置(这意味着在某些情况下它不可能准确),还是发出位置请求以获取新数据? 如果否,是否可以在不实现LocationListener接口的情况下实现我

  • 问题内容: 我在python中有2个数据框,我想查询数据。 DF1:4M记录x 3列。查询函数比loc函数更有效。 DF2:2K记录x 6列。loc函数的接缝比查询函数更有效。 这两个查询都返回一条记录。通过将相同的操作循环运行10K次来完成仿真。 运行python 2.7和pandas 0.16.0 有什么建议可以提高查询速度? 问题答案: 为了提高性能,可以使用:

  • bugu-mongo支持地理位置数据的存储、索引、查询。相关的类都位于com.bugull.mongo.geo包中。 注意: MongoDB对于地理位置数据,默认使用的是WGS84坐标系。如果你的地理位置数据来源是其他坐标系的,请记得先进行转换。 存储、索引 MongoDB能够存储不同类型的地理位置数据,这些数据都是GeoJSON格式。 目前,bugu-mongo支持: Point LineStr

  • 复杂类型,如数组(arrays)和数据结构(struct)在Solidity中有一个额外的属性,数据的存储位置。可选为memory和storage。 memory存储位置同我们普通程序的内存一致。即分配,即使用,越过作用域即不可被访问,等待被回收。而在区块链上,由于底层实现了图灵完备,故而会有非常多的状态需要永久记录下来。比如,参与众筹的所有参与者。那么我们就要使用storage这种类型了,一旦使

  • (near)或(照片)等应用程序的功能,可使用目前的位置数据。使用各应用程序时会显示是否使用位置数据的确认画面。在此会显示允许使用位置数据的应用程序列表。 若轻触[使用位置数据]的方格停用设定,则所有的应用程序都无法使用位置数据。 依您使用的国家或地区不同,可能无法使用此功能。 若在[加密]>[视听者限制]内限制使用位置数据,无法进行此设定。 关于取得位置数据 3G/Wi-Fi机种 使用Wi-Fi

  • 问题内容: 在将其dmg文件版本64位下移后,我在Mac中安装了mysql。尝试创建数据库时,出现错误1006-无法创建数据库。浏览了多个网站后,似乎由于用户所有权设置的mysql“数据目录”位置需要更改。 mysql默认的“数据目录”在哪里?我在localhost中找不到/ var / lib / mysql。 谢谢。 问题答案: 看看您是否在下有一个文件。如果是这样,它应该告诉您数据目录在哪里