Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> [android] 手機衛士手機定位的原理,android衛士

[android] 手機衛士手機定位的原理,android衛士

編輯:關於android開發

[android] 手機衛士手機定位的原理,android衛士


手機定位的三種方式:網絡定位,基站定位,GPS定位

 

 

網絡定位,手機連上wifi 2g 3g的時候,手機會有一個ip,誤差很大

基站定位,精確度與基站的多少有關,幾十米到幾公裡的誤差

GPS定位,至少需要三顆衛星才能定位,在空曠的地方准確

 

手機使用A-GPS需要網絡來輔助定位,定位速度快,網絡記錄了上次的衛星軌道,

 

 

獲取LocationManager對象,通過getSystemService(LOCATION_SERVICE)

調用LocationManager對象的requestLocationUpdates()方法,請求位置更新,參數:

定位方式(“gps”),更新時間(60000),更新距離(50),LocationListener對象

 

LocationListener是一個接口,需要做它的實現類

定義MyLocationListener實現LocationListener,實現它下面的方法

onLocationChanged(),當位置改變的時候回調,傳遞進來一個Location對象

調用location對象的getLongitude()方法,得到經度

調用Location對象的getLatitude()方法,得到維度

調用Location對象的getAccuracy()方法,得到精確度

 

onStatusChanged(),當狀態改變的時候回調,關閉 開啟

onProviderEnabled(),當某一個位置提供者可用了

onProviderDisabled(),當某一個位置提供者不可用了

 

當activity銷毀的時候,取消監聽位置

重寫activity的onDestroy()方法

調用LocationManager對象的removeUpdates(),取消監聽,參數:LocationListener對象

把LocationListener對象置為null,垃圾回收

 

需要的權限

android.permission.ACCESS_FINE_LOCATION 獲取精准位置

android.permission.ACCESS_COARSE_LOCATION 獲取粗略的位置

android.permission.ACCESS_MOCK_LOCATION 獲取模擬的位置(模擬器開發的時候)

 

模擬器上,ddms裡面發送以下位置,才能顯示

 

國家對坐標進行了加偏處理,變成火星坐標,需要國家測繪局的插件,網上有火星坐標轉換代碼

package com.tsh.mylocation;

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {
    private LocationManager lm;
    private LocationListener listener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //獲取位置管理器
        lm=(LocationManager) getSystemService(LOCATION_SERVICE);
        listener=new MyLocationListener();
        lm.requestLocationUpdates("gps", 0, 0, listener);
    }
    private class MyLocationListener implements LocationListener{

        @Override
        public void onLocationChanged(Location location) {
            //獲取經度
            String longitude="經度:"+location.getLongitude();
            String latitude="緯度:"+location.getLatitude();
            String acc="精確度:"+location.getAccuracy();
            Toast.makeText(MainActivity.this, longitude+latitude+acc, 1).show();
        }

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

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onProviderDisabled(String provider) {
            
        }
        
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved