android GPS JAVA应用程序编程-------获得经纬度,卫星信息等

yxx0 2011-09-21

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+="\nprn:"+oSat.getPrn();
            	msg+="\nsnr:"+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+="\nlongtitude:"+longtitude;
	   msg+="\naltitude:"+altitude;
	   msg+="\naccuracy:"+accuracy;
	   msg+="\nbearing:"+bearing;
	   msg+="\nspeed:"+speed;
	   msg+="\ntime:"+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();
	}

}
 

相关推荐