Android - 一段时间后获取位置

时间:2015-10-08 11:45:20

标签: java android gps location

我可以使用LocationManager获取minDistance和minTime。

但是,我怎样才能每隔15秒获得一次位置? (即使用户没有移动)

        if (Utils.hasProvider(LocationManager.GPS_PROVIDER)) {
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 15000, 100f, this);
        }

        if (Utils.hasProvider(LocationManager.NETWORK_PROVIDER)) {
            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 15000, 100f, this);
        }

3 个答案:

答案 0 :(得分:3)

Google文档说

  

minDistance参数也可用于控制频率   位置更新。如果它大于0则为位置提供者   只会在该位置发送时向您的应用程序发送更新   由至少minDistance米改变,至少是minTime   毫秒已经过去了。然而,位置更难   提供商使用minDistance参数来节省电量,所以minTime   应该是节省电池寿命的主要工具。

因此涉及AND条件。因此,您应该将距离参数设置为0.在这种情况下,您将每15秒获得一次位置更新。

答案 1 :(得分:0)

使用AlarmManager执行此操作。请参阅answer。将时间替换为5分钟。

否则,您可以使用

         Runnable runnable = new Runnable() {

         public void run() 
                {
                    //Your code to fetch location
                }
            };

            Handler handler1 = new Handler();
            handler1.postDelayed(runnable, 15000);

这里15000是15秒。

答案 2 :(得分:0)

你可以使用IntentService和onstartcommand调用runnable来发布你的位置,就像这样

   Handler handler.postDelayed(postGpsRunnable, 15000);