Selaa lähdekoodia

1.增加平板信息提交接口以及bean类。

2.SystemUtil增加wifimac和蓝牙mac请求方法。
master
wangwanlei 11 kuukautta sitten
vanhempi
commit
79c10ad7bc

+ 78
- 0
app/src/main/java/com/xhly/manageapp/bean/log/PadInfoBean.kt Näytä tiedosto

@@ -0,0 +1,78 @@
1
+package com.xhly.manageapp.bean.log
2
+
3
+class PadInfoBean {
4
+    /**
5
+     * 用户id
6
+     */
7
+    var userid = 0
8
+
9
+    /**
10
+     * 设备型号
11
+     */
12
+    var deviceModel = ""
13
+
14
+    /**
15
+     * 设备版本
16
+     */
17
+    var deviceVersion = ""
18
+
19
+    /**
20
+     * 设备号
21
+     */
22
+    var sn = ""
23
+
24
+    /**
25
+     * WiFi/MAC
26
+     */
27
+    var wifyMac = ""
28
+
29
+    /**
30
+     * 蓝牙MAC
31
+     */
32
+    var blueMac = ""
33
+
34
+    /**
35
+     * 系统内核
36
+     */
37
+    var sysKernel = ""
38
+
39
+    /**
40
+     * 设备名称
41
+     */
42
+    var deviceName = ""
43
+
44
+    /**
45
+     * 是否root:0否1是
46
+     */
47
+    var root = 0
48
+
49
+    /**
50
+     * 平板ROM版本
51
+     */
52
+    var romVersion = ""
53
+
54
+    /**
55
+     * SIM序列号
56
+     */
57
+    var sim = ""
58
+
59
+    /**
60
+     * 总内存
61
+     */
62
+    var totalMemory = 0L
63
+
64
+    /**
65
+     * 已使用内存
66
+     */
67
+    var usedMemory = 0L
68
+
69
+    /**
70
+     * 学校id
71
+     */
72
+    var schoolid = 0
73
+
74
+    /**
75
+     * 区域id
76
+     */
77
+    var regionid = 0
78
+}

+ 26
- 0
app/src/main/java/com/xhly/manageapp/bean/log/PadLocationBean.kt Näytä tiedosto

@@ -0,0 +1,26 @@
1
+package com.xhly.manageapp.bean.log
2
+
3
+/**
4
+ * 上传设备位置
5
+ */
6
+class PadLocationBean {
7
+    /**
8
+     * 经度
9
+     */
10
+    var lon = 0
11
+
12
+    /**
13
+     * 维度
14
+     */
15
+    var lat = 0
16
+
17
+    /**
18
+     * 用户id
19
+     */
20
+    var userid = ""
21
+
22
+    /**
23
+     * 设备sn
24
+     */
25
+    var sn = ""
26
+}

+ 9
- 0
app/src/main/java/com/xhly/manageapp/bean/user/UserBean.kt Näytä tiedosto

@@ -0,0 +1,9 @@
1
+package com.xhly.manageapp.bean.user
2
+
3
+class UserBean {
4
+    var userid = 0
5
+    var schoolid = 0
6
+
7
+    //区域码
8
+    var regionid = 0
9
+}

+ 10
- 0
app/src/main/java/com/xhly/manageapp/network/UriAdress.kt Näytä tiedosto

@@ -25,4 +25,14 @@ object UriAdress {
25 25
      * 获得应用策略
26 26
      */
27 27
     const val APP_LISTPAD = "/stApp/list_pad"
28
+
29
+    /**
30
+     * 设备--地理位置添加
31
+     */
32
+    const val PADLOCATIONADD = "/userPosition/add"
33
+
34
+    /**
35
+     * 设备详情--添加和更新
36
+     */
37
+    const val PADDETAILADD = "/deviceDetail/add"
28 38
 }

+ 13
- 0
app/src/main/java/com/xhly/manageapp/network/log/LogService.kt Näytä tiedosto

@@ -1,7 +1,10 @@
1 1
 package com.xhly.manageapp.network.log
2 2
 
3
+import com.xhly.corelib.network.bean.ResponseData
3 4
 import com.xhly.manageapp.bean.log.LogAppStartBean
4 5
 import com.xhly.manageapp.bean.log.LogdOperateBean
6
+import com.xhly.manageapp.bean.log.PadInfoBean
7
+import com.xhly.manageapp.bean.log.PadLocationBean
5 8
 import com.xhly.manageapp.network.UriAdress
6 9
 import retrofit2.http.Body
7 10
 import retrofit2.http.POST
@@ -21,5 +24,15 @@ interface LogService {
21 24
     @POST(UriAdress.LOGAPPSTARTADD)
22 25
     suspend fun postLogAppStartAdd(@Body logApp: List<LogAppStartBean>)
23 26
 
27
+    /**
28
+     * 设备--地理位置日志
29
+     */
30
+    @POST(UriAdress.PADLOCATIONADD)
31
+    suspend fun postPadLocation(@Body padLocationBean: PadLocationBean)
24 32
 
33
+    /**
34
+     * 设备--详情日志
35
+     */
36
+    @POST(UriAdress.PADDETAILADD)
37
+    suspend fun postPadDetailAdd(@Body padInfoBean: PadInfoBean):ResponseData<Any?>
25 38
 }

+ 48
- 7
app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt Näytä tiedosto

@@ -8,6 +8,7 @@ import android.content.Context
8 8
 import android.content.Intent
9 9
 import android.content.IntentFilter
10 10
 import android.graphics.Color
11
+import android.os.Build
11 12
 import android.provider.Settings
12 13
 import android.view.View
13 14
 import android.widget.Button
@@ -26,8 +27,10 @@ import com.xhly.corelib.bean.AppInfo
26 27
 import com.xhly.corelib.eventbus.UIEvent
27 28
 import com.xhly.corelib.utils.AppUtils
28 29
 import com.xhly.corelib.utils.CustomOSUtils
30
+import com.xhly.corelib.utils.FileSizeUtils
29 31
 import com.xhly.corelib.utils.LogShow
30 32
 import com.xhly.corelib.utils.PhoneInfoUtils
33
+import com.xhly.corelib.utils.SystemUtil
31 34
 import com.xhly.manageapp.AppAdapter
32 35
 import com.xhly.manageapp.ManageApplication
33 36
 import com.xhly.manageapp.R
@@ -42,8 +45,10 @@ import com.xhly.manageapp.service.websocket.AppSocketService
42 45
 import com.xhly.manageapp.ui.ManageActivity
43 46
 import com.xhly.manageapp.ui.login.activity.LoginActivity
44 47
 import com.xhly.manageapp.ui.main.viewmodel.MainViewModel
48
+import com.xhly.manageapp.utils.PadInfoUtils
45 49
 import com.xhly.manageapp.utils.StrategyUtils
46 50
 import com.xhly.manageapp.workmanager.TimingWorker
51
+import java.util.Calendar
47 52
 import java.util.concurrent.TimeUnit
48 53
 
49 54
 
@@ -95,6 +100,12 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
95 100
             //存储app时间策略
96 101
             spUtils.saveJson(Const.APPSTRATEGYBEANKEY, it)
97 102
         }
103
+        viewModel.padInfoData.observe(this) {
104
+            //存储信息上传时间
105
+            if (it) {
106
+                spUtils.setParam(Const.PADINFOTIMEKEY, System.currentTimeMillis())
107
+            }
108
+        }
98 109
         startWorkManager()
99 110
     }
100 111
 
@@ -111,7 +122,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
111 122
             spUtils.setParam(Const.DISABLEPAD, false)
112 123
             useStrategy()
113 124
             if (mBinding.mainLlayout.visibility == View.GONE) {
114
-                Toast("当前不在可用时间。")
125
+                Toast(getString(R.string.apptimestoptips))
115 126
             }
116 127
         }
