android 集成騰訊地圖定位

本文只教學定位功能针炉,需要搜索、2D或3D地圖的可以到騰訊地圖開發(fā)平臺看api文檔和媳,鏈接:[騰訊地圖](https://lbs.qq.com/)

一巴刻、到騰訊地圖開發(fā)平下載定位sdk涵紊,快速入口:[騰訊地圖定位](https://lbs.qq.com/mobile/androidLocationSDK/androidGeoDownload)

二傍妒、在項目的AndroidManiFest文件加入權限和配置AppKey

<!-- 通過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狀態(tài). 需要WiFi信息用于網絡定位 -->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- 修改WiFi狀態(tài). 發(fā)起WiFi掃描, 需要WiFi信息用于網絡定位 -->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<!-- 訪問網絡狀態(tài), 檢測網絡的可用性. 需要網絡運營商相關信息用于網絡定位 -->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 訪問網絡的變化, 需要某些信息用于網絡定位 -->

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

<!-- 訪問手機當前狀態(tài), 需要device id用于網絡定位 -->

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<!-- 支持A-GPS輔助定位 -->

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

<!-- 用于 log 日志 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application>

? ? <meta-data android:name="TencentMapSDK" android:value="您申請的Key" />

</application>


三、Android Studio配置工程** Android Studio的配置方式有兩種:

方法1:

a)在libs主動添加so文件和SDK(如果項目有聊天或其他的so文件沖突的話摸柄,可以把他們放在一起颤练,我也是這樣,目前來看沒什么bug)

![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200616111353317.PNG)

![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200616111037775.PNG)

b)在 build.gradle 文件的 dependencies 中配置


? implementation fileTree(include: ['*.jar'], dir: 'libs')

? //騰訊地圖定位

? implementation files('libs/TencentLocationSdk_v7.2.6.jar')


方法二:

Gradle配置引用

a)修改根目錄gradle配置


llprojects {

? ? repositories {

? ? ? ? jcenter()

? ? ? ? google()

? ? ? ? mavenCentral()

? ? }

}

b)修改工程目錄gradle配置

在 build.gradle 文件的 dependencies 中增加配置

implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.6'

四驱负、代碼混淆

在proguard-rules.pro文件加入代碼混淆(復制粘貼即可)


-keepclassmembers class ** {

? ? public void on*Event(...);

}

-keep class c.t.**{*;}

-keep class com.tencent.map.geolocation.**{*;}

-dontwarn? org.eclipse.jdt.annotation.**

-dontwarn? c.t.**


五嗦玖、接下就是代碼了


public class LocationActivity extends BaseActivity implements TencentLocationListener {

? ? private static final int MY_PERMISSION_REQUEST_CODE = 10000;

? ? private TencentLocationRequest request;

? ? @Override

? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_location);

? ? ? ? initdata();

? ? }

? ? public void initdata() {

? ? ? ? checkPermission();

? ? }

? ? public void setLocation() {

? ? ? ? request = TencentLocationRequest.create();

? ? ? ? request.setInterval(60000);//設置定位周期(位置監(jiān)聽器回調周期), 單位為 ms (毫秒)

? ? ? ? request.setRequestLevel(REQUEST_LEVEL_POI); // 0:包含經緯度,1:包含經緯度, 位置名稱, 位置地址,3:包含經緯度,位置所處的中國大陸行政區(qū)劃,4:包含經緯度跃脊,位置所處的中國大陸行政區(qū)劃及周邊POI列表

? ? ? ? request.setAllowGPS(true);

? ? ? ? request.setAllowDirection(true);

? ? ? ? request.setIndoorLocationMode(true);

? ? ? ? TencentLocationListener listener = this;

? ? ? ? TencentLocationManager locationManager = TencentLocationManager.getInstance(LocationActivity.this);

? ? ? ? int error = locationManager.requestLocationUpdates(request, listener);

? ? ? ? if (error == 0) {

? ? ? ? ? ? //注冊位置監(jiān)聽器成功

? ? ? ? } else {

? ? ? ? ? ? //注冊位置監(jiān)聽器失敗keytool -v -list -keystore

? ? ? ? ? ? locationNowlocation.setText("定位失敗");

? ? ? ? }

? ? }

? ? @Override

? ? public void onLocationChanged(TencentLocation tencentLocation, int error, String s) {

? ? ? ? if (TencentLocation.ERROR_OK == error) { // 定位成功

? ? ? ? ? ? //定位成功

? ? ? ? ? ? if (tencentLocation != null) {

? ? ? ? ? ? ? ? String address = tencentLocation.getCity();

? ? ? ? ? ? ? ? locationNowlocation.setText(address);

? ? ? ? ? ? }

? ? ? ? } else { // 定位失敗

? ? ? ? ? ? Tools.ToastTextThread(LocationActivity.this, "定位失敗");

? ? ? ? }

? ? }

