Android GPS定位
import android.app.Activity; import android.content.Context; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast;public class GPSActivity extends Activity { //聲明位置管理對象 private LocationManager locationManager; //聲明位置監聽對象 private LocationListener locationListener; //聲明字符串變量 String locationprovider; //聲明顯示文本視圖組建 private TextView textview; /* Called when the activity is first created. / @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //獲得文本視圖 textview = (TextView)this.findViewById(R.id.textView1); try{ //新建Criteria類 Criteria locationcriteria = new Criteria(); //設置精確精度 locationcriteria.setAccuracy(Criteria.ACCURACY_FINE); //不提供海拔高度信息 locationcriteria.setAltitudeRequired(false); //不提供方向信息 locationcriteria.setBearingRequired(false); //允許運營商計費 locationcriteria.setCostAllowed(true); //設置電池消耗為低耗費 locationcriteria.setPowerRequirement(Criteria.POWER_LOW); //使用getSystemService()方法獲得位置管理器對象 locationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); //locationManager.setTestProviderEnabled("gps", true); Toast.makeText(GPSActivity.this, "getSystemService", Toast.LENGTH_SHORT).show(); //檢查gps功能開啟 if(checkgps()){ locationprovider =locationManager.getBestProvider(locationcriteria, true); Log.d("provider", locationprovider); //注冊位置監聽器 locationListener = new MyLocationListener(); locationManager.requestLocationUpdates(locationprovider, 1000, 0,locationListener); } }catch(Exception e){ Toast.makeText(GPSActivity.this, "異常錯誤"+e.toString(),Toast.LENGTH_LONG).show(); }
} private class MyLocationListener implements LocationListener{ /** * 若位置發生變化,onLocationChanged方法被調用 */ @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub Log.i("位置發生變化", "Invoke"); if(location != null){ //獲得經度 String latitude = Double.toString(location.getLatitude());//經度 //獲得緯度 String longitude = Double.toString(location.getLongitude());//緯度 //在文本框中顯示 textview = (TextView)GPSActivity.this.findViewById(R.id.textView1); textview.setText("經度:"+longitude+"緯度"+latitude); } //locationManager.removeUpdates(this); //locationManager.setTestProviderEnabled("gps", true); } //若屏蔽提供商,該方法被調用 @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub Log.i("屏蔽提供商", "Invode"); } //若激活提供商,該方法被調用 @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub Log.i("激活提供商", "Invode"); } //若狀態發生變化,該方法被調用 @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub Log.i("狀態發生變化", "Invode"); } } private boolean checkgps(){ boolean providerEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); //若被激活,則返回真值 if(providerEnabled ==true){ Toast.makeText(this, "Gps模塊活動正常", Toast.LENGTH_SHORT).show(); return true; } else{ Toast.makeText(this, "請開啟GPS", Toast.LENGTH_SHORT); return false; } }
}</pre>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.antking.gps" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission> <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".GPSActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>