From 82d12cfe28304e8abeed8a90b06c4a1ccbd5d173 Mon Sep 17 00:00:00 2001
From: 1256748979@qq.com <Leige0925>
Date: Sun, 25 Apr 2021 03:26:20 +0800
Subject: [PATCH] 4/6

---
 wandun/src/main/cpp/CMakeLists.txt                 |  4 ++--
 wandun/src/main/cpp/collect.c                      | 48 ++++++++++++++++++++++++++++++++++++++++++------
 wandun/src/main/cpp/include/collect.h              |  2 ++
 wandun/src/main/cpp/lib/arm64-v8a/libcJson.a       | Bin 255074 -> 0 bytes
 wandun/src/main/cpp/lib/arm64-v8a/libcrypto.a      | Bin 16688890 -> 0 bytes
 wandun/src/main/cpp/lib/armeabi-v7a/libcJson.a     | Bin 113338 -> 0 bytes
 wandun/src/main/cpp/lib/armeabi-v7a/libcrypto.a    | Bin 8333154 -> 0 bytes
 wandun/src/main/java/com/reyun/wandun/WdMain.java  | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 wandun/src/main/nativeLibs/arm64-v8a/libcJson.a    | Bin 0 -> 255074 bytes
 wandun/src/main/nativeLibs/arm64-v8a/libcrypto.a   | Bin 0 -> 16688890 bytes
 wandun/src/main/nativeLibs/armeabi-v7a/libcJson.a  | Bin 0 -> 113338 bytes
 wandun/src/main/nativeLibs/armeabi-v7a/libcrypto.a | Bin 0 -> 8333154 bytes
 12 files changed, 142 insertions(+), 8 deletions(-)
 delete mode 100644 wandun/src/main/cpp/lib/arm64-v8a/libcJson.a
 delete mode 100644 wandun/src/main/cpp/lib/arm64-v8a/libcrypto.a
 delete mode 100644 wandun/src/main/cpp/lib/armeabi-v7a/libcJson.a
 delete mode 100644 wandun/src/main/cpp/lib/armeabi-v7a/libcrypto.a
 create mode 100644 wandun/src/main/nativeLibs/arm64-v8a/libcJson.a
 create mode 100644 wandun/src/main/nativeLibs/arm64-v8a/libcrypto.a
 create mode 100644 wandun/src/main/nativeLibs/armeabi-v7a/libcJson.a
 create mode 100644 wandun/src/main/nativeLibs/armeabi-v7a/libcrypto.a

diff --git a/wandun/src/main/cpp/CMakeLists.txt b/wandun/src/main/cpp/CMakeLists.txt
index 68944be..4b60c42 100644
--- a/wandun/src/main/cpp/CMakeLists.txt
+++ b/wandun/src/main/cpp/CMakeLists.txt
@@ -39,14 +39,14 @@ add_library(cJson SHARED IMPORTED)
 set_target_properties(
         cJson
         PROPERTIES IMPORTED_LOCATION
-        ${CMAKE_SOURCE_DIR}/lib/${CMAKE_ANDROID_ARCH_ABI}/libcJson.a
+        ${CMAKE_SOURCE_DIR}/../nativeLibs/${CMAKE_ANDROID_ARCH_ABI}/libcJson.a
 )
 
 add_library(crypto SHARED IMPORTED)
 set_target_properties(
         crypto
         PROPERTIES IMPORTED_LOCATION
-        ${CMAKE_SOURCE_DIR}/lib/${CMAKE_ANDROID_ARCH_ABI}/libcrypto.a
+        ${CMAKE_SOURCE_DIR}/../nativeLibs/${CMAKE_ANDROID_ARCH_ABI}/libcrypto.a
 )
 
 target_link_libraries(wdun cJson crypto log)
diff --git a/wandun/src/main/cpp/collect.c b/wandun/src/main/cpp/collect.c
index 64a0a95..57688bd 100644
--- a/wandun/src/main/cpp/collect.c
+++ b/wandun/src/main/cpp/collect.c
@@ -24,7 +24,6 @@
 #include <sys/ioctl.h>
 #include <linux/if.h>
 
