【问题标题】:Replace default GPS signal provider on Android devices替换 Android 设备上的默认 GPS 信号提供程序
【发布时间】:2010-09-03 13:19:30
【问题描述】:

我想用我自己的坐标源替换安卓手机上的默认 GPS 位置提供程序。

是否有任何层/API/库/提供程序可以替换为我的信号提供程序而不是内置硬件 GPS,或从外部插件读取?它应该允许所有依赖 GPS 服务的应用程序接收我的信号而不是 GPS。 理想情况下,替代品应该仍然能够访问 GPS 信号(用于比较/校正或在两个提供商之间切换)。

我正在考虑例如实现我自己的 LocationManager,并在系统中注册它(作为可选或默认),如果可能的话。但现阶段,我还在尝试找出什么是可能的和合适的。

感谢您的任何指点。

【问题讨论】:

  • 非常感谢到目前为止的回复。我一直在旅行,我必须阅读每个答案才能做出决定。我问的原因是,如果您可以检索当前位置的大气失真测量值,则实际上可以改善 GPS 信号。因此,如果可以为其他应用即时替换位置提供程序,那就太好了。
  • 我在官方的 Android 开发者名单上发现了一个类似的、最近的但不幸的是没有答案的问题:groups.google.com/group/android-developers/browse_thread/thread/…。我看过其他Android项目的海报,所以我猜他有一些经验。也许他在此期间发现了更多他愿意分享的信息。
  • 谢谢,RoToRa。我会尽力跟进。

标签: android gps driver


【解决方案1】:

此时不允许替换“默认值”,唯一的解决方法是创建一个模拟提供程序。首先你必须设置安全权限:

其次,将您的代码设置为使用您将创建的模拟提供程序。这里有一些关于如何做到这一点的优秀信息:http://diffract.me/2009/11/android-location-provider-mock/

【讨论】:

  • 感谢您的链接。如果无法在用户的手机上请求该权限,那也无济于事。而且您仍然需要修改目标应用程序。
  • 有人知道这个链接的来源吗?它现在是 404,Google 缓存和网络存档都列出了它。谢谢
【解决方案2】:

目前我只是在阅读有关 android SDK 的信息。但是我的理解是,您将提供 GPS_PROVIDER 意图的实现。

然后任何应用程序都可以转向使用用户首选的 GPS_PROVIDER 意图。

见: http://developer.android.com/guide/topics/intents/intents-filters.html

【讨论】:

    【解决方案3】:

    我很确定用于精细定位的默认位置提供程序已融入 Android。

    鉴于 Google 越来越意识到应用程序可能滥用和滥用系统资源,我认为这是一件好事。否则,人们将能够使用听起来可靠的“使用 GPS 卫星”设置来欺骗用户以为他们在其他地方。

    我可以看到您可以添加位置提供程序的唯一方法是通过android.location.LocationManager.addTestProvider(......),这需要权限 ACCESS_MOCK_LOCATION。现在,此方法和权限都被记录为用于“测试”目的。我找不到明确说明未授予市场发布应用许可的消息来源,但我强烈怀疑情况确实如此。

    【讨论】:

    • 我真的想不出通过模拟定位用户的合理攻击,而不是您实际上可以授予的所有其他权限。但我想你仍然是正确的,它不适用于市场上的应用程序。
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多