您好我需要知道如何使用Android中的GPS来监听以下内容,以便我可以在PreferenceActivity
中更新用户界面。我试过GpsStatus.Listener
但没有发生任何事情。
GpsStatus.GPS_EVENT_STARTED
GpsStatus.GPS_EVENT_STOPPED
任何建议都会很棒。
答案 0 :(得分:6)
mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
// Define a listener that responds to location updates
mGPSStatusListener = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event) {
switch (event) {
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
satelliteStatus = mLocationManager.getGpsStatus(null);
Iterable<GpsSatellite> iSatellites = satelliteStatus
.getSatellites();
Iterator<GpsSatellite> it = iSatellites.iterator();
maxsatellites = 0;
while (it.hasNext()) {
GpsSatellite oSat = (GpsSatellite) it.next();
statArray[maxsatellites][0] = oSat.getPrn();
statArray[maxsatellites][1] = oSat.getAzimuth();
statArray[maxsatellites][2] = oSat.getPrn();
statArray[maxsatellites][3] = oSat.getElevation();
statArray[maxsatellites][4] = oSat.getSnr();
if (oSat.usedInFix()) {
statArray[maxsatellites][5] = 1;
} else {
statArray[maxsatellites][5] = 0;
}
maxsatellites++;
}
if (mLastLocation != null)
if ((SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000) {
isGPSFix = 7; // Enumeration for ONC_STAT_3D
} else {
isGPSFix = 2; // Enumeration for ONC_STAT_BAD_COVER
}
}
if (isGPSFix == 1) { // A fix has been acquired.
// Do something.
} else { // The fix has been lost.
// Do something.
}
break;
case GpsStatus.GPS_EVENT_FIRST_FIX:
// Do something.
isGPSFix = 1;
break;
case GpsStatus.GPS_EVENT_STOPPED:
if ((mLastLocation = mLocationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER)) != null) {
isGPSFix = 5; // Enumeration for } else {
isGPSFix = 2; // Enumeration for
}
}
}
};
mGPSLocationListener = new LocationListener() {
public void onLocationChanged(Location location) {
// Called when a new location is found by the location
// provider.
if (location == null)
return;
mLastLocationMillis = SystemClock.elapsedRealtime();
// Do something.
mLastLocation = location;
}
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
};
mLocationManager.addGpsStatusListener(mGPSStatusListener);
// Register the listener with the Location Manager to receive location
// updates
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
mUpdateIntervalInMillis, 0, mGPSLocationListener);
答案 1 :(得分:0)
查看系统设置应用程序的源代码以及他们是如何做到这一点并将其实现到我的应用程序中并且效果很好。 @SKJ thx的帮助,但遗憾的是我无法让GpsStatus.Listener
工作源代码完美无缺。