117 128
         onBackPressedDispatcher.addCallback {
@@ -126,6 +137,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
126 137
         viewModel.updateStrategy()
127 138
         viewModel.uploadAppStrategy()
128 139
         useStrategy()
140
+        updatePadInfo()
129 141
         try {
130 142
             var s =
131 143
                 "厂商" + CustomOSUtils.getSystemBrand() + ",型号" + CustomOSUtils.getSystemDevice() + ",系统版本" + CustomOSUtils.getSystemDisplay()
@@ -135,6 +147,38 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
135 147
         requestPermissionAndShotView()
136 148
     }
137 149
 
150
+    @SuppressLint("CheckResult")
151
+    private fun updatePadInfo() {
152
+        try {
153
+            //获得pad信息提交时间,如果为同一天则不在上传,不然继续上传
154
+            val padTime = spUtils.getParam(Const.PADINFOTIMEKEY, 0L) as Long
155
+            val instance = Calendar.getInstance()
156
+            val currentYear = instance.get(Calendar.YEAR)
157
+            val currentDay = instance.get(Calendar.DAY_OF_YEAR)
158
+            instance.timeInMillis = padTime
159
+            val year = instance.get(Calendar.YEAR)
160
+            val day = instance.get(Calendar.DAY_OF_YEAR)
161
+            val rxPermissions = RxPermissions(this)
162
+            val request = rxPermissions.request(Manifest.permission.READ_PHONE_STATE)
163
+            //权限通过不通过都要执行
164
+            request.subscribe({ granted: Boolean ->
165
+                var iccid =""
166
+                if (granted){
167
+                     iccid = SystemUtil.getICCID(this)
168
+                }
169
+                if (!(currentYear == year && currentDay == day)) {
170
+                    viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this,iccid))
171
+                }
172
+            }, {
173
+                if (!(currentYear == year && currentDay == day)) {
174
+                    viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this,""))
175
+                }
176
+            })
177
+        } catch (e: Exception) {
178
+
179
+        }
180
+    }
181
+
138 182
     private fun useStrategy() {
139 183
         //获得sputils中的数据设置状态,以及策略
140 184
         try {
@@ -402,18 +446,15 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
402 446
      */
403 447
     @SuppressLint("CheckResult")
404 448
     private fun requestPermissionAndShotView() {
405
-        val phoneInfoUtils = PhoneInfoUtils(this)
406
-
407 449
         var iccid = ""
408 450
         val rxPermissions = RxPermissions(this)
409 451
         var request = rxPermissions.request(Manifest.permission.READ_PHONE_STATE)
410 452
         request.subscribe({ granted: Boolean ->
411 453
             if (granted) {
412
-                iccid = phoneInfoUtils.iccid
413
-                LogShow("手机信息" + iccid + "||" + iccid)
454
+
414 455
             }
415 456
         }, {
416
-            LogShow("手机信息失败了" + it.message)
457
+
417 458
         })
418 459
     }
419 460
 
@@ -422,7 +463,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
422 463
         WorkManager.getInstance(this).cancelAllWork()
423 464
         // 周期性任务时间最少15分钟 所以除以实际周期的时间  看需要加入几个任务
424 465
         val taskList = arrayListOf(5, 10)
425
-        for (taskNo in 1..10) {
466
+        for (taskNo in taskList) {
426 467
             val request = PeriodicWorkRequest
427 468
                 // 最少15分钟 PeriodicWorkRequest
428 469
                 .Builder(TimingWorker::class.java, 15, TimeUnit.MINUTES)

+ 13
- 1
app/src/main/java/com/xhly/manageapp/ui/main/viewmodel/MainViewModel.kt Näytä tiedosto

@@ -4,9 +4,11 @@ import androidx.lifecycle.LiveData
4 4
 import androidx.lifecycle.MutableLiveData
5 5
 import com.xhly.corelib.base.viewmodel.CommonBaseViewModel
6 6
 import com.xhly.corelib.network.RetrofitService
7
+import com.xhly.corelib.network.bean.ResponseData
7 8
 import com.xhly.manageapp.bean.AppModel
8 9
 import com.xhly.manageapp.bean.ListAppBean
9 10
 import com.xhly.manageapp.bean.log.LogdOperateBean
11
+import com.xhly.manageapp.bean.log.PadInfoBean
10 12
 import com.xhly.manageapp.bean.strategy.AppTimeManageBean
11 13
 import com.xhly.manageapp.bean.strategy.StrategyBean
12 14
 import com.xhly.manageapp.network.app.AppService
@@ -23,6 +25,8 @@ class MainViewModel : CommonBaseViewModel() {
23 25
     val strategyData: LiveData<StrategyBean> = strategy
24 26
     private val appStrategy = MutableLiveData<ArrayList<AppTimeManageBean>>()
25 27
     val appStrategyData: LiveData<ArrayList<AppTimeManageBean>> = appStrategy
28
+    private val padInfo=MutableLiveData<Boolean>()
29
+    val padInfoData:LiveData<Boolean> =padInfo
26 30
     fun getAppList() {
27 31
         launchUI {
28 32
             val postListApp = appService.postListApp(ListAppBean())
@@ -62,7 +66,6 @@ class MainViewModel : CommonBaseViewModel() {
62 66
     }
63 67
 
64 68
     fun uploadAppStrategy() {
65
-
66 69
         launchUI {
67 70
             val postAppListPad = strategyService.postAppListPad()
68 71
             if (postAppListPad.code == 0) {
@@ -78,4 +81,13 @@ class MainViewModel : CommonBaseViewModel() {
78 81
             }
79 82
         }
80 83
     }
84
+
85
+    fun updatePadInfo(padInfoBean: PadInfoBean){
86
+        launchUI {
87
+            var anyResponseData = logService.postPadDetailAdd(padInfoBean)
88
+            if (anyResponseData.code==0){
89
+                padInfo.value=true
90
+            }
91
+        }
92
+    }
81 93
 }

+ 44
- 0
app/src/main/java/com/xhly/manageapp/utils/PadInfoUtils.kt Näytä tiedosto

@@ -0,0 +1,44 @@
1
+package com.xhly.manageapp.utils
2
+
3
+import android.content.Context
4
+import android.os.Build
5
+import com.xhly.corelib.Const
6
+import com.xhly.corelib.utils.FileSizeUtils
7
+import com.xhly.corelib.utils.SharedPreferencesUtils
8
+import com.xhly.corelib.utils.SystemUtil
9
+import com.xhly.manageapp.ManageApplication
10
+import com.xhly.manageapp.bean.log.PadInfoBean
11
+import com.xhly.manageapp.bean.user.UserBean
12
+
13
+class PadInfoUtils {
14
+
15
+    fun getPadInfo(context: Context,simIccID:String):PadInfoBean{
16
+        val spUtils by lazy { SharedPreferencesUtils.getInstance(context) }
17
+        //val json= spUtils.getFromJson(Const.USERINFO, UserBean().javaClass)
18
+        val json=UserBean()
19
+        json.userid=1
20
+        json.schoolid=1
21
+        json.regionid=1
22
+        val padInfoBean = PadInfoBean()
23
+        json?.let {
24
+            val userBean = it as UserBean
25
+            padInfoBean.userid=userBean.userid
26
+            padInfoBean.schoolid=userBean.schoolid
27
+            ManageApplication.getDeviceInfo()?.let {sn->
28
+                padInfoBean.sn=sn
29
+            }
30
+            padInfoBean.deviceModel= Build.DEVICE
31
+            padInfoBean.deviceVersion=Build.VERSION.CODENAME
32
+            padInfoBean.wifyMac=SystemUtil.getWifiMac(context)
33
+            padInfoBean.blueMac=SystemUtil.getBluetoothMac()
34
+            padInfoBean.sysKernel=SystemUtil.getKernelVersion()
35
+            padInfoBean.deviceName=Build.DEVICE
36
+            padInfoBean.root=if (SystemUtil.isSuEnable()) 1 else 0
37
+            padInfoBean.romVersion=Build.DISPLAY
38
+            padInfoBean.sim=simIccID
39
+            padInfoBean.totalMemory=FileSizeUtils.getTotalSpace(context)
40
+            padInfoBean.usedMemory=FileSizeUtils.getFreeSpace(context)
41
+        }
42
+        return padInfoBean
43
+    }
44
+}

+ 11
- 4
app/src/main/java/com/xhly/manageapp/workmanager/TimingWorker.kt Näytä tiedosto

@@ -6,9 +6,10 @@ import android.content.Context
6 6
 import androidx.appcompat.app.AppCompatActivity
7 7
 import androidx.work.Worker
8 8
 import androidx.work.WorkerParameters
9
+import com.xhly.corelib.Const
9 10
 import com.xhly.corelib.network.RetrofitService
10 11
 import com.xhly.corelib.utils.AppUtils
11
-import com.xhly.corelib.utils.LogShow
12
+import com.xhly.corelib.utils.SharedPreferencesUtils
12 13
 import com.xhly.corelib.utils.toFormat
13 14
 import com.xhly.manageapp.ManageApplication
14 15
 import com.xhly.manageapp.bean.log.LogAppStartBean
@@ -25,6 +26,10 @@ import java.util.Calendar
25 26
 class TimingWorker(context: Context, workerParams: WorkerParameters) :
26 27
     Worker(context, workerParams) {
27 28
     private val serviceScope = CoroutineScope(MainScope().coroutineContext)
29
+    private val spUtils by lazy {
30
+        SharedPreferencesUtils.getInstance(context)
31
+    }
32
+
28 33
     override fun doWork(): Result {
29 34
         val result: Result = Result.success()
30 35
         val logService = RetrofitService.create<LogService>()
@@ -33,6 +38,8 @@ class TimingWorker(context: Context, workerParams: WorkerParameters) :
33 38
             if (appInfo.size > 0) {
34 39
                 logService.postLogAppStartAdd(appInfo)
35 40
             }
41
+
42
+
36 43
         }
37 44
         return result
38 45
     }
@@ -46,7 +53,7 @@ class TimingWorker(context: Context, workerParams: WorkerParameters) :
46 53
         val usageManager =
47 54
             applicationContext.getSystemService(AppCompatActivity.USAGE_STATS_SERVICE) as UsageStatsManager
48 55
         val startList = arrayListOf<LogAppStartBean>()
49
-        var sn = ManageApplication.getDeviceInfo()
56
+        val sn = ManageApplication.getDeviceInfo()
50 57
         if (usageManager != null) {
51 58
             val endTime = System.currentTimeMillis()
52 59
             val startTime = timeInMillis
@@ -63,7 +70,7 @@ class TimingWorker(context: Context, workerParams: WorkerParameters) :
63 70
                             dataList.firstOrNull { event.packageName.equals(it.packageName) }
64 71
                         first?.let {
65 72
                             sn?.let {
66
-                                appStartBean.sn=sn
73
+                                appStartBean.sn = sn
67 74
                             }
68 75
                             appStartBean.appName = first.name
69 76
                             appStartBean.appPackage = first.packageName
@@ -81,7 +88,7 @@ class TimingWorker(context: Context, workerParams: WorkerParameters) :
81 88
                             dataList.firstOrNull { event.packageName.equals(it.packageName) }
82 89
                         first?.let {
83 90
                             sn?.let {
84
-                                appStartBean.sn=sn
91
+                                appStartBean.sn = sn
85 92
                             }
86 93
                             appStartBean.appName = first.name
87 94
                             appStartBean.appPackage = first.packageName

+ 12
- 4
corelib/src/main/java/com/xhly/corelib/Const.kt Näytä tiedosto

@@ -1,7 +1,5 @@
1 1
 package com.xhly.corelib
2 2
 
3
-import android.bluetooth.BluetoothManager
4
-
5 3
 
6 4
 object Const {
7 5
     const val isDebug = true
@@ -78,18 +76,28 @@ object Const {
78 76
 
79 77
     //标记蓝牙打开
80 78
     const val BLUETOOTHOPEN = "BLUETOOTHOPEN"
79
+
81 80
     //标记USB连接电脑
82
-    const val USB_CONNECTED="USB_CONNECTED"
81
+    const val USB_CONNECTED = "USB_CONNECTED"
82
+
83 83
     //标记USB拔出电脑
84
-    const val USB_NOCONNECTED="USB_NOCONNECTED"
84
+    const val USB_NOCONNECTED = "USB_NOCONNECTED"
85
+
85 86
     //标记更新策略
86 87
     const val UPDATESTRATEGY = "UPDATESTRATEGY"
87 88
 
88 89
     //存储平板策略
89 90
     const val STRATEGYBEANKEY = "STRATEGYBEAN"
91
+
90 92
     //存储app时间策略
91 93
     const val APPSTRATEGYBEANKEY = "APPSTRATEGYBEAN"
92 94
 
95
+    //存储pad信息提交时间,如果为同一天则不在上传,不然继续上传
96
+    const val PADINFOTIMEKEY = "PADINFOTIMEKEY"
97
+
98
+    //存储用户信息
99
+    const val USERINFO = "USERINFO"
100
+
93 101
     //记录设备策略名称
94 102
     const val DEVICETYPE1 = "摄像头"
95 103
     const val DEVICETYPE2 = "蓝牙"

+ 32
- 3
corelib/src/main/java/com/xhly/corelib/utils/SystemUtil.java Näytä tiedosto

@@ -1,6 +1,9 @@
1 1
 package com.xhly.corelib.utils;
2 2
 
3
+import android.bluetooth.BluetoothAdapter;
3 4
 import android.content.Context;
5
+import android.net.wifi.WifiInfo;
6
+import android.net.wifi.WifiManager;
4 7
 import android.os.Build;
5 8
 import android.telephony.SubscriptionInfo;
6 9
 import android.telephony.SubscriptionManager;
@@ -132,7 +135,7 @@ public class SystemUtil {
132 135
 
133 136
 
134 137
     /**
135
-     * 是否存在su命令,并且有执行权限
138
+     * 是否存在su命令,并且有执行权限 判断是否root
136 139
      *
137 140
      * @return 存在su命令,并且有执行权限返回true
138 141
      */
@@ -179,22 +182,48 @@ public class SystemUtil {
179 182
                     String iccId1 = si1.getIccId();
180 183
                     String phoneNum1 = si1.getNumber();
181 184
                     iccid=iccId1;
185
+                    LogUtils.d("获得手机信息","问题是mei偶222尔与哦是的"+phoneNum1);
182 186
                 }
183 187
                 if (sis.size() >= 2) {
184 188
                     SubscriptionInfo si2 = sis.get(1);
185 189
                     String iccId2 = si2.getIccId();
186 190
                     String phoneNum2 = si2.getNumber();
187 191
                     iccid=iccId2;
192
+                    LogUtils.d("获得手机信息","问题是mei偶尔与哦是的"+si2.toString());
188 193
                 }
189 194
                 // 获取SIM卡数量相关信息:
190 195
                 int count = sm.getActiveSubscriptionInfoCount();//当前实际插卡数量
191 196
                 int max = sm.getActiveSubscriptionInfoCountMax();//当前卡槽数量
192 197
             }
193 198
         }catch (Exception e){
194
-
199
+           LogUtils.d("获得手机信息","问题是"+e.toString());
195 200
         }
196 201
         return iccid;
197 202
     }
198 203
 
199
-
204
+   public static String getWifiMac(Context context){
205
+        String wifiMac="";
206
+        try {
207
+            WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
208
+            WifiInfo connectionInfo = wifiManager.getConnectionInfo();
209
+            wifiMac = connectionInfo.getMacAddress();
210
+        }catch (Exception e){
211
+            LogUtils.d("获得手机信息","wifi问题是"+e.toString());
212
+        }
213
+        return wifiMac;
214
+   }
215
+
216
+   public static String getBluetoothMac(){
217
+       String bMac="";
218
+       try{
219
+           BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter();
220
+          /* if (defaultAdapter.isEnabled()){
221
+               bMac= defaultAdapter.getAddress();
222
+           }*/
223
+           bMac= defaultAdapter.getAddress();
224
+       }catch (Exception e){
225
+           LogUtils.d("获得手机信息","bluetooth问题是"+e.toString());
226
+       }
227
+       return bMac;
228
+   }
200 229
 }

Loading…
Peruuta
Tallenna