Import Java. util. arraylist; import Java. util. iterator; import Java. util. list; import android. app. activity; import android. content. context; import android. content. intent; import android. location. gpssatellite; import android. location. gpsstatus; import android. location. location; import android. location. locationlistener; import android. location. locationmanager; import android. OS. bundle; import android. provider. set Permission; import android. view. keyevent; import android. view. view; import android. widget. button; import android. widget. textview; import android. widget. toast;/*** @ author liuzhidong * @ create date 2012-08 * @ modifydate 2012.09.24 */public class gpsactivity extends activity {private textview TV _gps, TV _satellites; private button bt_quit; locationmanager; private stringbuilder Sb; @ overrideprotec Ted void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); setcontentview (R. layout. activity_gps); TV _satellites = (textview) This. findviewbyid (R. id. TV _satellites); TV _gps = (textview) This. findviewbyid (R. id. TV _gps); bt_quit = (button) This. findviewbyid (R. id. bt_quit_gps); opengpssettings (); locationmanager = (locationmanager) This. getsystemservice (context. location_se Rvice); string provider = locationmanager. gps_provider; location = locationmanager. getlastknownlocation (provider); updatemsg (location); locationlistener LL = new locationlistener () {@ overridepublic void onlocationchanged (location) {string locinfo = updatemsg (location); TV _gps.settext (null ); TV _gps.settext (locinfo);} @ overridepublic void onstatuschanged (string provider, int status, Bundle Extras) {}@ overridepublic void onproviderenabled (string provider) {}@ overridepublic void onproviderdisabled (string provider) {}}; locationmanager. requestlocationupdates (provider, 1000, 1, LL); bt_quit.setonclicklistener (new view. onclicklistener () {@ overridepublic void onclick (view v) {gpsactivity. this. finish () ;}}); locationmanager. addgpsstatuslistener (statuslistener);} private string updatemsg (Locati On LOC) {sb = NULL; sb = new stringbuilder ("Location Information: \ n"); If (loc! = NULL) {double lat = loc. getlatitude (); double lng = loc. getlongpolling (); sb. append ("latitude:" + lat + "\ N longitude:" + LNG); If (loc. hasaccuracy () {sb. append ("\ n precision:" + loc. getaccuracy ();} If (loc. hasaltitude () {sb. append ("\ n elevation:" + loc. getaltitude () + "M");} If (loc. hasbearing () {// sb. append ("\ n Direction:" + loc. getbearing ();} If (loc. hasspeed () {If (loc. getspeed () * 3.6 <5) {sb. append ("\ n speed: 0.0 km/h");} el Se {sb. append ("\ n speed:" + loc. getspeed () * 3.6 + "km/h") ;}} else {sb. append ("no location information! ");} Return sb. tostring ();} private void opengpssettings () {locationmanager ALM = (locationmanager) This. getsystemservice (context. location_service); If (ALM. isproviderenabled (Android. location. locationmanager. gps_provider) {toast. maketext (this, "GPS module normal", toast. length_short ). show (); return;} toast. maketext (this, "Turn on GPS! ", Toast. length_short ). show (); intent = new intent (settings. action_security_settings); startactivityforresult (intent, 0); // return to the get interface after the setting is complete} public Boolean onkeydown (INT keycode, keyevent event) {If (keycode = keyevent. keycode_back & event. getrepeatcount () = 0) {gpsactivity. this. finish ();} return Super. onkeydown (keycode, event);}/*** satellite status listener */private list <gpssatellite> numsatellitelist = new arraylist <gpssatellite> (); // Private Final gpsstatus of satellite signals. listener statuslistener = new gpsstatus. listener () {public void ongpsstatuschanged (INT event) {// callback when the GPS status changes, such as the number of satellites locationmanager = (locationmanager) gpsactivity. this. getsystemservice (context. location_service); gpsstatus status = locationmanager. getgpsstatus (null); // get the current status string satelliteinfo = updategpsstatus (event, status); Complete (null); TV _satellites.settext (satelliteinfo) ;}; private string updategpsstatus (INT event, gpsstatus status) {stringbuilder sb2 = new stringbuilder (""); If (status = NULL) {sb2.append ("Number of searched satellites:" + 0 );} else if (event = gpsstatus. gps_event_satellite_status) {int maxsatellites = status. getmaxsatellites (); iterator <gpssatellite> it = status. getsatellites (). iterator (); numsatellitelist. clear (); int COUNT = 0; while (it. hasnext () & count <= maxsatellites) {gpssatellite S = it. next (); numsatellitelist. add (s); count ++;} sb2.append ("Number of searched satellites:" + numsatellitelist. size () ;}return sb2.tostring ();}}