是否可以在 android 模拟器上激活网络位置提供程序?也许用假细胞?
4 回答
我相信你想要达到的目标目前是不可能的。您不能将模拟位置数据放入模拟器的网络位置提供程序。
“提供模拟位置数据作为 GPS 位置数据注入,因此您必须从 GPS_PROVIDER 请求位置更新,以便模拟位置数据工作。” (引自Android,文档,提供模拟位置数据)
我能想到的最接近的事情是从 位置管理器创建一个“测试提供者”
public void addTestProvider (String name, boolean requiresNetwork, boolean requiresSatellite, boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude, boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy)
并相应地设置参数requiresNetwork、requiresCell和requiresSatellite。然后,您可以将虚假位置发送给该提供商:
public void setTestProviderLocation (String provider, Location loc)
这接近但不完全符合您的要求。
您需要将位置信息发送到模拟器吗?如果你想这样做,你可以通过 adb 控制台和地理命令将位置发送到模拟器http://developer.android.com/guide/developing/tools/emulator.html#geo
我不知道是否可以发送假 cellid,但如果您的应用程序监听任何 gps 提供商,则可以使用 gps 坐标
也许您可以在模拟器中安装UnifiedNlp网络位置提供程序,那么您至少有一个NETWORK
位置提供程序,即使它不带任何数据。
该提供程序是模块化的,所以也许²您可以为它编写一个后端来注入您的模拟位置。
转到您的模拟器设置>位置访问并检查“Wi-Fi和移动网络位置”