如何每隔 1 分钟获取当前位置?

Posted

技术标签:

【中文标题】如何每隔 1 分钟获取当前位置?【英文标题】:How to fetch the current Location in every 1 min of interval? 【发布时间】:2011-11-27 09:35:10 【问题描述】:

我已经实现了演示来显示用户当前的经纬度。 现在我可以看到当前位置的经纬度。 但我想将其设置为每隔 1 分钟显示一次。 代码如下:

public class MainActivity extends Activity 

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        LocationListener lListener = new mylocationlistener();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, lListener);
    

    private class mylocationlistener implements LocationListener 
        @Override
        public void onLocationChanged(Location location) 
            if (location != null) 
            Log.d("LOCATION CHANGED", location.getLatitude() + "");
            Log.d("LOCATION CHANGED", location.getLongitude() + "");
            Toast.makeText(MainActivity.this,
                "My current location:\nLatitude:"+location.getLatitude() + "\nLogitude:" + location.getLongitude(),Toast.LENGTH_LONG).show();
            
        

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

        

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

        

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

        
    

那么,我应该怎么做才能让它以每 1 分钟的间隔显示当前的经纬度? 我想我必须使用线程来实现它。如何让它成为可能?

【问题讨论】:

【参考方案1】:
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, lListener);

方法中的参数表示 - 提供者、时间、距离和位置侦听器。

因此,要从 Location 监听器请求更新,您需要将第二个参数设置为 1000*60,因为时间是以毫秒为单位记录的。

【讨论】:

您也可以使用AlarmManager,以1分钟为间隔进行设置,并在每次警报触发时调用此代码块。 它不起作用。如果位置更新,它可能会起作用。但我不想要它。我只希望即使位置相同,它也会在屏幕上吐司。我认为线程是它的最佳用途。那你能告诉我它的代码吗? 不知道你为什么要这么做。它只会很快耗尽你的电池。使用线程会起作用,但会使事情复杂化。无论如何,正如我所说,您可以使用 AlarmManager 来获得这种效果。 android-er.blogspot.com/2010/10/… :我不担心电池。如果你有一些线程每 1 分钟执行一次,请给我。 new Thread() public void run() while(true) 在此处调用您的位置监听器 tryThread.sleep(1000*60)catch(Exception ex) 。开始();只记得在 runOnUiThread() 块中显示一个 Toast

以上是关于如何每隔 1 分钟获取当前位置?的主要内容,如果未能解决你的问题,请参考以下文章

在android中每n分钟获取当前位置

位置值每隔几秒更改一次 - navigator.geolocation.getCurrentPosition

在Swift 2.0中每隔n分钟更新一次背景中的位置

如何在后台模式下获取当前位置并在后台模式下继续将该位置发送到服务器

当应用程序处于后台/挂起状态时,CLLocation 不断更新

在Android中获取用户的日常路线?