From 057c38655610c2721a75c123ddc63d98039cb2ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=87=91=E5=8D=8E?= <1533761530@qq.com> Date: Wed, 13 Dec 2023 15:43:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E4=B8=8A=E4=BC=A0=E5=91=A8=E6=9C=9F=EF=BC=8C=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=98=AF=E4=B8=80=E5=A4=A9=E4=BC=A0=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executionHistory/executionHistory.bin | Bin 11948056 -> 11948056 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/5.6.4/fileHashes/fileHashes.bin | Bin 1026385 -> 1026785 bytes .gradle/5.6.4/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../5.6.4/fileHashes/resourceHashesCache.bin | Bin 108465 -> 109825 bytes .gradle/5.6.4/javaCompile/classAnalysis.bin | Bin 2079308 -> 2111177 bytes .gradle/5.6.4/javaCompile/jarAnalysis.bin | Bin 1275880 -> 1312420 bytes .gradle/5.6.4/javaCompile/javaCompile.lock | Bin 17 -> 17 bytes .gradle/5.6.4/javaCompile/taskHistory.bin | Bin 205698 -> 205698 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .idea/compiler.xml | 2 +- .idea/misc.xml | 2 +- app/build.gradle | 1 + .../trans88/taxiappkotlin/Configurations.java | 12 ++ .../java/cn/trans88/taxiappkotlin/TaxiApp.kt | 2 + .../logic/model/LogInterval.java | 37 ++++++ .../logic/model/LogIntervalResponse.java | 19 +++ .../taxiappkotlin/logic/network/ConnManger.kt | 26 ++++- .../logic/network/ProcessingCommands.kt | 108 ++++++++++-------- .../taxiappkotlin/ui/play/PlayActivity.kt | 35 ++++-- local.properties | 2 +- 21 files changed, 184 insertions(+), 62 deletions(-) create mode 100644 app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogInterval.java create mode 100644 app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogIntervalResponse.java diff --git a/.gradle/5.6.4/executionHistory/executionHistory.bin b/.gradle/5.6.4/executionHistory/executionHistory.bin index feb11e53641069b4fd2acc2ca349c6754963e873..2c76f8cbe0f4dd0cfbaea30c1263a52225cdd1cb 100644 GIT binary patch delta 14826 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 WYLPl*KXL#$h#aE7wmZDU{Qm&L1;KRy delta 28451 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 diff --git a/.gradle/5.6.4/executionHistory/executionHistory.lock b/.gradle/5.6.4/executionHistory/executionHistory.lock index 8cbee94fdc5981b42e1a0a6c83aaeacdb999e854..c83594c29fe66f7c06f4826d1f67248a5d7745d3 100644 GIT binary patch literal 17 VcmZSXbm*VmF!SgX1~6cI4gfZ>1y%q6 literal 17 VcmZSXbm*VmF!SgX1~6bd0suCS1v3Bu diff --git a/.gradle/5.6.4/fileHashes/fileHashes.bin b/.gradle/5.6.4/fileHashes/fileHashes.bin index 188ce207ee0287988b2516030e74cdc50e548d9e..cc82d5582d0be6aa233621a2f1ad79d590ee769f 100644 GIT binary patch delta 14529 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 delta 13839 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 literal 17 VcmZR6|Ig7Y=YZ%F1~6z80RTLr1vUTx diff --git a/.gradle/5.6.4/fileHashes/resourceHashesCache.bin b/.gradle/5.6.4/fileHashes/resourceHashesCache.bin index b809d08d7e14f2f3897827b8b3805a57534f591a..085651c9ff8c34ccc79c1629427f72de82dd043b 100644 GIT binary patch delta 1069 zcmX}qdrVVT90zcJ_ZBD%_T1T#forLifnc)&qte63&GDK?XBLY!2T?kGy8{#nMy7R|P?kC^-{hfQy z^<0Ux1S8wEaiGDvxE4UW%J&*`$6{tZUtss*p7>>eVlxxdqdJWgU03k*+(`x{rmeai zwZ4X;{jM;kRHNbq+sZTL+o`#0@U$`&kUg((QDa9AMQ1Els#2p6N%O*&bIK?>>V(YX zwMe!5r-#=RoM=4$DmfrQ6@Hg@bmLBnb~9e7xy+(Cd9( zJc`@=GoPU>J#z0>eTVq?py2IQqaSQ7wPxdAqWyzMdP`X}*aeyk84tw9v)IsQV$jd^ z!ICzUkD_~n&@f;?s(TIOafzIoV+wl*EG$~m87w+IHcrvriVatJ2Hi~BIF%76ZpeKL z*ZkpN(Ck6~be-!dO*#v4{O}hHldvC0+>pKpIwDJh1{P)gTY2p@iG+q+Nu=p*Xkn3V zXpg0&LPgbm*qW>d4=PYtQ*>3V*ms8v=)n?=7S5Yeta!Xy)Gm^{3<{%=ng8B%?#~-y z?E%u15BmWHNX9#<(HT@70bDx40ZA@^O~5FlJ!+|(%r!zcz?&pwf@sNtx{2{^jkZym zw;P^`%X|9i!$=PZQ@19?*H;*7?WsH@;^d18-)R3g zi6c7`s5|vUxdpCEx$EKa*Y_Prilyv`AP;uH%-?ch{nEuv6AP)@-xng5&f{)BDN2ns zlNYD6l_)D==5RL;zvAnux-ZVlvzn_xjVz}Wo=-pSqv*awzN?1w5sbp*QMb#jGp}4} zZ8t*p|CjlsrWvZ>`Tcy-+6Z&x);bl)grYq(!%4Nf&wn0s>1B!RPS#{XeK(#A_W^gp z6w-zd3LEOf;a@bXzJ6B-Y~IDCsfttj2Om}QL(Y@U`JXHyAOk0GWybtzzW2zl$F;Vb O-{$`PqczY72mb>f{cpqo delta 341 zcmX|-O(?^09EW}W|Jm$d2gKjT-tux$-v8T0StQFvT-brREH@F_q?nR&(AH1=xFCnM zx!8Qmx3pMX=AadMNn9MH9h{wni_25b;ki7~XJe*dOm}H;Q@6GYdaw0@blZm_bh}0& zyA!nMaGJzJ(;(^1c>`6q9XA+lz7jO1WO)ctnFt|CdtGlE&_y)sr?+ex;^;g_ zYZsa-PA+2(`ThROR)@TFr_F)J7C@&YKbMb!$0m{7Trr441u5>q7qE8VU?oM7u_Na@;n$Cp`!U>J7b&v zLi?;aB>Z*&=8aNr2v@{xl3p*J+(k1DQAX-4rkn${TahUTkAn|ek(u-kYJ#FZvseew z+&jUIf%&A~L9>eP&JHB!DFMq4`IAAEhVhGpUn2gos~ZmB;a&A%QsG% z3?g3#L)J6FEIW}^o|nUnX{67w0Cbk-Wk|eopv)&Hp=69`X%Nh@Hm?$*7}kBAq(nO? zGv~12u;j4fu;vhQh&V8Z7zSlDe={0}M+fKxgm3&TYxPa?AyePhLRcZ)&tTW|T_Zbo z9w)Y42u>&HB^Fo(s>J@HwZ!%|!-g7~JJ#@`t|mHnAF=nG*sglI1GgA^^IMPRO-Pmf zZFZlYler5cJ8wvK5y_tpVW;V9NE2UX_-T1f7J2_{_`Au`(v@H%@V$GCq}AT6q=Bx( zoBd@Y*_I_l3akpNgZ$um16_;oLpCioV*z=heAiky7VHPzXXuMOyin<=^WGRhCU_Fc z7Bk$w9aywQ|PwyNf2$ zDzhZGx{1l;2pHPVxCyZOpOX$H+enFu3IoAz#=;s`g$&PjXqvo%uBRX< zU@G`{D?M_xvQ|x2NA$VN(}fOVHi_t z`uLvtuvW+9@lg|NtYAX$!#^T#m9Du;mUZrPc4j4$gO8oVE~TAIi5wL{MI}=~;Wdd6 zacF-ov3(jgq?()GzuvvIDm9+Se`6rCnz5(wR|%RkylrI@R^^induo_QA=Y_Xf8q92 zN3xw`;MdF?;A1v$S!h-%kJwflFq~%$6izB{-l^0#5Id%Y%yuSLNV(P3siVzc>?U(K z4IP0);gWu&srLvjKKQE*i5d&upLkq-=(W8Kl0(G5Y=P7WNv1hI+P@^Aq(pObXmwc<4jT?zjwu{=98wN@4jG37hnz#f z;Rw1ctDVl0xB9e{6#tiW0vZ1S$DQwC%+23qV zt=%*_JZ0Vcr7exyn3|Hzs_#3xLh>p_ks0e0<)C7tZ50-R$qcKO%QWCAcktv>B2BrP zrVyyc?59{knN~R>V1L;npU+B#%EhoRUm0r)zt`J`^1$V_{3ag^Cza=UuvANl5G?nX MB_a@;E1ZP?0br9sj{pDw delta 566 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 delta 113 zcmZ3|8}Q=2?*1v~%% literal 17 VcmZSn7OHdqVTGSJ0~qkF1OPaK1p@#8 diff --git a/.gradle/5.6.4/javaCompile/taskHistory.bin b/.gradle/5.6.4/javaCompile/taskHistory.bin index 97131a8ac4c3215efb820add215171d1a6c96a6e..5aed186e5f2f5234bb27c5aebdea6789c4521ea1 100644 GIT binary patch delta 52 zcmV-40L%Y^#|(nU41k0IgaWh!+#(T}zl|lGK8hznFB0j1nhGfAlaXXNmkh%K7?*#- K0uq-`BLg!fE)$vn delta 52 zcmV-40L%Y^#|(nU41k0IgaWh!+#(T|=ZBe=;>x}bbe)DM&;HTplaXXNmkh%K7?*#- K0uq-`BLg#uzZX{k diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index b7bc00642e7a4d6a885a66c81c729cb00fe6742f..39b956672af715f9ddf7064b718eb9f650acc367 100644 GIT binary patch literal 17 UcmZQBkMusOlXEA40Sq*Z04<~h0ssI2 literal 17 UcmZQBkMusOlXEA40Sq*F0WE(6-2eap diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 61a9130..fb7f4a8 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 87da9c4..bc01c18 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -9,7 +9,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 889db35..75ddc44 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -60,6 +60,7 @@ android { 26.3.9.96 播放时长为广告素材的播放时长 26.3.9.98 记录taxiApp当天的运行时间 26.3.9.99 优化日志上传,改为一天只传一次昨天的播放记录。 + 优化定点广告频繁切换会出现黑屏问题 **/ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java b/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java index bea5694..4db2404 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java +++ b/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java @@ -418,6 +418,18 @@ public class Configurations { context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putLong("firstRunTime", runTime).apply(); } + /** + * 日志概要上传的周期,默认一天传一次,单位分钟 + * @return + */ + public int logInterval(){ + return context.getSharedPreferences("config", Context.MODE_PRIVATE).getInt("logInterval", 0); + } + + public void logIntervalSave(int x){ + context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putInt("screenSizeX", x).apply(); + } + } diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt b/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt index dba1b16..fa76df5 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt @@ -68,6 +68,8 @@ class TaxiApp:Application() { var gpsTimer: Timer? = null //播放日志定时器 var playerLogTimer: Timer? = null + //播放日志摘要定时器 + var playerLogSummaryTimer: Timer? = null var testCount = 0 val TAG = "TaxiApp" diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogInterval.java b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogInterval.java new file mode 100644 index 0000000..6e11b6d --- /dev/null +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogInterval.java @@ -0,0 +1,37 @@ +package cn.trans88.taxiappkotlin.logic.model; + +/** + * @Author: LJH + * @Time: 2023/12/13 + * @description: + */ +public class LogInterval { + + private String id; + private String task_id; + private int interval; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTask_id() { + return task_id; + } + + public void setTask_id(String task_id) { + this.task_id = task_id; + } + + public int getInterval() { + return interval; + } + + public void setInterval(int interval) { + this.interval = interval; + } +} diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogIntervalResponse.java b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogIntervalResponse.java new file mode 100644 index 0000000..3b8e0a6 --- /dev/null +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/LogIntervalResponse.java @@ -0,0 +1,19 @@ +package cn.trans88.taxiappkotlin.logic.model; + +/** + * @Author: LJH + * @Time: 2023/12/13 + * @description: + */ +public class LogIntervalResponse extends SanleResponse{ + + private int interval; + + public int getInterval() { + return interval; + } + + public void setInterval(int interval) { + this.interval = interval; + } +} diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt index 970eacc..2132145 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt @@ -730,6 +730,7 @@ object ConnManger { it.cancel() it.purge() } + logsSummaryTimer = null logsSummaryTimer = Timer() logsSummaryTimer?.schedule(object :TimerTask(){ override fun run() { @@ -750,6 +751,7 @@ object ConnManger { it.cancel() it.purge() } + logsSummaryTimer = null logsSummaryTimer = Timer() logsSummaryTimer?.schedule(object :TimerTask(){ override fun run() { @@ -784,7 +786,7 @@ object ConnManger { logsGroup.keys.forEach { val adId = it logsGroup.get(it)?.let { playLoggers -> - val beginPlayTime = playLoggers.map { it.begin_play_ts }.min() ?: 0L + val beginPlayTime = playLoggers.map { it.begin_play_ts }.filter { it > 1702192270 }.min() ?: 0L val endPlayTime = playLoggers.map { it.end_play_ts }.max() ?: 0L val playNums = playLoggers.size val playLogger = playLoggers.get(0) @@ -890,6 +892,28 @@ object ConnManger { } } + /** + * 定时发送播放日志摘要 + */ + fun sendLogSummaryByInterval(interval:Int) { + taxiApp.playerLogSummaryTimer?.let { + it.cancel() + it.purge() + } + //if (Settings.loggerSwitch) { + taxiApp.playerLogSummaryTimer = Timer() + taxiApp.playerLogSummaryTimer?.schedule(object :TimerTask(){ + override fun run() { + val playLoggers = DaoUtil.getPlayLoggers() + "定时上传日志摘要,playLoggers size: ${playLoggers.size}".logd() + val requestJson = getLogSummaryJson(playLoggers) + if (requestJson.isNotEmpty() && logsSummaryTimer == null){ + sendLogsSummaryToWeb(requestJson) + } + } + },interval*60*1000L,interval*60*1000L) + } + /** * 发送运行日志 */ diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt index 081dcc4..a06f2d3 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt @@ -84,6 +84,9 @@ object ProcessingCommands { "update_gps_log_switch" -> gpsSwitch(task,baseTask.type) //获取播放日志开关状态 "get_player_log_state" -> getLoggerSwitch(task,baseTask.type) + //设置日志上传间隔 + "set_log_interval" -> setLogInterval(task,baseTask.type) + "get_log_interval" -> getLogInterval(task,baseTask.type) //获取gps日志开关状态 "get_gps_state" -> getGpsSwitch(task,baseTask.type) "get_today_runtime" -> getTodayRuntime(task,baseTask.type) @@ -176,6 +179,26 @@ object ProcessingCommands { sanleResponse.turn_on = turn_on val response = gson.toJson(sanleResponse) send(response) + + //测试日志上传 + ConnManger.sendLogsSummary() + } + + /** + * 获取日志上传间隔 + */ + private fun getLogInterval(task: String, type: String) { + val baseResponse = gson.fromJson(task) + val intervalResponse = LogIntervalResponse() + val interval = Configurations.config(TaxiApp.instance()).logInterval() + "getLogInterval-->日志上传间隔:$interval".logd() + + intervalResponse.type = type + intervalResponse.id = baseResponse.id + intervalResponse.task_id = baseResponse.task_id + intervalResponse.interval = interval + val response = gson.toJson(intervalResponse) + send(response) } /** @@ -195,24 +218,24 @@ object ProcessingCommands { send(response) //debug - val lat2 = 22.665534200203726 - val lon2 = 113.91975187778473 - val lat3 = 23.665534200203726 - val lon3 = 114.91975187778473 - var isRun = true - Timer().schedule(object :TimerTask(){ - override fun run() { - if (isRun){ - "进圈".loge() - taxiApp.activity?.getViewModel()?.onLocationChanged(lon2,lat2,2.0f,66.0f,1) - isRun = false - } else { - "出圈".loge() - taxiApp.activity?.getViewModel()?.onLocationChanged(lon3,lat3,2.0f,66.0f,1) - isRun = true - } - } - },0,3000L) +// val lat2 = 22.665534200203726 +// val lon2 = 113.91975187778473 +// val lat3 = 23.665534200203726 +// val lon3 = 114.91975187778473 +// var isRun = true +// Timer().schedule(object :TimerTask(){ +// override fun run() { +// if (isRun){ +// "进圈".loge() +// taxiApp.activity?.getViewModel()?.onLocationChanged(lon2,lat2,2.0f,66.0f,1) +// isRun = false +// } else { +// "出圈".loge() +// taxiApp.activity?.getViewModel()?.onLocationChanged(lon3,lat3,2.0f,66.0f,1) +// isRun = true +// } +// } +// },0,3000L) } /** @@ -257,6 +280,25 @@ object ProcessingCommands { send(response) } + /** + * 设置日志上传周期 + */ + private fun setLogInterval(task: String, type: String) { + val baseResponse = gson.fromJson(task) + val loggerInterval = gson.fromJson(task) + "设置上传日志周期:${loggerInterval.interval}".logd() + //edit by yzd @20211201 + //Settings.loggerSwitch = loggerSwitch.isTurn_on + Configurations.config(TaxiApp.instance()).loggerSwitchSave(true) + if (loggerInterval.interval>0){ + ConnManger.sendLogSummaryByInterval(loggerInterval.interval) + } + + baseResponse.type = type + val response = gson.toJson(baseResponse) + send(response) + } + /** * 心跳应答检测 */ @@ -302,7 +344,7 @@ object ProcessingCommands { orderModel.task_id = baseResponse.task_id orderModel.id = baseResponse.id orderModel.type = type - orderModel.advertise_order =orderList + orderModel.advertise_order = orderList val response = gson.toJson(orderModel) @@ -385,33 +427,6 @@ object ProcessingCommands { private fun clearAdvertiseOrder(task: String, type: String?) { val advertiseOrder = gson.fromJson(task) "clearAdvertiseOrder".logd() - //日志存卡里 -// taxiApp.saveLog("收到了清空排序指令...") - //Settings.advertiseOrder = "" - //edit by ljh @2023/8/9/1 - //三分钟内收到两次清除排序才会清除排序,防止排序被清除 -// taxiApp.isDoubleClearOrder += 1 -// if(taxiApp.isDoubleClearOrder < 2){ -// "没有点击两次清空排序,开始计时三分钟".logd() -// taxiApp.clearOrderTimer.schedule(object :TimerTask(){ -// override fun run() { -// try { -// taxiApp.isDoubleClearOrder = 0 -// "三分钟时间到,isDoubleClearOrder重置".logd() -// } catch (e:java.lang.Exception){ -// e.printStackTrace() -// } -// } -// },3*60*1000L) -// } else { -// "点击了两次清空排序,取消三分钟计时并清空排序".logd() -// taxiApp.clearOrderTimer.cancel() -// taxiApp.clearOrderTimer.purge() -// taxiApp.clearOrderTimer = Timer() -// Configurations.config(TaxiApp.instance()).advertiseOrderSave("") -// taxiApp.isDoubleClearOrder = 0 -// RefreshPlayer.refresh() -// } //edit by ljh @2023/8/22 // taxiApp.saveLog("clearAdvertiseOrder,清除了广告排序") @@ -427,7 +442,6 @@ object ProcessingCommands { RefreshPlayer.refresh() - } /** diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt index bebd575..21c818d 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt @@ -214,6 +214,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen configurations.logSummaryJsonStringSave("") Thread(Runnable { clearOverdueLogger() }).start() isSendedLog = false + sendLogInterval() "startRunTime,endRunTime初始化为:$currentTime".loge() configurations.startRunTimeSave(currentTime) configurations.endRunTimeSave(currentTime) @@ -223,16 +224,18 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen startRuntimeTimer() } DayType.IS_SAME_DAY.ordinal -> {//同一天重启 - //测试日志上传 - ConnManger.sendLogsSummary() + isSendedLog = false -// val logSummaryJson = configurations.logSummaryJsonString() -// if (!logSummaryJson.isNullOrEmpty()){ -// "同一天重启,之前的日志数据没传,重新上传".loge() -// ConnManger.sendLogsSummary() -// } else { -// isSendedLog = false -// } + val logSummaryJson = configurations.logSummaryJsonString() + if (!logSummaryJson.isNullOrEmpty()){ + "同一天重启,之前的日志数据没传,重新上传".loge() + ConnManger.sendLogsSummary() + } else { + isSendedLog = false + } + + sendLogInterval() + //先计算上次重启前的运行时间 val lastSumTime = configurations.sumRunTime() val lastStartRuntime = configurations.startRunTime() @@ -258,7 +261,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen } DayType.IS_SECOND_DAY.ordinal -> { ConnManger.sendLogsSummary() - + sendLogInterval() //先计算上次重启前的运行时间 val lastSumTime = configurations.sumRunTime() val lastStartRuntime = configurations.startRunTime() @@ -285,6 +288,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen configurations.endRunTimeSave(currentTime) configurations.firstRunTimeSave(currentTime) configurations.sumRunTimeSave(0L) + sendLogInterval() } } } else { @@ -297,8 +301,17 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen },30*1000L,30*1000L) } } + } - + /** + * 定时传日志摘要 + */ + private fun sendLogInterval(){ + val logInterval = configurations.logInterval() + "logInterval:$logInterval".logd() + if (logInterval > 0){ + ConnManger.sendLogSummaryByInterval(logInterval) + } } /** diff --git a/local.properties b/local.properties index e020d37..5a03523 100644 --- a/local.properties +++ b/local.properties @@ -4,5 +4,5 @@ # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. -#Sat Dec 02 11:15:51 GMT+08:00 2023 +#Wed Dec 13 15:22:24 GMT+08:00 2023 sdk.dir=D\:\\Android\\sdk