version:3.0 beta
fix: update:更换地图sdk为百度地图
This commit is contained in:
@@ -72,8 +72,8 @@ android {
|
|||||||
//新平台正式
|
//新平台正式
|
||||||
newly {
|
newly {
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
versionCode 20
|
versionCode 21
|
||||||
versionName "2.9"
|
versionName "3.0"
|
||||||
buildConfigField "String", "platform", '"ZhanRui"'
|
buildConfigField "String", "platform", '"ZhanRui"'
|
||||||
manifestPlaceholders = [
|
manifestPlaceholders = [
|
||||||
AMAP_KEY: "6e339305206eeb43f2b4cc1f31751f89"
|
AMAP_KEY: "6e339305206eeb43f2b4cc1f31751f89"
|
||||||
@@ -295,7 +295,9 @@ dependencies {
|
|||||||
// implementation 'cn.jiguang.sdk:jpush:4.3.0' // 此处以JPush 3.5.6 版本为例。
|
// implementation 'cn.jiguang.sdk:jpush:4.3.0' // 此处以JPush 3.5.6 版本为例。
|
||||||
// implementation 'cn.jiguang.sdk:jcore:2.9.0' // 此处以JCore 2.2.8 版本为例。
|
// implementation 'cn.jiguang.sdk:jcore:2.9.0' // 此处以JCore 2.2.8 版本为例。
|
||||||
//高德地图定位
|
//高德地图定位
|
||||||
implementation 'com.amap.api:location:5.1.0'
|
// implementation 'com.amap.api:location:5.1.0'
|
||||||
|
//百度地图
|
||||||
|
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8'
|
||||||
//MMKV
|
//MMKV
|
||||||
implementation 'com.tencent:mmkv-static:1.2.13'
|
implementation 'com.tencent:mmkv-static:1.2.13'
|
||||||
//腾讯移动推送 TPNS
|
//腾讯移动推送 TPNS
|
||||||
|
|||||||
@@ -66,6 +66,41 @@
|
|||||||
<uses-permission android:name="com.aoleyun.sn.permissions.INSTALL_APK" />
|
<uses-permission android:name="com.aoleyun.sn.permissions.INSTALL_APK" />
|
||||||
<permission android:name="com.aoleyun.sn.permissions.INSTALL_APK" />
|
<permission android:name="com.aoleyun.sn.permissions.INSTALL_APK" />
|
||||||
|
|
||||||
|
<!--百度-->
|
||||||
|
<!-- 这个权限用于进行网络定位-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
|
<!-- 这个权限用于访问GPS定位-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
|
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||||
|
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
|
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
|
||||||
|
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
<!-- 访问网络,网络定位需要上网 -->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
<!-- 允许挂载和反挂载文件系统可移动存储 -->
|
||||||
|
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
|
||||||
|
<!-- 允许程序读取底层系统日志文件 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_LOGS"/>
|
||||||
|
<!-- 允许访问振动设备 -->
|
||||||
|
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||||
|
<!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 -->
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||||
|
<!-- 允许程序读取或写入系统设置 -->
|
||||||
|
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
|
||||||
|
<!-- android 9.0上使用前台服务,需要添加权限 -->
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
<!-- 用于读取手机当前的状态 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
|
<!-- 读取缓存数据 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
<!-- 获取模拟定位信息 -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
|
||||||
|
|
||||||
|
|
||||||
<!-- 【必须】 移动推送 TPNS SDK VIP版本所需权限 -->
|
<!-- 【必须】 移动推送 TPNS SDK VIP版本所需权限 -->
|
||||||
<permission
|
<permission
|
||||||
android:name="com.aoleyun.sn.permission.XGPUSH_RECEIVE"
|
android:name="com.aoleyun.sn.permission.XGPUSH_RECEIVE"
|
||||||
@@ -257,6 +292,14 @@
|
|||||||
<action android:name="aoleyun.intent.action.BOOT_COMPLETED" />
|
<action android:name="aoleyun.intent.action.BOOT_COMPLETED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 声明service组件 -->
|
||||||
|
<service
|
||||||
|
android:name="com.baidu.location.f"
|
||||||
|
android:enabled="true"
|
||||||
|
android:process=":remote"/>
|
||||||
|
|
||||||
<!-- <receiver android:name=".log.LogReceiver" -->
|
<!-- <receiver android:name=".log.LogReceiver" -->
|
||||||
<!-- android:permission="android.permission.DUMP" > -->
|
<!-- android:permission="android.permission.DUMP" > -->
|
||||||
<!-- <intent-filter> -->
|
<!-- <intent-filter> -->
|
||||||
@@ -569,13 +612,13 @@
|
|||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.amap.api.v2.apikey"
|
android:name="com.amap.api.v2.apikey"
|
||||||
android:value="${AMAP_KEY}" />
|
android:value="${AMAP_KEY}" />
|
||||||
<!-- 定位需要的服务 适配Android Q需要加上android:foregroundServiceType="location" -->
|
|
||||||
<service
|
|
||||||
android:name="com.amap.api.location.APSService"
|
|
||||||
android:foregroundServiceType="location" />
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.aoleyun.sn.base.CustomGlideModule"
|
android:name="com.aoleyun.sn.base.CustomGlideModule"
|
||||||
android:value="AppGlideModule" />
|
android:value="AppGlideModule" />
|
||||||
|
<meta-data
|
||||||
|
android:name="com.baidu.lbsapi.API_KEY"
|
||||||
|
android:value="bQxx6zC6AvZ6O41UUPYq6X1LsQuC36dh" >
|
||||||
|
</meta-data>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
@@ -1,29 +1,35 @@
|
|||||||
package com.aoleyun.sn.manager;
|
package com.aoleyun.sn.manager;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
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.aoleyun.sn.utils.SPUtils;
|
import com.aoleyun.sn.utils.SPUtils;
|
||||||
|
import com.baidu.location.BDAbstractLocationListener;
|
||||||
|
import com.baidu.location.BDLocation;
|
||||||
|
import com.baidu.location.LocationClient;
|
||||||
|
import com.baidu.location.LocationClientOption;
|
||||||
|
|
||||||
public class AmapManager {
|
public class AmapManager {
|
||||||
|
private String TAG = AmapManager.class.getSimpleName();
|
||||||
|
|
||||||
|
@SuppressLint("StaticFieldLeak")
|
||||||
private static AmapManager sInstance;
|
private static AmapManager sInstance;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
public static AMapLocationClient locationClient = null;
|
private LocationClient mLocationClient = null;
|
||||||
private String TAG = AmapManager.class.getSimpleName();
|
private LocationClientOption mOption;
|
||||||
|
|
||||||
private AmapManager(Context context) {
|
private AmapManager(Context context) {
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void init(Context context) {
|
public static void init(Context context) {
|
||||||
|
if (context == null) {
|
||||||
|
throw new RuntimeException("Context is NULL");
|
||||||
|
}
|
||||||
if (sInstance == null) {
|
if (sInstance == null) {
|
||||||
sInstance = new AmapManager(context);
|
sInstance = new AmapManager(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AmapManager getInstance() {
|
public static AmapManager getInstance() {
|
||||||
@@ -34,57 +40,130 @@ public class AmapManager {
|
|||||||
return sInstance;
|
return sInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AMapLocationClient getLocationClient() {
|
public void initAmap() {
|
||||||
if (null == locationClient) {
|
mLocationClient = new LocationClient(mContext);
|
||||||
|
mLocationClient.setLocOption(getDefaultLocationClientOption());
|
||||||
|
mLocationClient.registerLocationListener(mListener);
|
||||||
|
mLocationClient.stop();
|
||||||
|
mLocationClient.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocationClient getLocationClient() {
|
||||||
|
if (mLocationClient == null) {
|
||||||
initAmap();
|
initAmap();
|
||||||
}
|
}
|
||||||
return locationClient;
|
return mLocationClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initAmap() {
|
/***
|
||||||
locationClient = new AMapLocationClient(mContext);
|
*
|
||||||
AMapLocationClientOption option = new AMapLocationClientOption();
|
* @return DefaultLocationClientOption 默认O设置
|
||||||
option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
|
*/
|
||||||
option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
|
public LocationClientOption getDefaultLocationClientOption() {
|
||||||
option.setNeedAddress(true);
|
if (mOption == null) {
|
||||||
//获取一次定位结果:
|
mOption = new LocationClientOption();
|
||||||
//该方法默认为false。
|
mOption.setCoorType("bd09ll"); // 可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
|
||||||
option.setOnceLocation(true);
|
mOption.setScanSpan(0); // 可选,默认0,即仅定位一次,设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
|
||||||
//获取最近3s内精度最高的一次定位结果:
|
mOption.setIsNeedAddress(true); // 可选,设置是否需要地址信息,默认不需要
|
||||||
//设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。
|
mOption.setIsNeedLocationDescribe(true); // 可选,设置是否需要地址描述
|
||||||
// 如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
|
mOption.setNeedDeviceDirect(false); // 可选,设置是否需要设备方向结果
|
||||||
option.setOnceLocationLatest(true);
|
mOption.setLocationNotify(false); // 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
|
||||||
locationClient.setLocationOption(option);
|
mOption.setIgnoreKillProcess(true); // 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop
|
||||||
//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
|
mOption.setIsNeedLocationDescribe(true); // 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation
|
||||||
//设置定位监听
|
mOption.setIsNeedLocationPoiList(true); // 可选,默认false,设置是否需要POI结果,可以在BDLocation
|
||||||
locationClient.setLocationListener(new AMapLocationListener() {
|
mOption.SetIgnoreCacheException(false); // 可选,默认false,设置是否收集CRASH信息,默认收集
|
||||||
|
mOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); // 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备,模糊
|
||||||
|
mOption.setIsNeedAltitude(false); // 可选,默认false,设置定位时是否需要海拔信息,默认不需要,除基础定位版本都可用
|
||||||
|
// 可选,设置首次定位时选择定位速度优先还是定位准确性优先,默认为速度优先
|
||||||
|
// mOption.setFirstLocType(LocationClientOption.FirstLocType.SPEED_IN_FIRST_LOC);
|
||||||
|
}
|
||||||
|
return mOption;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onLocationChanged(AMapLocation aMapLocation) {
|
/*****
|
||||||
StringBuilder sb = new StringBuilder();
|
*
|
||||||
//errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明
|
* 定位结果回调,重写onReceiveLocation方法,可以直接拷贝如下代码到自己工程中修改
|
||||||
if (aMapLocation.getErrorCode() == 0) {
|
*
|
||||||
Log.e(TAG, "onLocationChanged: " + "定位成功");
|
*/
|
||||||
Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress());
|
private BDAbstractLocationListener mListener = new BDAbstractLocationListener() {
|
||||||
sb.append(aMapLocation.getAddress()).append("\n");
|
|
||||||
SPUtils.put(mContext, "AmapAddress", aMapLocation.getAddress());
|
/**
|
||||||
SPUtils.put(mContext, "longitude", aMapLocation.getLongitude());
|
* 定位请求回调函数
|
||||||
SPUtils.put(mContext, "latitude", aMapLocation.getLatitude());
|
* @param location 定位结果
|
||||||
SPUtils.put(mContext, "AmapError", "");
|
*/
|
||||||
} else {
|
@Override
|
||||||
//定位失败
|
public void onReceiveLocation(BDLocation location) {
|
||||||
sb.append("定位失败" + "\n");
|
// TODO Auto-generated method stub
|
||||||
Log.e(TAG, "onLocationChanged: " + "定位失败");
|
if (null != location && location.getLocType() != BDLocation.TypeServerError) {
|
||||||
SPUtils.put(mContext, "AmapError", String.valueOf(aMapLocation.getErrorInfo()));
|
Log.e(TAG, "onLocationChanged: " + "定位成功");
|
||||||
}
|
Log.e(TAG, "onLocationChanged: " + location.getAddress());
|
||||||
Log.e(TAG, (String) SPUtils.get(mContext, "AmapAddress", "-"));
|
SPUtils.put(mContext, "AmapAddress", location.getAddress());
|
||||||
Log.e(TAG, (String) SPUtils.get(mContext, "AmapError", "-"));
|
SPUtils.put(mContext, "longitude", location.getLongitude());
|
||||||
Log.e(TAG, "amap: " + sb.toString());
|
SPUtils.put(mContext, "latitude", location.getLatitude());
|
||||||
|
SPUtils.put(mContext, "AmapError", "");
|
||||||
}
|
}
|
||||||
});
|
Log.e(TAG, (String) SPUtils.get(mContext, "AmapAddress", "-"));
|
||||||
//设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
|
Log.e(TAG, (String) SPUtils.get(mContext, "AmapError", "-"));
|
||||||
locationClient.stopLocation();
|
}
|
||||||
locationClient.startLocation();
|
|
||||||
Log.e(TAG, "initAmap: " + "startLocation");
|
@Override
|
||||||
}
|
public void onConnectHotSpotMessage(String s, int i) {
|
||||||
|
super.onConnectHotSpotMessage(s, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回调定位诊断信息,开发者可以根据相关信息解决定位遇到的一些问题
|
||||||
|
* @param locType 当前定位类型
|
||||||
|
* @param diagnosticType 诊断类型(1~9)
|
||||||
|
* @param diagnosticMessage 具体的诊断信息释义
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) {
|
||||||
|
super.onLocDiagnosticMessage(locType, diagnosticType, diagnosticMessage);
|
||||||
|
// int tag = 2;
|
||||||
|
StringBuffer sb = new StringBuffer(256);
|
||||||
|
sb.append("诊断结果: ");
|
||||||
|
if (locType == BDLocation.TypeNetWorkLocation) {
|
||||||
|
if (diagnosticType == 1) {
|
||||||
|
sb.append("网络定位成功,没有开启GPS,建议打开GPS会更好");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 2) {
|
||||||
|
sb.append("网络定位成功,没有开启Wi-Fi,建议打开Wi-Fi会更好");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
} else if (locType == BDLocation.TypeOffLineLocationFail) {
|
||||||
|
if (diagnosticType == 3) {
|
||||||
|
sb.append("定位失败,请您检查您的网络状态");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
} else if (locType == BDLocation.TypeCriteriaException) {
|
||||||
|
if (diagnosticType == 4) {
|
||||||
|
sb.append("定位失败,无法获取任何有效定位依据");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 5) {
|
||||||
|
sb.append("定位失败,无法获取有效定位依据,请检查运营商网络或者Wi-Fi网络是否正常开启,尝试重新请求定位");
|
||||||
|
sb.append(diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 6) {
|
||||||
|
sb.append("定位失败,无法获取有效定位依据,请尝试插入一张sim卡或打开Wi-Fi重试");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 7) {
|
||||||
|
sb.append("定位失败,飞行模式下无法获取有效定位依据,请关闭飞行模式重试");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 9) {
|
||||||
|
sb.append("定位失败,无法获取任何有效定位依据");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
} else if (locType == BDLocation.TypeServerError) {
|
||||||
|
if (diagnosticType == 8) {
|
||||||
|
sb.append("定位失败,请确认您定位的开关打开状态,是否赋予APP定位权限");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.e(TAG, "onLocationChanged: " + "定位失败");
|
||||||
|
SPUtils.put(mContext, "AmapError", sb);
|
||||||
|
Log.e(TAG, "onLocDiagnosticMessage: " + sb);
|
||||||
|
// logMsg(sb.toString(), tag);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,8 @@ import androidx.annotation.Nullable;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.amap.api.location.AMapLocationClient;
|
|
||||||
import com.aoleyun.sn.BuildConfig;
|
import com.aoleyun.sn.BuildConfig;
|
||||||
import com.aoleyun.sn.KeepAliveConnection;
|
import com.aoleyun.sn.KeepAliveConnection;
|
||||||
import com.aoleyun.sn.base.BaseApplication;
|
|
||||||
import com.aoleyun.sn.bean.BaseResponse;
|
import com.aoleyun.sn.bean.BaseResponse;
|
||||||
import com.aoleyun.sn.comm.CommonConfig;
|
import com.aoleyun.sn.comm.CommonConfig;
|
||||||
import com.aoleyun.sn.comm.PackageNames;
|
import com.aoleyun.sn.comm.PackageNames;
|
||||||
@@ -45,6 +43,7 @@ import com.arialyy.annotations.Download;
|
|||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.arialyy.aria.core.download.DownloadEntity;
|
import com.arialyy.aria.core.download.DownloadEntity;
|
||||||
import com.arialyy.aria.core.task.DownloadTask;
|
import com.arialyy.aria.core.task.DownloadTask;
|
||||||
|
import com.baidu.location.LocationClient;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -241,9 +240,9 @@ public class GuardService extends Service {
|
|||||||
break;
|
break;
|
||||||
case Intent.ACTION_SCREEN_ON: {
|
case Intent.ACTION_SCREEN_ON: {
|
||||||
long time = System.currentTimeMillis();
|
long time = System.currentTimeMillis();
|
||||||
AMapLocationClient aMapLocationClient = AmapManager.getInstance().getLocationClient();
|
LocationClient locationClient = AmapManager.getInstance().getLocationClient();
|
||||||
aMapLocationClient.stopLocation();
|
locationClient.stop();
|
||||||
aMapLocationClient.startLocation();
|
locationClient.start();
|
||||||
getLockState("2", String.valueOf(time));
|
getLockState("2", String.valueOf(time));
|
||||||
// sendScreenStatus(1);
|
// sendScreenStatus(1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,6 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.amap.api.location.AMapLocation;
|
|
||||||
import com.amap.api.location.AMapLocationClient;
|
|
||||||
import com.amap.api.location.AMapLocationListener;
|
|
||||||
import com.aoleyun.sn.R;
|
import com.aoleyun.sn.R;
|
||||||
import com.aoleyun.sn.base.BaseApplication;
|
import com.aoleyun.sn.base.BaseApplication;
|
||||||
import com.aoleyun.sn.bean.BaseResponse;
|
import com.aoleyun.sn.bean.BaseResponse;
|
||||||
@@ -55,6 +52,9 @@ import com.aoleyun.sn.utils.ServiceAliveUtils;
|
|||||||
import com.aoleyun.sn.utils.ToastUtil;
|
import com.aoleyun.sn.utils.ToastUtil;
|
||||||
import com.aoleyun.sn.utils.Utils;
|
import com.aoleyun.sn.utils.Utils;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
|
import com.baidu.location.BDAbstractLocationListener;
|
||||||
|
import com.baidu.location.BDLocation;
|
||||||
|
import com.baidu.location.LocationClient;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
@@ -618,36 +618,69 @@ public class MessageReceiver extends XGPushBaseReceiver {
|
|||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "mPresenter is NULL");
|
Log.e(TAG, "mPresenter is NULL");
|
||||||
}
|
}
|
||||||
AMapLocationClient aMapLocationClient = AmapManager.getInstance().getLocationClient();
|
LocationClient locationClient = AmapManager.getInstance().getLocationClient();
|
||||||
aMapLocationClient.stopLocation();
|
locationClient.stop();
|
||||||
aMapLocationClient.startLocation();
|
locationClient.start();
|
||||||
aMapLocationClient.setLocationListener(new AMapLocationListener() {
|
locationClient.registerLocationListener(new BDAbstractLocationListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onLocationChanged(AMapLocation aMapLocation) {
|
public void onReceiveLocation(BDLocation bdLocation) {
|
||||||
StringBuilder sb = new StringBuilder();
|
Log.e(TAG, "onReceiveLocation: ");
|
||||||
//errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明
|
if (null != bdLocation && bdLocation.getLocType() != BDLocation.TypeServerError) {
|
||||||
if (aMapLocation.getErrorCode() == 0) {
|
|
||||||
Log.e(TAG, "onLocationChanged: " + "定位成功");
|
Log.e(TAG, "onLocationChanged: " + "定位成功");
|
||||||
Log.e(TAG, "onLocationChanged: " + aMapLocation.getAddress());
|
Log.e(TAG, "onLocationChanged: " + bdLocation.getAddress());
|
||||||
sb.append(aMapLocation.getAddress()).append("\n");
|
SPUtils.put(mContext, "AmapAddress", bdLocation.getAddress());
|
||||||
SPUtils.put(mContext, "AmapAddress", aMapLocation.getAddress());
|
SPUtils.put(mContext, "longitude", bdLocation.getLongitude());
|
||||||
SPUtils.put(mContext, "longitude", aMapLocation.getLongitude());
|
SPUtils.put(mContext, "latitude", bdLocation.getLatitude());
|
||||||
SPUtils.put(mContext, "latitude", aMapLocation.getLatitude());
|
SPUtils.put(mContext, "AmapError", "");
|
||||||
} else {
|
|
||||||
//定位失败
|
|
||||||
sb.append("定位失败" + "\n");
|
|
||||||
SPUtils.put(mContext, "AmapError", String.valueOf(aMapLocation.getErrorCode()));
|
|
||||||
}
|
}
|
||||||
Log.e(TAG, (String) SPUtils.get(mContext, "AmapAddress", "-"));
|
Log.e(TAG, (String) SPUtils.get(mContext, "AmapAddress", "-"));
|
||||||
Log.e(TAG, (String) SPUtils.get(mContext, "AmapError", "-"));
|
Log.e(TAG, (String) SPUtils.get(mContext, "AmapError", "-"));
|
||||||
Log.e(TAG, "amap: " + sb.toString());
|
}
|
||||||
NetInterfaceManager.getInstance().updateDeviceInfo(new NetInterfaceManager.onCompleteCallback() {
|
|
||||||
@Override
|
|
||||||
public void onComplete() {
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onLocDiagnosticMessage(int locType, int diagnosticType, String diagnosticMessage) {
|
||||||
|
super.onLocDiagnosticMessage(locType, diagnosticType, diagnosticMessage);
|
||||||
|
StringBuffer sb = new StringBuffer(256);
|
||||||
|
sb.append("诊断结果: ");
|
||||||
|
if (locType == BDLocation.TypeNetWorkLocation) {
|
||||||
|
if (diagnosticType == 1) {
|
||||||
|
sb.append("网络定位成功,没有开启GPS,建议打开GPS会更好");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 2) {
|
||||||
|
sb.append("网络定位成功,没有开启Wi-Fi,建议打开Wi-Fi会更好");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
}
|
}
|
||||||
});
|
} else if (locType == BDLocation.TypeOffLineLocationFail) {
|
||||||
|
if (diagnosticType == 3) {
|
||||||
|
sb.append("定位失败,请您检查您的网络状态");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
} else if (locType == BDLocation.TypeCriteriaException) {
|
||||||
|
if (diagnosticType == 4) {
|
||||||
|
sb.append("定位失败,无法获取任何有效定位依据");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 5) {
|
||||||
|
sb.append("定位失败,无法获取有效定位依据,请检查运营商网络或者Wi-Fi网络是否正常开启,尝试重新请求定位");
|
||||||
|
sb.append(diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 6) {
|
||||||
|
sb.append("定位失败,无法获取有效定位依据,请尝试插入一张sim卡或打开Wi-Fi重试");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 7) {
|
||||||
|
sb.append("定位失败,飞行模式下无法获取有效定位依据,请关闭飞行模式重试");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
} else if (diagnosticType == 9) {
|
||||||
|
sb.append("定位失败,无法获取任何有效定位依据");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
} else if (locType == BDLocation.TypeServerError) {
|
||||||
|
if (diagnosticType == 8) {
|
||||||
|
sb.append("定位失败,请确认您定位的开关打开状态,是否赋予APP定位权限");
|
||||||
|
sb.append("\n" + diagnosticMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log.e(TAG, "onLocationChanged: " + "定位失败");
|
||||||
|
SPUtils.put(mContext, "AmapError", sb);
|
||||||
|
Log.e(TAG, "onLocDiagnosticMessage: " + sb);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user