接收GPS訊號
這個範例是讀取android程式執行時所在的GPS座標,並將之顯示於畫面上。
圖2-1
以下為接收GPS訊號的程式碼:
專案下載:GPSsample.rar
程式:GPSsample.java
package GPSsample.a; import android.app.Activity; import android.os.Bundle; import android.widget.EditText; import android.widget.TextView; // 引用GPS import android.location.*; public class GPSsample extends Activity { /** Called when the activity is first created. */ // GPS初始化 private LocationManager localManager; private LocationListener locationListener; // 文字方塊初始化 private EditText lngText; private EditText latText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 初始化GPS服務 localManager = (LocationManager) getSystemService(GPSsample.this.LOCATION_SERVICE); // 初始化事件 locationListener = new MyLocationListener(); // 事件更新 localManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); // 初始化顯示文字 final TextView lngView = (TextView) findViewById(R.id.lngTextView); final TextView latView = (TextView) findViewById(R.id.latTextView); lngView.setText("經度:"); latView.setText("緯度:"); // 初始化文字方塊 lngText = (EditText) findViewById(R.id.lngEditText); latText = (EditText) findViewById(R.id.latEditText); lngText.setText("118.32198666666666"); latText.setText("24.449396666666669"); } private class MyLocationListener implements LocationListener { // GPS位置事件更新 public void onLocationChanged(Location loc) { if (loc != null){ lngText.setText(Double.toString(loc.getLongitude())); latText.setText(Double.toString(loc.getLatitude())); } } public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } } }
Activity介面程式碼
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/lngTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_x="4px" android:layout_y="19px" > </TextView> <TextView android:id="@+id/latTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" android:layout_x="5px" android:layout_y="81px" > </TextView> <EditText android:id="@+id/lngEditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="EditText" android:textSize="18sp" android:layout_x="69px" android:layout_y="67px" > </EditText> <EditText android:id="@+id/latEditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="EditText" android:textSize="18sp" android:layout_x="68px" android:layout_y="11px" > </EditText> </AbsoluteLayout>
AndroidManifest.xml為使用權限:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="GPSsample.a" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".GPSsample" 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> <uses-sdk android:minSdkVersion="4" /> <!-- GPS權限設定 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> </manifest>
程式影片解說
page revision: 12, last edited: 19 Dec 2010 14:20
你好 我測試你的程式 在手機上測試 有開gps 但是他抓得還是原本你初始化的值
而不是本機位置的經緯度 請問是甚麼問題呢?
是因為沒觸發到更新麻?
Post preview:
Close preview