gpt4 book ai didi

android - 在没有互联网的情况下以编程方式更快地获取 GPS 坐标,但使用网络提供商和移动 GPS

转载 作者:IT老高 更新时间:2023-10-28 22:26:18 24 4
gpt4 key购买 nike

我已经提到了很多关于这个主题的问题,但我的一些要求似乎缺失了:

  1. 我想获得 ~0.0001 精度的 GPS 位置
  2. 不想上网;虽然 GSM/CDMA 网络还可以
  3. 应在应用启动时以编程方式获取
  4. 应该更快,比如一分钟内(比如 iPhone,它可能也可以在飞行模式下工作!)
  5. 该代码应该适用于大多数设备
  6. 手机可以随时开启/关闭,移动任意距离

有什么方法可以获得符合上述要求的坐标吗?任何示例代码 fragment 都将不胜感激。

检查各种声称显示离线位置的应用程序,例如“Locate Me”、“Maverick”。但是在没有互联网的各种情况下,他们不会跟踪位置(在印度)。
我在 SO 内部/外部提到了很多旧/新问题。下面是几个:

[注意:我代表我的 Android 团队提出这个问题,如果有要求,我很乐意澄清细节。如果您觉得这篇文章属于 Android.Stackexchange,请移步。]

最佳答案

1.我想以 ~0.0001 的精度获得 GPS 位置

您可以只收听 GPS 提供商并在某个位置没有达到您想要的最低精度时丢弃它:

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 5, myLocationListener);  // "myLocationListener" must be an object from a class that implements LocationListener 

// "myLocationListener" implementation of LocationListener.onLocationChanged
public void onLocationChanged(Location location)
{
int MIN_ACCURACY = 5; // in metters
if ((!location.hasAccuracy()) || (location.getAccuracy() > MIN_ACCURACY))
{
// discard this location and keep listening to new location readings
}
else
{
// that's a good reading!

// do somethings you want... blah, blah, blah...

// stop updates when you get the location to preserve users' battery.
locationManager.removeUpdates(myLocationListener);
}
}

<强>2。不想上网;虽然GSM/CDMA网络还可以

是的,GPS 完全离线工作。 Android 只能使用互联网来更新 A-GPS 数据缓存并在冷启动更新中提供更快的读取。


3.应在应用启动时以编程方式获取

然后在 mainActivity 的 onCreate 事件上调用项目 locationManager.requestLocationUpdates


4.应该更快,说在一分钟内(比如 iPhone,这可能 也可以在飞行模式下工作!)

请记住,iPhone 可以使用“高质量硬件”。 Android可以在蹩脚的设备上运行。所以这取决于:

  • 设备的硬件质量;
  • 当时天空中可见的卫星数量;
  • gps 缓存中年历和星历数据的年龄;
  • GPS 可能无法读取卫星,因为用户在建筑物内或其他地方。

5.该代码应该适用于大多数设备

您希望它运行的最古老的 Android API 是什么?


6.手机可以随时开/关,走任何距离

我没听懂。您对此有何顾虑?

----------------------------------------------- -------------------------------------------

更新 1:

“...我想使用 Android 4.0 及更高版本...”

我已经测试了从 Android 2.3 到 5.0 设备的 GPS 功能。所有这些都运行良好。

"...我观察到 1 个基于地理坐标的演示应用程序在其他设备上运行,但在我的带有 Android 5.0 的 LGG3 中无法运行。对此有什么想法吗?... "

您是否检查了 Android 设置中的 GPS 权限? (也许它已被禁用)或者可能是硬件问题?您是否尝试过其他类似的设备?

"...假设 GPS 在纽约显示正确的位置,我关掉手机,到达伦敦后又打开,那么它还会显示正确的位置(没有互联网)吗?...”

听起来您很困惑:读取 GPS 位置是一回事。在 MAP 中显示该位置是另一回事!

您无需连接到互联网即可读取 GPS 位置。但是,如果您想将该位置显示到 MAP 中,您可能需要互联网(以加载 map 资源等)。

如果您需要定期收集 GPS 位置(例如,从 10 到 10 分钟),那么最好使用 AlarmManager 安排一个计时器,该计时器将“指点”您的应用并说“嘿,是时候做GPS读数!”。

“...另外,您对最新的 Fused API 有何看法?...”

我已经测试过并使用了一段时间,但我放弃了它。它需要安装 Google Play 服务才能工作(这不是问题,大多数用户在他们的设备上都有它)。但是如果你需要准确度(就像我一样),它就行不通了。它使用“融合传感器”(加速度计、gps、wifi、指南针等)来尝试以最小的功率获取用户位置。有时,它会说你离你真正所在的地方有 10 英里。我无法让它正常工作以保持用户所在的“路径”。但它确实可以节省电池。

关于android - 在没有互联网的情况下以编程方式更快地获取 GPS 坐标,但使用网络提供商和移动 GPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29891287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com