定位功能
——无第三方sdk嵌入(Android Studio为例)
文档说明:没有内嵌第三方sdk的,通过重写定位相关方法实现定位功能
功能实现步骤:
一、清单文件: AndroidManifest.xml文件中
Key在activity上面,application里面;
Service在activity下面,在application里面。
清单文件配置:
<!--高德定位key -->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="您的key" />
<!--高德定位 -->
<service android:name="com.amap.api.location.APSService"></service>
清单文件中请求权限:
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<!--用于申请获取蓝牙信息进行室内定位-->
<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>
<!--高德定位key -->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="您的key"/>
<!--高德定位-->
<service android:name="com.amap.api.location.APSService"></service>
高德开发平台:申请key:
http://lbs.amap.com/dev/key/app
获取sha1方法:
1.>android studio2.2以下:
如何获取SHA1:
双击signingReport
2.>android studio2.2及以上:
如果4未成功,进行这个操作
二、在app的Dependencies中:
操作如下:File-Project Structure -app-Dependencies-“+”Library dependency-“com.amap.api:location:latest.integration”(如果搜索没有,请多输入几次)
三、以上都是配置,现在要开始编码啦
1.新建LocationManager 类
package com.seed.seedproject.manager.location;
import android.content.Context;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.seed.seedproject.bean.MapLocation;
import java.util.ArrayList;
import java.util.List;
/***
* 定位
*/
public class LocationManager {
public static final intSTATUS_OK =1;
public static final int STATUS_ERROR= 0;
private static LocationManagermLocationManager;
private ContextmContext =null;
private boolean mIsLocationing= false;
private List<OnLocationResultListener>mListeners =new ArrayList<OnLocationResultListener>();