Android requestLocationUpdates без minDistance - PullRequest
2 голосов
/ 06 апреля 2011

Мне нужно получать местоположение GPS каждые 20 секунд или около того, но, игнорируя необходимость заставлять пользователя перемещаться на определенное количество метров, я пытался установить minDistance на ноль, но все равно не повезло, это только когда я вручную отправьте местоположение с помощью элемента управления местоположением из DDMS, чтобы активировать его и обновить местоположение.

Примечание. Это запускается и тестируется с эмулятора, а не с реального устройства, на данный момент, по крайней мере,

private final static Long INTERVAL_TIME = new Long(20);
private final static Float METERS_MOVED_VALUE = 0f;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.journey);

    Bundle dataBundle = this.getIntent().getExtras();

    try {
        driverData = new JSONObject(dataBundle.getString("driverData"));
    } catch (JSONException e) {
        e.printStackTrace();
    }

    //Set the UI elements into variables
    journeyDescription = (TextView)findViewById(R.id.journeyDescription);
    journeyText = (TextView)findViewById(R.id.journeyText);
    confirmButton = (Button)findViewById(R.id.btnCheck);

    //Acquire a reference to the system Location Manager
    locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

    LocationListener locationListener = new LocationListener() {
        public void onLocationChanged(Location location) {
            try{
                //Until requests are found keep broadcasting the drivers location and checking for requests
                if(!foundRequest){
                    updateDriverLocationAndCheckForNewDriverRequests(location);
                }

                //Always keep updating the drivers location
                Double latitude = location.getLatitude()*1E6;
                Double longitude = location.getLongitude()*1E6;
                geoPoint = new GeoPoint(latitude.intValue(), longitude.intValue());

            }catch(JSONException e){
                Toast.makeText(JourneyActivity.this, "An unexpected error occurred", Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }                   
        }

        public void onStatusChanged(String provider, int status, Bundle extras) {}

        public void onProviderEnabled(String provider) {}

        public void onProviderDisabled(String provider) {}
    };

    //Register the listener with the Location Manager to receive location updates can be either gps provider
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){  
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, INTERVAL_TIME, METERS_MOVED_VALUE, locationListener);
    }
    else {
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, INTERVAL_TIME, METERS_MOVED_VALUE, locationListener);
    }
}

Вот соответствующий фрагмент кода, любые идеи о том, как вызвать слушателя, не заставляя пользователя двигаться, или мне нужно отправить информацию из системы управления местоположением DDMS, будут очень благодарны

С уважением, Милинда

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

requestLocationUpdates занимает миллисекунды, а не секунды. Вам следует изменить:

private final static Long INTERVAL_TIME = new Long(20);
private final static Float METERS_MOVED_VALUE = 0f;

до:

private final static int INTERVAL_TIME_SECONDS = 20 * 1000; // 20 seconds
private final static float INTERVAL_DISTANCE_METERS = 0f; // 0 meters
0 голосов
/ 07 апреля 2011

Насколько тестирование на эмуляторе идет.Я думаю, вы ограничены ручным нажатием GPS-местоположений или созданием нескольких автоматических симуляторов: Тестирование GPS в Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...