Locationlistener和计时器

时间:2011-05-05 09:16:14

标签: android

有没有人知道为什么我不能通过Timertask注册locationlistener时获得任何坐标(尝试使用NETWORK_PROVIDER和GPS_PROVIDER) 但是当我手动注册它时,我得到的坐标就好了。

这是我注册听众的方式:

Looper.myLooper().prepare();
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,locationListener);
Looper.myLooper().loop();

我的位置监听器如下所示:

LocationListener locationListener = new LocationListener() {

    public void onLocationChanged(Location location) {
        lat = location.getLatitude();
        longt = location.getLongitude();
        if(lat !=0 && longt!=0)
        {Log.e(LOG_TAG, "getting coords");
            locationManager.removeUpdates(locationListener);
            Toast.makeText(getApplicationContext(), "got coords!!!", 2000).show();
            reqlat.add(String.valueOf(lat));
            reqlon.add(String.valueOf(longt));
            DateFormat timeformat = new SimpleDateFormat("HH:mm:ss");
            Date now = new Date();
            Date date = new Date();
            DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
            reqtime.add(String.valueOf(timeformat.format(now)));
            reqdate.add(String.valueOf(dateFormat.format(date)));  
            savemyData();
            lastlongt = longt;
            lastlat = lat;
            logging=false;
            coords = false;
            CancelGpsTimer();
            Looper.myLooper().quit();

        }

    }

我怀疑它与looper.prepare()有关,但我无法弄清楚是什么。如果我没有looper.prepare(),我得到一个例外,说我无法创建一个处理程序,而是一个没有调用looper.prepare()的线程。

1 个答案:

答案 0 :(得分:1)

我认为这是因为你退出了循环。你应该尝试执行循环,直到你收到坐标然后退出。

Looper API Reference