正文  设备功能 > GPS/LBS/定位 >

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

Java代码 package android.test; import java.util.Iterator; import android.app.Activit...

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+="\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(); 
    } 
 

作者“极客网络”