? ? @Override

? ? public void onStatusUpdate(String name, int status, String desc) {

? ? ? ? /*if (name.equals("GPS")) {

? ? ? ? ? ? if (status == 0) {

? ? ? ? ? ? ? ? Tools.ToastTextThread(LocationActivity.this, "GPS關閉");

? ? ? ? ? ? }

? ? ? ? }*/

? ? }

? ? public void checkPermission() {

? ? ? ? //檢查是否有相應的權限宇挫,根據自己需求,進行添加相應的權限

? ? ? ? boolean isAllGranted = checkPermissionAllGranted(

? ? ? ? ? ? ? ? new String[]{

? ? ? ? ? ? ? ? ? ? ? ? Manifest.permission.ACCESS_COARSE_LOCATION

? ? ? ? ? ? ? ? }

? ? ? ? );

? ? ? ? // 如果這3個權限全都擁有, 則直接執(zhí)行備份代碼

? ? ? ? if (isAllGranted) {

? ? ? ? ? ? setLocation();

? ? ? ? } else {

? ? ? ? ? ? // 一次請求多個權限, 如果其他有權限是已經授予的將會自動忽略掉

? ? ? ? ? ? ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSION_REQUEST_CODE);

? ? ? ? }

? ? }

? ? /**

? ? * 檢查是否擁有指定的所有權限

? ? */

? ? private boolean checkPermissionAllGranted(String[] permissions) {

? ? ? ? for (String permission : permissions) {

? ? ? ? ? ? if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {

? ? ? ? ? ? ? ? // 只要有一個權限沒有被授予, 則直接返回 false

? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return true;

? ? }

? ? @Override

? ? public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

? ? ? ? super.onRequestPermissionsResult(requestCode, permissions, grantResults);

? ? ? ? if (requestCode == MY_PERMISSION_REQUEST_CODE) {

? ? ? ? ? ? boolean isAllGranted = true;

? ? ? ? ? ? // 判斷是否所有的權限都已經授予了

? ? ? ? ? ? for (int grant : grantResults) {

? ? ? ? ? ? ? ? if (grant != PackageManager.PERMISSION_GRANTED) {

? ? ? ? ? ? ? ? ? ? isAllGranted = false;

? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? if (isAllGranted) {

? ? ? ? ? ? ? ? // 所有的權限都授予

? ? ? ? ? ? ? ? setLocation();

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? // 彈出對話框告訴用戶需要權限的原因, 并引導用戶去應用權限管理中手動打開權限按鈕

? ? ? ? ? ? ? ? setLocationDialog("");

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? @Override

? ? protected void onDestroy() {

? ? ? ? super.onDestroy();

? ? ? ? //關閉定位監(jiān)聽器

? ? ? ? TencentLocationManager locationManager = TencentLocationManager.getInstance(this);

? ? ? ? locationManager.removeUpdates(this);

? ? }

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末匾乓,一起剝皮案震驚了整個濱河市捞稿,隨后出現(xiàn)的幾起案子又谋,更是在濱河造成了極大的恐慌拼缝,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彰亥,死亡現(xiàn)場離奇詭異咧七,居然都是意外死亡,警方通過查閱死者的電腦和手機任斋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門继阻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人废酷,你說我怎么就攤上這事瘟檩。” “怎么了澈蟆?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵墨辛,是天一觀的道長。 經常有香客問我趴俘,道長睹簇,這世上最難降的妖魔是什么奏赘? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮太惠,結果婚禮上磨淌,老公的妹妹穿的比我還像新娘。我一直安慰自己凿渊,他們只是感情好梁只,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗽元,像睡著了一般敛纲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剂癌,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天淤翔,我揣著相機與錄音,去河邊找鬼佩谷。 笑死旁壮,一個胖子當著我的面吹牛,可吹牛的內容都是我干的谐檀。 我是一名探鬼主播抡谐,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桐猬!你這毒婦竟也來了麦撵?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤溃肪,失蹤者是張志新(化名)和其女友劉穎免胃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惫撰,經...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡羔沙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厨钻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扼雏。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖夯膀,靈堂內的尸體忽然破棺而出诗充,到底是詐尸還是另有隱情,我是刑警寧澤诱建,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布蝴蜓,位于F島的核電站,受9級特大地震影響涂佃,放射性物質發(fā)生泄漏励翼。R本人自食惡果不足惜蜈敢,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汽抚。 院中可真熱鬧抓狭,春花似錦、人聲如沸造烁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惭蟋。三九已至苗桂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間告组,已是汗流浹背煤伟。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留木缝,地道東北人便锨。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像我碟,于是被迫代替她去往敵國和親放案。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容