2015年2月1日 星期日

[Android] GPS定位範例 (轉載)

LocationActivity.java

/*

* 利用Criteria選擇最優的位置服務,演示定位使用者的位置並且監聽位置變化的代碼

* */

package uni.location;
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.os.Vibrator;
import android.util.Log;
import android.widget.TextView;

public class LocationActivity extends Activity {

/** Called when the activity is first created. */

//創建lcoationManager物件

private LocationManager manager;

private static final String TAG = "LOCATION DEMO";

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//獲取系統的服務,

manager = (LocationManager)getSystemService(CoNtext.LOCATION_SERVICE);

//創建一個criteria物件

Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_COARSE);

//設置不需要獲取海拔方向資料

criteria.setAltitudeRequired(false);

criteria.setBearingRequired(false);

//設置允許產生資費

criteria.setCostAllowed(true);

//要求低耗電

criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = manager.getBestProvider(criteria, false);

Log.i(TAG, "we choose "+ provider);

Location location = manager.getLastKnownLocation(provider);

//第一次獲得設備的位置

updateLocation(location);

//重要函數,監聽資料測試

manager.requestLocationUpdates(provider, 6000, 10,

locationListener);

}



//創建一個事件監聽器

private final LocationListener locationListener = new LocationListener() {

public void onLocationChanged(Location location) {

updateLocation(location);

}

public void onProviderDisabled(String provider){

updateLocation(null);

Log.i(TAG, "Provider now is disabled..");

}

public void onProviderEnabled(String provider){

Log.i(TAG, "Provider now is enabled..");

}

public void onStatusChanged(String provider, int status,Bundle extras){ }

};



//獲取使用者位置的函數,利用Log顯示

private void updateLocation(Location location) {

String latLng;

if (location != null) {

double lat = location.getLatitude();

double lng = location.getLongitude();



latLng = "Latitude:" + lat + " Longitude:" + lng;

} else {

latLng = "Can't access your location";

}

Log.i(TAG, "The location has changed..");

Log.i(TAG, "Your Location:" +latLng);

}



}



同時修改manifest.xml檔



<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="HTTP://schemas.android.com/apk/res/android"

package="uni.location"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="8" />



<application android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:name=".LocationActivity"

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-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

</manifest>

沒有留言:

張貼留言