如何在使用模拟位置时禁用Android GPS接收器

时间:2018-11-02 15:27:12

标签: android xamarin mocking gps

在开发依赖GPS定位服务的Xamarin.Android应用程序时,我正在使用一个单独的自定义应用程序来模拟沿预定路线的移动。

模拟实现完全按预期工作,并且正在开发的应用正确接收其修复程序。但是,设备的真实GPS服务有时也会因与嘲笑位置相矛盾的实际GPS定位而中断。

%

我知道我可以过滤出模拟位置,但是这需要对使用中的应用进行硬编码,以知道它正在使用模拟数据,而我真的希望它与位置数据的来源无关。

我认为致电[0:] Position: 37.8623530305552, 27.2595232774193 [Mock] [0:] Position: 37.8623389227154, 27.2594691972361 [Mock] [0:] Position: 37.8955245, 27.2769657 [0:] Position: 37.8623248148509, 27.2594151170736 [Mock] [0:] Position: 37.8623107069617, 27.2593610369318 [Mock] 会暂时禁用真正的GPS服务,但事实并非如此。

我明显做错了吗?

1 个答案:

答案 0 :(得分:0)

对于任何面临此问题的人,解决方案都非常简单。

尽管我的模拟实现能够正确生成模拟GPS定位信息,但有时设备会生成真实的定位信息与模拟数据相抵触。

我最初以为这是因为没有正确地抑制真正的GPS提供程序,但是事实证明,不必要的修正来自 network 提供程序,这很有意义,因为我没有不要尝试嘲笑该提供程序。

一种快速的解决方案是将设备的位置模式切换为仅设备(Android设置>位置>模式)。这样可以确保设备仅将GPS用作其位置数据源。

或者,可以扩展该模拟实现,以添加一个模拟的网络位置提供程序,该位置提供程序然后根据Wi-fi或蜂窝参考抑制设备位置数据。