Android開發-----定位功能的實現----騰訊地圖定位
阿新 • • 發佈:2019-01-31
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-permission
android:name
=
"android.permission.ACCESS_FINE_LOCATION"
/>
<!--
通過網路得到粗略位置 -->
<
uses-permission
android:name
=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<!--
訪問網路,某些位置資訊需要從網路伺服器獲取 -->
<
uses-permission
android:name
=
"android.permission.INTERNET"
/>
<!--
訪問WiFi狀態,需要WiFi資訊用於網路定位 -->
<
uses-permission
android:name
=
"android.permission.ACCESS_WIFI_STATE"
/>
<!--
修改WiFi狀態,發起WiFi掃描, 需要WiFi資訊用於網路定位 -->
<
uses-permission
android:name
=
"android.permission.CHANGE_WIFI_STATE"
/>
<!--
訪問網路狀態, 檢測網路的可用性,需要網路運營商相關資訊用於網路定位 -->
<
uses-permission
android:name
=
"android.permission.ACCESS_NETWORK_STATE"
/>
<!--
訪問網路的變化, 需要某些資訊用於網路定位 -->
<
uses-permission
android:name
=
"android.permission.CHANGE_NETWORK_STATE"
/>
<!--
訪問手機當前狀態, 需要某些資訊用於網路定位 -->
<
uses-permission
android: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);
}(若有不懂,給小編留言,或者參考騰訊地圖定位開發者平臺)
主要步驟:開啟定位監聽器---讀取定位值---關閉定位監聽器以上就是定位功能的具體實現和詳細的解析。路過的頂一下哦!!嘿嘿