无法清除模拟位置?

问题描述 投票:1回答:1

这是我在应用程序中设置模拟位置的方式:

public void startMockLocation(String latitude, String longitude){

    FusedLocationProviderClient locationProvider =  new FusedLocationProviderClient(getApplicationContext());
    locationProvider.setMockMode(true);

    Location loc = new Location("gps");

    mockLocation = new Location("gps");
    mockLocation.setLatitude(Double.valueOf(latitude));
    mockLocation.setLongitude(Double.valueOf(longitude));
    mockLocation.setAltitude(loc.getAltitude());
    mockLocation.setTime(System.currentTimeMillis());

    mockLocation.setAccuracy(1f);
    mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        mockLocation.setBearingAccuracyDegrees(0.1f);
        mockLocation.setVerticalAccuracyMeters(0.1f);
        mockLocation.setSpeedAccuracyMetersPerSecond(0.01f);
    }

    locationProvider.setMockLocation(mockLocation);
}

但是我无法使用下面的代码清除模拟位置并重新设置真实位置。我应该写些什么呢?

public void clearMockLocation() {
    locationProvider.setMockMode(false);
}
java android location android-fusedlocation
1个回答
0
投票

您可以使用给定的LocationManager方法在removetestProvider()的帮助下刷新或重置模拟位置

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.removeTestProvider(LocationManager.GPS_PROVIDER);

到目前为止,您的问题正在遵循以下步骤,例如:

  1. 设置Gps的模拟位置
  2. 转到GoogleMaps并查看您的模拟位置
  3. 返回您的应用,并希望停止嘲笑

您应该按照以下步骤clear/reset您的模拟位置,例如:

  • 在设置中的开发面板中启用模拟位置。
  • Manifest.xml即添加权限

    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />

  • 现在再次打开Goog​​leMaps,并等到Gps提供者收到新的实时位置。这可能会比较耗时,即(1-3 minutes)。

因此,在删除提供程序时,只需让Gps接收新的新位置,即可解决并修复它。如果万一它不能再工作,那么您可以进一步执行以下步骤:

转到应用程序设置,清除应用程序缓存,并重新启动 移动设备

我希望它会很好用。您也可以访问这些参考文献以获得更好的直觉:

© www.soinside.com 2019 - 2024. All rights reserved.