1. 程式人生 > >Android開發-----定位功能的實現----騰訊地圖定位

Android開發-----定位功能的實現----騰訊地圖定位

Android---手機定位功能

      由於自己在做專案的時候應用到了手機定位功能,自己也是琢磨了好長時間,一開始用的百度地圖,研究了幾天總是出現一些不同的Bug,而且很難修復,然後又想用手機自帶的那個GPS自動定位,但是我發現手機不同,它定的位置也不是很準確,最後,我選擇了騰訊定位,我借鑑與網上騰訊地圖開發的教程,Bug一點一點的解決,最後定位終於實現了。

我給大家解析一下定位功能主要部分程式碼的實現。

一、搭配環境

1.在騰訊地圖開發者平臺上註冊一個賬號,下載一個sdkjar包,或者TencentLocationSDK_v6.2.5.1直接點選連結下載即可。

2.解壓包,在選單欄Java中新建一個資料夾,然後拷貝相應目錄下的so檔案。如圖:

3.將開發包中的 TencentLocationSDK_v4.3.0_r196568.jar 檔案,拷貝到目標工程中的 libs 目錄下。如圖:


二、申請且配置key

在開發者平臺上申請一個金鑰配置在自己的清單檔案中

三、定位所需要的許可權設定

Android開發使用介面,呼叫系統功能,一定會應用到一定的訪問許可權。牢記、牢記!!!!!!!(我就是一開始忘了,找了半天bug)許可權如下:

<!-- 通過GPS得到精確位置 --> <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"
/>
<!-- 通過網路得到粗略位置 --> <uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/> <!-- 訪問網路,某些位置資訊需要從網路伺服器獲取 --> <uses-permissionandroid:name="android.permission.INTERNET"/> <!-- 訪問WiFi狀態,需要WiFi資訊用於網路定位 --> <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"
/>
<!-- 修改WiFi狀態,發起WiFi掃描, 需要WiFi資訊用於網路定位 --> <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"/> <!-- 訪問網路狀態, 檢測網路的可用性,需要網路運營商相關資訊用於網路定位 --> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- 訪問網路的變化, 需要某些資訊用於網路定位 --> <uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/> <!-- 訪問手機當前狀態, 需要某些資訊用於網路定位 --> <uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>(借鑑與騰訊地圖開發者平臺) 四、主要程式碼的實現
        TencentLocationRequest request = TencentLocationRequest.create();
        request.setInterval(20000)
                .setRequestLevel(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION)
                .setAllowCache(true);
        //開啟定位監聽器
init(request);}

    public void init(TencentLocationRequest request) {
        Context context = this;
        TencentLocationListener listener = this;
        TencentLocationManager locationManager = TencentLocationManager.getInstance(context);
        int error = locationManager.requestLocationUpdates(request, listener);
        if (error == 0) {
            Log.v("this", "註冊位置監聽器成功!");
        } else {
            Log.v("this", "註冊位置監聽器失敗!");
        }
    }@Override
public void onLocationChanged(TencentLocation location, int error, String reason) {
        // TODO Auto-generated method stub
if (TencentLocation.ERROR_OK == error) {
            // 定位成功
Log.v("this", "定位成功!");
            if (location != null) {
                String lat = String.valueOf(location.getLatitude());
                String lon = String.valueOf(location.getLongitude());
                String address = location.getAddress();
                ut3.setText(lat);
                ut5.setText(lon);
                ut7.setText(address);
//關閉當前activity
                // textView.setText("當前經緯度:"+lat+","+lon+nation+province+city+district+town+village+street+streetNo);
}
        } else {
            // 定位失敗
Log.v("this", "定位失敗!");
        }
    }
    @Override
public void onStatusUpdate(String arg0, int arg1, String arg2) {
        // TODO Auto-generated method stub
}
    @Override
protected void onDestroy() {
        // TODO Auto-generated method stub
super.onDestroy();
        //關閉定位監聽器
TencentLocationManager locationManager =
                TencentLocationManager.getInstance(this);
        locationManager.removeUpdates(this);
    }(若有不懂,給小編留言,或者參考騰訊地圖定位開發者平臺)
主要步驟:開啟定位監聽器---讀取定位值---關閉定位監聽器

以上就是定位功能的具體實現和詳細的解析。路過的頂一下哦!!嘿嘿