Presentation is loading. Please wait.

Presentation is loading. Please wait.

實驗十三:顯示目前經緯度位置.

Similar presentations


Presentation on theme: "實驗十三:顯示目前經緯度位置."— Presentation transcript:

1 實驗十三:顯示目前經緯度位置

2 實驗十三 主題 目的 環境需求 本實驗為練習使用模擬器模擬GPS位置 將取得的經緯度座標顯示出來
學習如何使用Android模擬器模擬GPS的座標 了解LocationManager如何取得GPS的經緯度座標 環境需求 Java SE Development Kit (JDK) Android SDK Eclipse ADT 本實驗為練習使用模擬器模擬GPS位置,將取得的經緯度座標顯示出來。

3 實驗十三範例 當位置變更的時候顯示出目前的經緯度 模擬器模擬經緯度 實際執行結果
使用模擬器模擬GPS的座標,應用程式將取得的經緯度座標顯示在畫面中。 模擬器模擬經緯度 實際執行結果

4 加入使用取得定位的權限 AndroidManifest.xml 3 4 新增Uses Permission 點選Permissions 1
加入定位的權限 1:將專案的AndroidManifest.xml檔案點2下開啟 2:點選Permissions頁籤 3:點選Add 4:在跳出視窗中選擇Uses Permission,點選確定 點選Permissions 1 2

5 加入使用取得定位的權限 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 5 5:在Name中選擇android.permission.ACCESS_FINE_LOCATION 也可以直接在AndroidManifest.xml加上可以使用定位的權限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

6 res/layout/activity_main.xml 6
6:打開專案中的res/layout中的activity_main.xml佈局檔將兩個TextView放入垂直線性佈局中用來顯示經緯度

7 src/MainActivity.java public class MainActivity extends Activity{
LocationManager myLocationManager; String best; TextView longitude, latitude; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); longitude= (TextView)findViewById(R.id.textView1); latitude = (TextView)findViewById(R.id.textView2); myLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria c = new Criteria(); c.setAccuracy(Criteria.ACCURACY_COARSE); best=myLocationManager.getBestProvider(c, true); if(best!=null){ Location loc = myLocationManager.getLastKnownLocation(best); showLocation(loc); } 7 取得LocationManager物件 8 設定精準度 9 打開src中的MainActivity.java活動視窗程式 7:命名全域變數,並在setContentView(R.layout.main);下方,利用findViewById()方法,將兩個TextView元件找出,分別存到longitude, latitude兩個變數中,用來顯示經緯度 8:使用getSystemService(LOCATION_SERVICE)方法取得LocationManager物件 9: 產生Criteria類別物件,並使用setAccuracy()方法設定定位提供者精準度的條件 10:使用LocationManager類別的etBestProvider()方法,依據Criteria設定取得最佳位置的提供者 11.使用LocationManager類別的getLastKnownLocation()方法取得最後取得的定位位置 12. 呼叫自訂showLocation()方法,顯示經緯度在TextView上 10 11 12

8 src/MainActivity.java private void showLocation (Location location) {
13 private void showLocation (Location location) { if (location != null) { longitude.setText("經度:"+String.valueOf(location.getLongitude())); latitude.setText("緯度:"+String.valueOf(location.getLatitude())); } 13:自定ShowLocation()方法,使用Location類別中的getLongitude()方法取得經度,getLatitude()方法取得緯度,並將取得的經緯度顯示在文字框中

9 註冊監聽位置改變事件 14 15 14:覆寫Activity中的onResume()方法,在此方法中使用LocationManager的requestLocationUpdates()方法監聽位置更新事件 15:將滑鼠移至錯誤處,在提示視窗中選取”讓MainActivity實作LocationListener”

10 註冊監聽位置改變事件 16 16:將滑鼠移到MainActivity,會跳出修正提示視窗,點選新增未實作方法,此時會在程式中自動加入以下方法
public void onLocationChanged(Location location) {} //當位置發生改變時需要呼叫的方法 public void onProviderDisabled(String provider) {} //當停用位置提供器需要呼叫的方法 public void onProviderEnabled(String provider) {} //當啟用位置提供器需要呼叫的方法 public void onStatusChanged(String provider, int status, Bundle extras) {} //當硬體狀態發生改變需要呼叫的方法

11 src/MainActivity.java @Override protected void onPause() {
super.onPause(); myLocationManager.removeUpdates(this); } public void onLocationChanged(Location arg0) { showLocation(arg0); //…. 17 解除註冊監聽位置改變事件 18 位置發生改變,顯示經緯度 17:覆寫Activity中的onPause()方法,在此方法中使用LocationManager的removeUpdates()方法關閉監聽位置更新事件 18:在onLocationChanged()方法中呼叫ShowLocation()方法,傳入目前位置(location),用來更新介面上顯示經緯度文字框中的經緯度。

12 Emulator Control 模擬經緯度
Emulator Control可以用來模擬GPS訊號傳遞到模擬器上,若Eclipse未看到此視窗,請點選視窗顯示視圖其他AndroidEmulator Control,就會將此視窗鑲嵌在Eclipse中。 若在電腦中開多個模擬器,請先在Device視窗中選擇要傳送GPS訊號到的那台模擬器。 模擬經緯度

13 Emulator Control Emulator Control視窗可以直接將位置座標傳送到模擬器中
Manual 可以直接指定特定的經緯度 KML(Keyhole Markup Language) Google Map 和Google Earth使用的座標格式 GPX(GPS Exchange Format) GPS的紀錄格式 可取得特定的經緯度座標和不同的座標格式 模擬的經緯度可以有三種格式 1. Manual:直接指定特定的經緯度 2. KML(Keyhole Markup Language):Google Map 和Google Earth使用的座標格式 3. GPX(GPS Exchange Format):一般GPS的紀錄格式 此網站可以用來取得特定的經緯度座標和不同的座標格式


Download ppt "實驗十三:顯示目前經緯度位置."

Similar presentations


Ads by Google