Java 我如何添加计时器来调用函数以每1分钟显示gps位置

Java 我如何添加计时器来调用函数以每1分钟显示gps位置,java,android,Java,Android,我正在创建用于显示Gps位置的应用程序。我需要每1分钟显示一次位置。我可以使用计时器吗?如果可以,请向我提供计时器代码。您无法使用计时器来获取位置更新。已经有一种方法可以获取用户当前位置的更新 您应该调用requestLocationUpdates()方法来获取lastKnownLocation的更新 方法是, LocationManager mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE); mLocMgr.reque

我正在创建用于显示Gps位置的应用程序。我需要每1分钟显示一次位置。我可以使用计时器吗?如果可以,请向我提供计时器代码。

无法使用
计时器来获取位置更新。已经有一种方法可以获取用户当前位置的更新

您应该调用
requestLocationUpdates()
方法来获取
lastKnownLocation
的更新

方法是,

LocationManager mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocMgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 100, this);
这将在1000毫秒和100米后获得最后一次已知位置更新

为了得到经纬度

Location location;
if (mLocMgr != null) {
    location = mLocMgr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    if (location != null) {

        latitude = location.getLatitude();
        longitude = location.getLongitude();

        System.out.println(latitude+" "+longitude);
    }
}

请参考

中的位置管理器,根据您的查询,我知道您希望每1分钟请求一次位置更新,并且您已经为此编写了一个处理程序。请尝试以下对我有效的代码

        LocationManager mlocManager;
    mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                mlocListener = new MyLocationListener();

    //paste this in your handler or timer
    {
    if (mlocManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
                    mlocManager.requestSingleUpdate(
                            LocationManager.NETWORK_PROVIDER, mlocListener, null);
                } else if (mlocManager
                        .isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                    mlocManager.requestSingleUpdate(LocationManager.GPS_PROVIDER,
                            mlocListener, null);
                }
    }

    //this the class to get the location.
        public class MyLocationListener implements LocationListener {

            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                try {
//you may store these values where ever required. 
                    Double latitude =  location.getLatitude();      
                    Double latitude =  location.getLongitude(); 
                } catch (Exception e) {
                    e.printStackTrace();

                }

            }

            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub

            }

        }

最终处理程序=新处理程序();定时器=新定时器();TimerTask doAsynchronousTask=new TimerTask(){@Override public void run(){handler.post(new Runnable(){public void run(){try{displayCurrentLocation();}catch(例外e){}};}};timer.schedule(doAsynchronousTask,5*100);这是我的计时器代码,我需要在每1minAs中显示位置。我说过,你不能使用计时器来获取位置更新。你必须使用位置管理器,正如我在回答中所说的