我已经从http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/实现了自己的GPSTracker类版本
使用此功能,您可以在有效位置可用后立即打开GPS并接收回叫。根据设备的位置,这可能会花费一些时间,但位置会更加精确和可靠。
通过我的实现,您可以执行以下操作:
private GPSTracker gps;
private FirstFixListener firstFixListener;
private LocationUpdateListener locationUpdateListener;
private void sendGPStoSMS() {
gps = GPSTracker.getInstance(context);
firstFixListener = new MyFirstFixListener();
locationUpdateListener = new MyLocationUpdateListener();
gps.startUsingGPS(firstFixListener, locationUpdateListener);
}
private class MyFirstFixListener implements FirstFixListener {
@Override
public void onFirsFixChanged(boolean hasGPSfix) {
if (hasGPSfix == true) {
Location position = gps.getLocation();
// send SMS with position
// stop the gps and unregister callbacks
gps.stopUsingGPS(firstFixListener, locationUpdateListener);
}
}
}
private class MyLocationUpdateListener implements LocationUpdateListener {
@Override
public void onLocationChanged(Location location) {
// hand you each new location from the GPS
// you do not need this as you only want to send a single position
}
}
这是我对GPSTracker的实现:
public class GPSTracker extends Service implements LocationListener {
private static final String TAG = "GPSTracker";
/**
* Register to receive callback on first fix status
*
* @author Morten
*
*/
public interface FirstFixListener {
/**
* Is called whenever gps register a change in first-fix availability
* This is valuable to prevent sending invalid locations to the server.
*
* @param hasGPSfix
*/
public void onFirsFixChanged(boolean hasGPSfix);
}
/**
* Register to receive all location updates
*
* @author Morten
*
*/
publ