Commit c81046d9 authored by Administrator's avatar Administrator

fix: 百度SDK已经设置为GCJ02了,hook端不需要再做经纬度转换

parent 6802981c
...@@ -8,8 +8,8 @@ android { ...@@ -8,8 +8,8 @@ android {
applicationId "com.virjar.ratel.virtuallocation" applicationId "com.virjar.ratel.virtuallocation"
minSdkVersion 19 minSdkVersion 19
targetSdkVersion 28 targetSdkVersion 28
versionCode 20210513 versionCode 20210607
versionName "v1.5" versionName "v1.6"
archivesBaseName = "JDY_${versionName}".replace(' ', '_') archivesBaseName = "JDY_${versionName}".replace(' ', '_')
ndk { ndk {
abiFilters "armeabi-v7a", "arm64-v8a"//, "x86","arm64-v8a","x86_64" abiFilters "armeabi-v7a", "arm64-v8a"//, "x86","arm64-v8a","x86_64"
......
...@@ -7,18 +7,13 @@ import android.os.Bundle; ...@@ -7,18 +7,13 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import com.virjar.ratel.api.RatelToolKit; import com.virjar.ratel.api.RatelToolKit;
import com.virjar.ratel.api.extension.FileLogger;
import com.virjar.ratel.api.inspect.ClassLoadMonitor; import com.virjar.ratel.api.inspect.ClassLoadMonitor;
import com.virjar.ratel.api.inspect.ForceFiledViewer;
import com.virjar.ratel.api.rposed.IRposedHookLoadPackage; import com.virjar.ratel.api.rposed.IRposedHookLoadPackage;
import com.virjar.ratel.api.rposed.RC_MethodHook; import com.virjar.ratel.api.rposed.RC_MethodHook;
import com.virjar.ratel.api.rposed.RposedBridge; import com.virjar.ratel.api.rposed.RposedBridge;
import com.virjar.ratel.api.rposed.RposedHelpers; import com.virjar.ratel.api.rposed.RposedHelpers;
import com.virjar.ratel.api.rposed.callbacks.RC_LoadPackage; import com.virjar.ratel.api.rposed.callbacks.RC_LoadPackage;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationHandler;
...@@ -52,6 +47,8 @@ public class XPosedPlugin implements IRposedHookLoadPackage { ...@@ -52,6 +47,8 @@ public class XPosedPlugin implements IRposedHookLoadPackage {
} }
Log.i(TAG, "虚拟定位位置:" + AppApplication.mockGPS.mLongitude + "," + AppApplication.mockGPS.mLatitude); Log.i(TAG, "虚拟定位位置:" + AppApplication.mockGPS.mLongitude + "," + AppApplication.mockGPS.mLatitude);
disableRatelMultiEnvLocationMock();
handleGaoDeMap(); handleGaoDeMap();
handleBaiduMap(); handleBaiduMap();
handleTencent(); handleTencent();
...@@ -61,6 +58,16 @@ public class XPosedPlugin implements IRposedHookLoadPackage { ...@@ -61,6 +58,16 @@ public class XPosedPlugin implements IRposedHookLoadPackage {
} }
private static void disableRatelMultiEnvLocationMock() {
try {
// 这个功能在ratel 1.5.1才支持,低版本不支持这个功能
RposedHelpers.callMethod(RatelToolKit.virtualEnv, "disableLocalMock");
} catch (Throwable throwable) {
//ignore
Log.e(TAG, "error", throwable);
}
}
private static void handleOriginal() { private static void handleOriginal() {
RC_MethodHook replaceLocationListenerHook = new RC_MethodHook() { RC_MethodHook replaceLocationListenerHook = new RC_MethodHook() {
@Override @Override
...@@ -85,6 +92,7 @@ public class XPosedPlugin implements IRposedHookLoadPackage { ...@@ -85,6 +92,7 @@ public class XPosedPlugin implements IRposedHookLoadPackage {
double tempLat = z * Math.sin(theta); double tempLat = z * Math.sin(theta);
location.setLatitude(tempLat); location.setLatitude(tempLat);
location.setLongitude(tempLng); location.setLongitude(tempLng);
Log.i(TAG, "onLocationChanged:(" + location.getLongitude() + "," + location.getLatitude() + ")");
orignalListener.onLocationChanged(location); orignalListener.onLocationChanged(location);
} }
} }
...@@ -122,13 +130,13 @@ public class XPosedPlugin implements IRposedHookLoadPackage { ...@@ -122,13 +130,13 @@ public class XPosedPlugin implements IRposedHookLoadPackage {
return; return;
} }
if (!hasMapApi) { if (!hasMapApi) {
double x = AppApplication.mockGPS.mLongitude - 0.0065, y = AppApplication.mockGPS.mLatitude - 0.0035; // double x = AppApplication.mockGPS.mLongitude - 0.0065, y = AppApplication.mockGPS.mLatitude - 0.0035;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * Math.PI); // double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * Math.PI);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * Math.PI); // double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * Math.PI);
double tempLng = z * Math.cos(theta); // double tempLng = z * Math.cos(theta);
double tempLat = z * Math.sin(theta); // double tempLat = z * Math.sin(theta);
location.setLatitude(tempLat); location.setLatitude(AppApplication.mockGPS.mLatitude);
location.setLongitude(tempLng); location.setLongitude(AppApplication.mockGPS.mLongitude);
} }
} }
}); });
...@@ -307,6 +315,7 @@ public class XPosedPlugin implements IRposedHookLoadPackage { ...@@ -307,6 +315,7 @@ public class XPosedPlugin implements IRposedHookLoadPackage {
if (!(obj.getClass().getName().equals("com.baidu.location.BDLocation"))) { if (!(obj.getClass().getName().equals("com.baidu.location.BDLocation"))) {
continue; continue;
} }
//TODO 百度需要探测下坐标系。我们自己使用的GCG02,但是百度习惯使用BD09
//location.setLatitude(); //location.setLatitude();
//location.setLongitude(); //location.setLongitude();
RposedHelpers.callMethod(obj, "setLatitude", AppApplication.mockGPS.mLatitude); RposedHelpers.callMethod(obj, "setLatitude", AppApplication.mockGPS.mLatitude);
...@@ -379,16 +388,9 @@ public class XPosedPlugin implements IRposedHookLoadPackage { ...@@ -379,16 +388,9 @@ public class XPosedPlugin implements IRposedHookLoadPackage {
continue; continue;
} }
// 我们是百度坐标系,这里是高德,所以进行一次坐标系转换
Location location = (Location) obj; Location location = (Location) obj;
double x = AppApplication.mockGPS.mLongitude - 0.0065, y = AppApplication.mockGPS.mLatitude - 0.0035; location.setLatitude(AppApplication.mockGPS.mLatitude);
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * Math.PI); location.setLongitude(AppApplication.mockGPS.mLongitude);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * Math.PI);
double tempLng = z * Math.cos(theta);
double tempLat = z * Math.sin(theta);
location.setLatitude(tempLat);
location.setLongitude(tempLng);
// public void setAddress(String var1) { // public void setAddress(String var1) {
try { try {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment