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();
}
}
作者“極客網路”