Android GPS應用:動態擷取位置資訊

來源:互聯網
上載者:User

在上文中,介紹了GPS概念及Android開發GPS應用涉及到的常用類和方法。在本文中,開發一個小應用,即時擷取定位資訊,包括使用者所在的緯度、經度、高度、方向、移動速度等。代碼如下: Activity: [java] package comhome.location;    import android.app.Activity;  import android.content.Context;  import android.location.Location;  import android.location.LocationListener;  import android.location.LocationManager;  import android.os.Bundle;  import android.widget.EditText;    public class LocationTestActivity extends Activity {      // 定義LocationManager對象       private LocationManager locationManager;      private EditText show;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          show = (EditText) findViewById(R.id.main_et_show);          // 擷取系統LocationManager服務           locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);          // 從GPS擷取最近的定位資訊           Location location = locationManager                  .getLastKnownLocation(LocationManager.GPS_PROVIDER);          // 將location裡的位置資訊顯示在EditText中           updateView(location);          // 設定每2秒擷取一次GPS的定位資訊           locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,                  2000, 8, new LocationListener() {                        @Override                      public void onLocationChanged(Location location) {                          // 當GPS定位資訊發生改變時,更新位置                           updateView(location);                      }                        @Override                      public void onProviderDisabled(String provider) {                          updateView(null);                      }                        @Override                      public void onProviderEnabled(String provider) {                          // 當GPS LocationProvider可用時,更新位置                           updateView(locationManager                                  .getLastKnownLocation(provider));                        }                        @Override                      public void onStatusChanged(String provider, int status,                              Bundle extras) {                      }                  });      }        private void updateView(Location location) {          if (location != null) {              StringBuffer sb = new StringBuffer();              sb.append("即時的位置資訊:\n經度:");              sb.append(location.getLongitude());              sb.append("\n緯度:");              sb.append(location.getLatitude());              sb.append("\n高度:");              sb.append(location.getAltitude());              sb.append("\n速度:");              sb.append(location.getSpeed());              sb.append("\n方向:");              sb.append(location.getBearing());              sb.append("\n精度:");              sb.append(location.getAccuracy());              show.setText(sb.toString());          } else {              // 如果傳入的Location對象為空白則清空EditText               show.setText("");          }      }    }   package comhome.location; import android.app.Activity;import android.content.Context;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.widget.EditText; public class LocationTestActivity extends Activity {// 定義LocationManager對象private LocationManager locationManager;private EditText show; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);show = (EditText) findViewById(R.id.main_et_show);// 擷取系統LocationManager服務locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// 從GPS擷取最近的定位資訊Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);// 將location裡的位置資訊顯示在EditText中updateView(location);// 設定每2秒擷取一次GPS的定位資訊locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,2000, 8, new LocationListener() { @Overridepublic void onLocationChanged(Location location) {// 當GPS定位資訊發生改變時,更新位置updateView(location);} @Overridepublic void onProviderDisabled(String provider) {updateView(null);} @Overridepublic void onProviderEnabled(String provider) {// 當GPS LocationProvider可用時,更新位置updateView(locationManager.getLastKnownLocation(provider)); } @Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {}});} private void updateView(Location location) {if (location != null) {StringBuffer sb = new StringBuffer();sb.append("即時的位置資訊:\n經度:");sb.append(location.getLongitude());sb.append("\n緯度:");sb.append(location.getLatitude());sb.append("\n高度:");sb.append(location.getAltitude());sb.append("\n速度:");sb.append(location.getSpeed());sb.append("\n方向:");sb.append(location.getBearing());sb.append("\n精度:");sb.append(location.getAccuracy());show.setText(sb.toString());} else {// 如果傳入的Location對象為空白則清空EditTextshow.setText("");}} }布局XML: [html] <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent" >        <EditText          android:id="@+id/main_et_show"          android:layout_width="match_parent"          android:layout_height="match_parent"          android:cursorVisible="false"          android:editable="false" />    </LinearLayout>   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >     <EditText        android:id="@+id/main_et_show"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:cursorVisible="false"        android:editable="false" /> </LinearLayout>許可權: [html] <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>附片效果:

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.