有没有人知道为什么我不能通过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()的线程。