Android GPS JAVA应用程序编程:获得经纬度,卫星信息等
- package android.test;
-
- import java.util.Iterator;
-
- import android.app.Activity;
- import android.location.Criteria;
- 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.location.GpsStatus.Listener;
- import android.location.GpsStatus;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- import android.widget.Toast;
-
- public class TestActivity extends Activity implements LocationListener
- {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- Log.i(tag, "on Create");
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btn=(Button)findViewById(R.id.btn);
- tv1=(TextView)findViewById(R.id.tv1);
- tv2=(TextView)findViewById(R.id.tv1);
- listener = new GpsStatus.Listener() {
- public void onGpsStatusChanged(int event) {
- gpsstatus=mgr.getGpsStatus(null);
- switch(event)
- {
- case GpsStatus.GPS_EVENT_FIRST_FIX:gpsstatus.getTimeToFirstFix();
- case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
- //得到所有收到的卫星的信息,包括 卫星的高度角、方位角、信噪比、和伪随机号(及卫星编号)
- Iterable<GpsSatellite> allSatellites;
- allSatellites = gpsstatus.getSatellites();
- Iterator it=allSatellites.iterator();
- String msg="";
- while(it.hasNext())
- {
- GpsSatellite oSat = (GpsSatellite) it.next() ;
- msg="azimuth:"+oSat.getAzimuth();
- msg+="
prn:"+oSat.getPrn();
- msg+="
snr:"+oSat.getSnr();
- }
- tv2.setText(msg);
- break;
-
- case GpsStatus.GPS_EVENT_STARTED:
- //Event sent when the GPS system has started.
- break;
-
- case GpsStatus.GPS_EVENT_STOPPED:
- //Event sent when the GPS system has stopped.
- break;
-
- default :
- break;
- }
-
- }
- };
- btn.setOnClickListener(new Button.OnClickListener()
- {
-
- @Override
- public void onClick(View arg0) {
- // TODO Auto-generated method stub
- Log.i(tag, "on button click");
- getdata();
- show();
- }
-
- });
-
- }
- void show()
- {
- String msg="";
- msg+="latitude:"+latitude;
- msg+="
longtitude:"+longtitude;
- msg+="
altitude:"+altitude;
- msg+="
accuracy:"+accuracy;
- msg+="
bearing:"+bearing;
- msg+="
speed:"+speed;
- msg+="
time:"+time;
- tv1.setText(msg);
- //Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
- }
- GpsStatus.Listener listener;
- private GpsStatus gpsstatus;
- private final String tag="TEST_MAY";
- private LocationManager mgr;
- private Button btn;
- private TextView tv1,tv2;
- private String best;
- private double latitude;
- private double longtitude;
- private double altitude;
- private float accuracy;
- private float bearing;
- private float speed;
- private long time;
- private void getdata()
- {
-
- try
- {mgr=(LocationManager)getSystemService(LOCATION_SERVICE);
- mgr.addGpsStatusListener(listener);
- Criteria criteria= new Criteria();
- best=mgr.getBestProvider(criteria, true);
- Location location= mgr.getLastKnownLocation("gps");
-
- if(location.hasAccuracy()) accuracy=location.getAccuracy();
- Log.d(tag, "getdata");
- if(location.hasAltitude()) altitude=location.getAltitude();
- if(location.hasBearing()) bearing=location.getBearing();
- if(location.hasSpeed()) speed=location.getSpeed();
- Log.d(tag, "getsomedata");
-
- latitude=location.getLatitude();
- longtitude=location.getLongitude();
- time=location.getTime();
-
- }
- catch( NullPointerException e)
- {
-
- }
-
- }
-
- @Override
- public void onLocationChanged(Location location) {
- // TODO Auto-generated method stub
- Toast.makeText(this, location.toString(), Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onProviderDisabled(String provider) {
- // TODO Auto-generated method stub
- Toast.makeText(this, provider+" disable", Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onProviderEnabled(String provider) {
- // TODO Auto-generated method stub
- Toast.makeText(this, provider+" enable", Toast.LENGTH_LONG).show();
- }
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- // TODO Auto-generated method stub
- Toast.makeText(this, status+" changed", Toast.LENGTH_SHORT).show();
- }
-
- }