android - 如何停止测试位置提供程序

标签 android gps mocking location

目前,我正在开发一个将位置信息注入(inject) Android 的应用程序。此应用程序应在特定时刻注入(inject)位置。之前和之后,应该使用正常的GPS。

我的软件能够切换到模拟位置并成功注入(inject)位置。但我无法让 Android 再次收听正常的 GPS。

我要设置的代码:

mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mLocationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, true, true, true, 0, /*magic*/5);
mLocationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);

我试图停止失败:

mLocationManager.setTestProviderEnabled(PROVIDER_NAME, false);
mLocationManager.removeTestProvider(PROVIDER_NAME);

我的问题:如何停止提供模拟位置并恢复默认的 Android GPS?

最佳答案

我发现这是由于两个原因。

首先,不需要调用 setTestProviderEnabled(PROVIDER_NAME, false)。其次,在查看Android源代码时,显示普通GPS不会自动激活。通过在 removeTestProvider() 调用之后请求位置更新,将激活正常的 GPS 信号并且一切正常。

关于android - 如何停止测试位置提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882412/

相关文章:

jestjs - 开 Jest ,我如何使用 "toHaveBeenCalledWith"并且只匹配数组参数中对象的一部分?

Python 3 : unittest. mock 如何为特定输入指定不同的返回值?

angular - 无法使用生产构建导入 Angular MockBackend

java - Android create() 上的空指针异常

java - 正则表达式匹配android java中的数字

Android LocationManager 网络提供者返回 null

c# - 如何计算最短路线?

iphone - 为什么 locationManager 不是 :didUpdateLocations being called?

java - Android 2.1 中的正则表达式负向预测

java - 带有 XML 数据库的 Android 歌曲歌词应用程序