【问题标题】:How to fetch the current Location in every 1 min of interval?如何每隔 1 分钟获取当前位置?
【发布时间】: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 分钟的间隔显示当前的经纬度? 我想我必须使用线程来实现它。如何让它成为可能?

【问题讨论】:

    标签: android android-layout android-emulator gps android-ndk


    【解决方案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){ 在此处调用您的位置监听器 try{Thread.sleep(1000*60)}catch(Exception ex){}}}} 。开始();只记得在 runOnUiThread() 块中显示一个 Toast
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    相关资源
    最近更新 更多