使用 android 获取 gps 位置 - 并不总是有效
Posted
技术标签:
【中文标题】使用 android 获取 gps 位置 - 并不总是有效【英文标题】:get gps location with android - not always working 【发布时间】:2015-11-12 12:44:51 【问题描述】:我正在开发一个 android 应用程序,其想法是用户记录并将表单发送到数据库。此表单还包含使用 gps 的用户的实际位置。
这是我正在使用的代码:
创建 ->
LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 1, locationListener);
然后是类->
class MyLocationListener implements LocationListener
@Override
public void onLocationChanged(Location loc)
long variance;
variance = age_minutes(loc);
if (variance < 1)
Log.v("asdf","we are inside" + variance);
posH.longitude = String.valueOf(loc.getLongitude());
Log.v("asdf", posH.longitude);
posH.latitude = String.valueOf(loc.getLatitude());
Log.v("asdf", posH.latitude);
posH.valid = true;
else
Log.v("asdf","we are outside" + variance);
posH.valid = false;
问题在于它并不总是有效: 例如,我打开表单,按发送,但直到我等待 20 秒才调用 onlocationchanged,有时更多,有时从不调用,不管我是否移动。
我想要一个方法,让我打开表单,并自动获取当前 gps 位置...
【问题讨论】:
【参考方案1】:您可以使用从最后知道的位置开始,直到您获得更多当前数据。
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
来自Android Location Strategies:
从移动设备获取用户位置可能很复杂。位置读数(无论来源如何)可能包含错误和不准确的原因有多种。用户位置的一些错误来源包括:
大量位置源 GPS、Cell-ID 和 Wi-Fi 都可以提供用户位置的线索。确定使用和信任哪个是准确性、速度和电池效率的权衡问题。
用户移动 由于用户位置发生变化,因此您必须通过不时重新估计用户位置来考虑移动。
变化的精度 来自每个位置源的位置估计的准确性并不一致。 10 秒前从一个来源获得的位置可能比从另一个或相同来源获得的最新位置更准确。 这些问题可能会导致难以获得可靠的用户位置读数。
【讨论】:
有时 lastknownlocation 是空的,这导致绝对没有位置。 使用 lastKnownLocation 作为起点,然后使用您现有的代码来监听并获取更好的位置数据。无论如何,不能保证您将能够获得正确的或任何位置数据。你只需要调整你的应用来处理它。以上是关于使用 android 获取 gps 位置 - 并不总是有效的主要内容,如果未能解决你的问题,请参考以下文章
在 android 中获取更新位置和禁用 GPS 后如何获取?