LocationClient — фиктивные локации

Я использую LocationClient, который работает хорошо. Теперь я пытаюсь создать фиктивные местоположения (setMockMode (true) + setMockLocation (mockLoc). Но onLocationChanged моего LocationListener не вызывается. В чем может быть проблема?

Я следовал этому: http://developer.android.com/training/location/location-testing.html

Шаги:

  • соединять
  • requestLocationUpdates
  • установитьMockMode true
  • setMockLocation (поставщик = "flp")

person Francesco verheye    schedule 28.05.2014    source источник


Ответы (1)


Итак, вам нужно обновить свои местоположения с помощью setTime() и setElapsedRealtimeNanos().

Полный метод создания местоположения будет выглядеть примерно так:

@SuppressLint("NewApi")
public Location createLocation(double lat, double lng, float accuracy) {
    // Create a new Location
    Location newLocation = new Location(PROVIDER);
    newLocation.setLatitude(lat);
    newLocation.setLongitude(lng);
    newLocation.setAccuracy(accuracy);
    newLocation.setTime(System.currentTimeMillis());

    int sdk = android.os.Build.VERSION.SDK_INT;
    if(sdk >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
        newLocation.setElapsedRealtimeNanos(
             SystemClock.elapsedRealtimeNanos());
    }
    return newLocation;
}

Это было протестировано для работы с Nexus 5.

person Warpzit    schedule 07.06.2014
comment
Решена проблема на Samsung S3 Mini. Спасибо! - person Andrei F; 14.08.2014
comment
@IgorGanapolsky Я бы порекомендовал fused, чтобы система Android сама определяла, откуда брать лучшие данные. - person Warpzit; 31.01.2015