在 Android 模拟器中激活网络位置提供程序?

Posted

技术标签:

【中文标题】在 Android 模拟器中激活网络位置提供程序?【英文标题】:Activating Network Location Provider in the Android Emulator? 【发布时间】:2011-01-26 08:14:44 【问题描述】:

是否可以在android模拟器上激活网络位置提供程序?也许是用假细胞?

【问题讨论】:

为什么需要网络位置提供商?这就是你要找的东西:osdir.com/ml/AndroidDevelopers/2009-03/msg02179.html 如果能在模拟器上测试网络位置提供者就好了……链接不是我要找的,谢谢。 你的意思是,看看GPS是否被激活? 网络位置提供商可以在不激活 gps 传感器的情况下为您提供位置。这样可以节省电池,并且比获取 gps 位置更快。因此我想在我的应用程序中使用它。因此我想用模拟器测试它 @Janusz 完全正确。除非您需要米级精度,否则请求 GPS 许可是不合适的。它不仅可以节省电池,而且可以更快地获得“修复”,并且在隐私方面的侵入性更小。 【参考方案1】:

我相信你想要达到的目标目前是不可能的。您不能将模拟位置数据放入模拟器的网络位置提供程序。

“提供模拟位置数据是作为 GPS 位置数据注入的,因此您必须从 GPS_PROVIDER 请求位置更新才能使模拟位置数据起作用。” (引自Android, Documentation, Providing Mock Location Data)

我能想到的最接近的方法是从Location Manager 创建一个“测试提供者”

public void addTestProvider (String name, boolean requiresNetwork, boolean requiresSatellite, boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude, boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy)

并相应地设置参数 requiresNetworkrequiresCellrequiresSatellite。然后您可以将虚假位置发送给该提供商:

public void setTestProviderLocation (String provider, Location loc)

这接近但不完全符合您的要求。

【讨论】:

【参考方案2】:

您需要向模拟器发送位置信息吗?如果你想这样做,你可以通过 adb 控制台和地理命令将位置发送到模拟器 http://developer.android.com/guide/developing/tools/emulator.html#geo

我不知道是否可以发送假的 cellid,但如果您的应用程序监听任何 gps 提供商,则可以使用 gps 坐标

【讨论】:

GPS 工作正常,但我使用的是网络位置提供程序,似乎无法在模拟器上测试。【参考方案3】:

也许您可以在模拟器中安装UnifiedNlp 网络位置提供程序,然后您至少一个NETWORK 位置提供程序,即使它没有带上任何数据。

该提供程序是模块化的,因此也许²您可以为其编写一个后端来注入您的模拟位置。

【讨论】:

【参考方案4】:

转到您的模拟器设置>位置访问并检查“Wi-Fi 和移动网络位置”

【讨论】:

以上是关于在 Android 模拟器中激活网络位置提供程序?的主要内容,如果未能解决你的问题,请参考以下文章

未从 LocationManager 中清除的 Android 模拟位置提供程序

带有模拟位置提供程序的 Android 地理围栏

如何在不使用模拟位置的情况下在 android 上欺骗位置?

在 Android 中找不到位置提供程序

如何同时使用 GPS 和网络提供商在 Android 中获取当前位置的纬度和经度值

模拟坐标 Android Marshmallow