Показывать местоположение каждые 10 секунд в Android Studio - PullRequest
0 голосов
/ 10 мая 2019

Я делаю приложение, в котором каждые 10 секунд местоположение отображается в другом месте на карте, плохо то, что оно не работает для меня, и когда я запускаю программу, я вижу все местоположения, уже существующие,но я хочу, чтобы каждые 10 секунд располагались один за другим, как будто они двигались.Это мой код:

    @Override
    public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    for ( contador=1;contador<=10;contador++) {

            final long EXECUTION_TIME = 10000;
            handler.postDelayed(new Runnable() {

            @Override
            public void run() {

               handler.postDelayed(this, EXECUTION_TIME);
            }
        }, EXECUTION_TIME);

        mMap.addMarker(new MarkerOptions().position(obtenerLatLong(contador)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(contador), 17));

    }
}

есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Ваши обработчики не делают ничего, кроме запуска других обработчиков, вы должны сделать вызовы addMarker и moveCamera внутри run() и в конце run() запустить следующий postDelayed.Вы можете использовать int, чтобы подсчитать и увидеть, где вы находитесь в цикле, и запустить другой обработчик, только если это int меньше 10. (здесь я использовал cpt, чтобы сделать это)

final long EXECUTION_TIME = 10000;
final Handler handler = new Handler();

handler.postDelayed(new Runnable() {
    int cpt = 1;
    @Override
    public void run() {
        /* old
        * mMap.addMarker(new MarkerOptions().position(obtenerLatLong(contador)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
        * mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(contador), 17));
        */
        //new
        mMap.addMarker(new MarkerOptions().position(obtenerLatLong(cpt)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(cpt), 17));

        cpt++;
        if(cpt <= 10)
            handler.postDelayed(this, EXECUTION_TIME);
    }
}, EXECUTION_TIME);
0 голосов
/ 10 мая 2019

Это будет работать, попробуйте:

final long EXECUTION_TIME = 10000;
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
int i=0;
  @Override
  public void run() {
    i=i+1;
    mMap.addMarker(new MarkerOptions().position(obtenerLatLong(contador)).title("Mi Hogar").snippet("Municipio").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(obtenerLatLong(contador), 17));
    if(i==10){
       handler.removeCallbacks(this);
    }
 }
}, EXECUTION_TIME);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...