標籤:
使用者定位(一)
User Location 和Google Maps是導航軟體的基礎,並不能用來做,
GPS 美國摩托羅拉公司,民用的定位在在20米左右。
電信:訊號接受塔,
1、User Location能用來做什嗎?
- 擷取使用者的位置
- 追蹤使用者的移動
2、User Locaiton的兩個關鍵的API
Location Manager:用於管理Android的使用者定位服務
Location Providers:提供三種定位方式,有兩種是最常見的,
GPS 定位 :android.permission.ACCESS_FINE_LOCATION
NETWORK定位:訊號接受塔和wifi的接收點進行定位,android.permission.ACCESS_FINE_LOCATION(相對精確) 或者是android.permission.ACCESS_COARSE_LOCATION(不精確)
Passive定位:被動的定位,用的不多
3、擷取使用者的當前位置(最常用)
三、實現的一般步驟:
1、在AndroidManifest.xml裡定義許可權
2、擷取LocationManager對象
3、選擇LocationProvider
4、綁定LocationListener對象(位置移動時會觸發某個時間)
四、代碼參考:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="max.userLocation" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".UserLocation" 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>
userLocation.java
package max.userLocation;import android.app.Activity;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class UserLocation extends Activity { /** Called when the activity is first created. */ Button userLocationBtn = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); userLocationBtn = (Button) findViewById(R.id.buttonId); userLocationBtn.setOnClickListener(new userLocationBtnListener()); } class userLocationBtnListener implements OnClickListener { @Override public void onClick(View arg0) { // TODO Auto-generated method stub LocationManager locationManager = (LocationManager) MainActivity.this.getSystemService(Context.LOCATION_SERVICE);
定義當前使用的定位方式,一個是時間(多長時間來更新位置,只是一個參考值),一個是距離(最小距離)。綁定監聽器。 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new userLocationListener()); } } class userLocationListener implements LocationListener { //當裝置的位置發生改變就會調用這個方法 度 分 秒 double類型的 @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub System.out.println("經度:" +location.getLongitude()); System.out.println("緯度:" +location.getLatitude()); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } // @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } //當狀態改變的時候 @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }}
4、使用DDMS類比定位
模擬器是沒有GPS效果的,但是有方法。
Android--使用者定位