-
 #define WD_COLLECT "wd_collect"
 
 
@@ -56,6 +55,7 @@ jstring do_collect(JNIEnv* env) {
     collect_settings_info(env, json);
     collect_display_info(env, json);
     collect_proxy_info(env, json);
+    collect_audio_info(env, json);
     collect_camera_info(env, json);
     collect_battery_info(env, json);
     collect_env(env, json);
@@ -74,9 +74,9 @@ jstring do_collect(JNIEnv* env) {
     collect_system_id(env, json);
     collect_time_info(env, json);
     collect_common_app(env, json);
+    collect_installed_apps(env, json);
     collect_risk_info(env, json);
 
-
     if(WDSYSCALL(SYS_clock_gettime, CLOCK_REALTIME, &ts) == 0) {
         end_time = (double)ts.tv_nsec / 1000000  + (double)ts.tv_sec * 1000ULL;
     }
@@ -87,6 +87,8 @@ jstring do_collect(JNIEnv* env) {
 
     const char* data = cJSON_Print(json);
 
+
+
     jstring data_jstr = (*env)->NewStringUTF(env, data);
     return data_jstr;
 }
@@ -215,6 +217,8 @@ int collect_permissions(JNIEnv* env, cJSON* json) {
         (*env)->DeleteLocalRef(env, str);
     }
 
+    cJSON_AddNumberToObject(json, "permissions", value);
+
     return value;
 }
 
@@ -268,10 +272,6 @@ void collect_mac_addr(JNIEnv *env, cJSON *json) {
     return_label2:
     (*env)->DeleteLocalRef(env, name_str);
 
-    char mac_addr2[32] = {0};
-    read_file("/sys/class/net/wlan0/address", "r", mac_addr2, 31);
-    cJSON_AddStringToObject(json, "mac_addr2", mac_addr2);
-
     logd(WD_COLLECT, "%s", "collect mac_addr finished...");
 }
 
@@ -381,6 +381,27 @@ void collect_proxy_info(JNIEnv *env, cJSON *json) {
     logd(WD_COLLECT, "%s", "collect proxy_info finished...");
 }
 
+void collect_audio_info(JNIEnv *env, cJSON *json) {
+    cJSON* audio = cJSON_CreateObject();
+    jobject audio_jstr = (*env)->NewStringUTF(env, "audio");
+    jobject am = wdCallObjectMethod(env, g_app_context,"getSystemService",
+                                                 "(Ljava/lang/String;)Ljava/lang/Object;", audio_jstr);
+    if(am != NULL) {
+        cJSON* volume_arr = cJSON_CreateArray();
+        for(int i = 0; i < 6; ++i) {
+            jint volume = wdCallIntMethod(env, am, "getStreamVolume", "(I)I", i);
+            cJSON_AddItemToArray(volume_arr, cJSON_CreateNumber(volume));
+        }
+        cJSON_AddItemToObject(audio, "volume", volume_arr);
+        jint ring_mode = wdCallIntMethod(env, am, "getRingerMode", "()I");
+        cJSON_AddNumberToObject(audio, "ring_mode", ring_mode);
+        (*env)->DeleteLocalRef(env, am);
+        (*env)->DeleteLocalRef(env, audio_jstr);
+    }
+    cJSON_AddItemToObject(json, "audio", audio);
+    logd(WD_COLLECT, "%s", "collect audio_info finished...");
+}
+
 void collect_camera_info(JNIEnv *env, cJSON *json) {
 
     cJSON* item_json = cJSON_CreateArray();
@@ -1120,3 +1141,18 @@ void collect_common_app(JNIEnv *env, cJSON *json) {
     cJSON_AddItemToObject(json, "common_used_apps", item);
 }
 
+void collect_installed_apps(JNIEnv *env, cJSON *json) {
+    cJSON* item = cJSON_CreateArray();
+    FILE* fp = popen("pm list packages", "r");
+    if(fp) {
+        char line[128] = {0};
+        while(fgets(line, 127, fp)) {
+            char* package = strchr(line, ':') + 1;
+            cJSON_AddItemToArray(item, cJSON_CreateString(package));
+        }
+        pclose(fp);
+    }
+    cJSON_AddItemToObject(json, "install_apps", item);
+}
+
+
diff --git a/wandun/src/main/cpp/include/collect.h b/wandun/src/main/cpp/include/collect.h
index 908b1aa..3804c7b 100644
--- a/wandun/src/main/cpp/include/collect.h
+++ b/wandun/src/main/cpp/include/collect.h
@@ -20,6 +20,7 @@ void collect_prop_info(JNIEnv* env, cJSON* json);
 void collect_settings_info(JNIEnv* env, cJSON* json);
 void collect_display_info(JNIEnv* env, cJSON* json);
 void collect_proxy_info(JNIEnv* env, cJSON* json);
+void collect_audio_info(JNIEnv* env, cJSON* json);
 void collect_camera_info(JNIEnv* env, cJSON* json);
 void collect_battery_info(JNIEnv* env, cJSON* json);
 void collect_env(JNIEnv* env, cJSON* json);
@@ -34,6 +35,7 @@ void collect_cell_info(JNIEnv* env, cJSON* json);
 void collect_system_id(JNIEnv* env, cJSON* json);
 void collect_time_info(JNIEnv* env, cJSON* json);
 void collect_common_app(JNIEnv* env, cJSON* json);
+void collect_installed_apps(JNIEnv *env, cJSON *json);
 void collect_risk_info(JNIEnv* env, cJSON* json);
 
 /** Network type is unknown */
diff --git a/wandun/src/main/cpp/lib/arm64-v8a/libcJson.a b/wandun/src/main/cpp/lib/arm64-v8a/libcJson.a
deleted file mode 100644
index 61245a0..0000000
Binary files a/wandun/src/main/cpp/lib/arm64-v8a/libcJson.a and /dev/null differ
diff --git a/wandun/src/main/cpp/lib/arm64-v8a/libcrypto.a b/wandun/src/main/cpp/lib/arm64-v8a/libcrypto.a
deleted file mode 100644
index 1a8ca70..0000000
Binary files a/wandun/src/main/cpp/lib/arm64-v8a/libcrypto.a and /dev/null differ
diff --git a/wandun/src/main/cpp/lib/armeabi-v7a/libcJson.a b/wandun/src/main/cpp/lib/armeabi-v7a/libcJson.a
deleted file mode 100644
index 9f9007a..0000000
Binary files a/wandun/src/main/cpp/lib/armeabi-v7a/libcJson.a and /dev/null differ
diff --git a/wandun/src/main/cpp/lib/armeabi-v7a/libcrypto.a b/wandun/src/main/cpp/lib/armeabi-v7a/libcrypto.a
deleted file mode 100644
index ec8c229..0000000
Binary files a/wandun/src/main/cpp/lib/armeabi-v7a/libcrypto.a and /dev/null differ
diff --git a/wandun/src/main/java/com/reyun/wandun/WdMain.java b/wandun/src/main/java/com/reyun/wandun/WdMain.java
index 9d21b04..7d5b34c 100644
--- a/wandun/src/main/java/com/reyun/wandun/WdMain.java
+++ b/wandun/src/main/java/com/reyun/wandun/WdMain.java
@@ -1,16 +1,31 @@
 package com.reyun.wandun;
 
+import android.app.Service;
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.media.AudioManager;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
+import android.telephony.SignalStrength;
+import android.telephony.TelephonyManager;
+import android.util.Log;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 import me.weishu.reflection.Reflection;
 
+import static android.hardware.Sensor.TYPE_ROTATION_VECTOR;
+
 public class WdMain {
     private static WdMain mInstance = new WdMain();
 
+    private static String TAG = "WdMain";
+
     // 用户申请sdk后获得的认证码,调用sdk接口时需传入
     private String mApiKey;
 
@@ -24,6 +39,70 @@ public class WdMain {
         return mInstance;
     }
 
+    public void wdRegisterSensor(Context context, SensorManager sm, Sensor sensor) {
+        sm.registerListener(new SensorEventListener() {
+
+            @Override
+            public void onSensorChanged(SensorEvent event) {
+                float[] fArr = event.values;
+                event.sensor.getType();
+                StringBuilder sb = new StringBuilder();
+                for (int i = 0; i < fArr.length; i++) {
+                    sb.append(fArr[i] + "");
+                    sb.append(" , ");
+                }
+                Log.d(TAG, "onSensorChanged: " + event.sensor.getType() + " --> " + sb.toString());
+             //   onSensorChangedNative(event);
+            }
+
+            @Override
+            public void onAccuracyChanged(Sensor sensor, int accuracy) {
+
+            }
+        }, sensor, Sensor.REPORTING_MODE_ON_CHANGE);
+    }
+
+    public void wdRegisterSensors(Context context) {
+        SensorManager sensorManager = (SensorManager) context.getSystemService(Service.SENSOR_SERVICE);
+        Sensor defaultSensor = sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
+        if (defaultSensor != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor);
+        }
+        Sensor defaultSensor2 = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
+        if (defaultSensor2 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor2);
+        }
+        Sensor defaultSensor3 = sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR);
+        if (defaultSensor3 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor3);
+        }
+        Sensor defaultSensor4 = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
+        if (defaultSensor4 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor4);
+        }
+        Sensor defaultSensor5 = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
+        if (defaultSensor5 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor5);
+        }
+        Sensor defaultSensor6 = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+        if (defaultSensor6 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor6);
+        }
+        Sensor defaultSensor7 = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
+        if (defaultSensor7 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor7);
+        }
+        Sensor defaultSensor8 = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
+        if (defaultSensor8 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor8);
+        }
+        Sensor defaultSensor9 = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
+        if (defaultSensor9 != null) {
+            wdRegisterSensor(context, sensorManager, defaultSensor9);
+        }
+    }
+
+
     //初始化方法,
     public void init(Context context, String apiKey) {
         mContext = context;
@@ -38,6 +117,16 @@ public class WdMain {
 
         //todo 监控传感器数据变化
         //todo 监控手机信号强度变化
+
+        TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
+        tm.listen(new PhoneStateListener() {
+            @Override
+            public void onSignalStrengthsChanged(SignalStrength signalStrength) {
+             //   onSignalStrengthChangedNative(signalStrength);
+            }
+        }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
+
+        wdRegisterSensors(context);
     }
 
     //获取wdId
@@ -65,5 +154,12 @@ public class WdMain {
     //native层获取wdId
     public native String getWdIdNative();
 
+    //上报传感器变化
+    public native void onSensorChangedNative(SensorEvent sensorEvent);
+
+    //上报手机信号强度变化
+    public native void onSignalStrengthChangedNative(SignalStrength signalStrength);
 
+    //隔段时间上报风控信息
+    public native void reportnative();
 }
diff --git a/wandun/src/main/nativeLibs/arm64-v8a/libcJson.a b/wandun/src/main/nativeLibs/arm64-v8a/libcJson.a
new file mode 100644
index 0000000..61245a0
Binary files /dev/null and b/wandun/src/main/nativeLibs/arm64-v8a/libcJson.a differ
diff --git a/wandun/src/main/nativeLibs/arm64-v8a/libcrypto.a b/wandun/src/main/nativeLibs/arm64-v8a/libcrypto.a
new file mode 100644
index 0000000..1a8ca70
Binary files /dev/null and b/wandun/src/main/nativeLibs/arm64-v8a/libcrypto.a differ
diff --git a/wandun/src/main/nativeLibs/armeabi-v7a/libcJson.a b/wandun/src/main/nativeLibs/armeabi-v7a/libcJson.a
new file mode 100644
index 0000000..9f9007a
Binary files /dev/null and b/wandun/src/main/nativeLibs/armeabi-v7a/libcJson.a differ
diff --git a/wandun/src/main/nativeLibs/armeabi-v7a/libcrypto.a b/wandun/src/main/nativeLibs/armeabi-v7a/libcrypto.a
new file mode 100644
index 0000000..ec8c229
Binary files /dev/null and b/wandun/src/main/nativeLibs/armeabi-v7a/libcrypto.a differ
--
libgit2 0.27.1