如何停止测试位置提供者

3

目前,我正在开发一个能够将位置注入到安卓系统中的应用程序。该应用程序应在特定时刻注入位置,在此之前和之后应使用正常的GPS。

我的软件能够成功地切换到模拟位置并注入位置。但是我无法让安卓系统再次监听正常的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?
1个回答

2
我发现这是由于两个原因造成的。
首先,不需要调用setTestProviderEnabled(PROVIDER_NAME, false)。其次,在查看Android源代码时,显示普通GPS不会自动激活。在removeTestProvider()调用后请求位置更新,普通GPS信号将被激活,一切正常运行。

那么解决方案就是什么都不做?只是不发送新的测试位置? - user1940676
不,注册一个新的位置监听器后它又正常工作了。然后真正的GPS将再次用于位置更新。 - Jordi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接