优化定点广告切换黑屏问题

This commit is contained in:
刘金华 2023-12-12 16:29:08 +08:00
parent 0f9e99fb8c
commit 71c6f658fd
34 changed files with 345 additions and 94 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" /> <bytecodeTargetLevel target="1.8" />
</component> </component>
</project> </project>

View File

@ -16,6 +16,9 @@
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad67766727e8b516aa8b11db6408390f/jetified-debug-db-base-1.0.6/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad67766727e8b516aa8b11db6408390f/jetified-debug-db-base-1.0.6/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad67766727e8b516aa8b11db6408390f/jetified-debug-db-base-1.0.6/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad67766727e8b516aa8b11db6408390f/jetified-debug-db-base-1.0.6/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad67766727e8b516aa8b11db6408390f/jetified-debug-db-base-1.0.6/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad67766727e8b516aa8b11db6408390f/jetified-debug-db-base-1.0.6/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/000d0a739247410c745f8b5cfc291dbb/jetified-debug-db-base-1.0.6/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/000d0a739247410c745f8b5cfc291dbb/jetified-debug-db-base-1.0.6/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/000d0a739247410c745f8b5cfc291dbb/jetified-debug-db-base-1.0.6/res" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.amitshekhar.android/debug-db-base/1.0.6/43c6abb777258b8e02b7a4f4aef44f5996ddf30f/debug-db-base-1.0.6-javadoc.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.amitshekhar.android/debug-db-base/1.0.6/43c6abb777258b8e02b7a4f4aef44f5996ddf30f/debug-db-base-1.0.6-javadoc.jar!/" />

View File

@ -6,6 +6,7 @@
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/62035fcaa1eb865fcb157c3556d5e2c8/jetified-stetho-1.5.1/annotations.zip!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/62035fcaa1eb865fcb157c3556d5e2c8/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad36d5a34233c7fa29ad3770971d35c6/jetified-stetho-1.5.1/annotations.zip!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad36d5a34233c7fa29ad3770971d35c6/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/annotations.zip!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/083aec472dafcfc3b0c0d766cd43b137/jetified-stetho-1.5.1/annotations.zip!/" />
</ANNOTATIONS> </ANNOTATIONS>
<CLASSES> <CLASSES>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d20b09848ce936fd0a38f787548625fb/jetified-stetho-1.5.1/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d20b09848ce936fd0a38f787548625fb/jetified-stetho-1.5.1/jars/classes.jar!/" />
@ -23,6 +24,9 @@
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4d8a2b6516214c37dd58d58e9a7f5172/jetified-stetho-1.5.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/083aec472dafcfc3b0c0d766cd43b137/jetified-stetho-1.5.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/083aec472dafcfc3b0c0d766cd43b137/jetified-stetho-1.5.1/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/083aec472dafcfc3b0c0d766cd43b137/jetified-stetho-1.5.1/jars/classes.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.stetho/stetho/1.5.1/b71856fcb682e807ccec3a276e47c94944b6c6ea/stetho-1.5.1-javadoc.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.facebook.stetho/stetho/1.5.1/b71856fcb682e807ccec3a276e47c94944b6c6ea/stetho-1.5.1-javadoc.jar!/" />

View File

@ -16,6 +16,9 @@
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34c9268e89b7e26ed7d2a6d2fbc7372d/jetified-GreenDaoUpgradeHelper-v2.2.1/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34c9268e89b7e26ed7d2a6d2fbc7372d/jetified-GreenDaoUpgradeHelper-v2.2.1/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34c9268e89b7e26ed7d2a6d2fbc7372d/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34c9268e89b7e26ed7d2a6d2fbc7372d/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34c9268e89b7e26ed7d2a6d2fbc7372d/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/34c9268e89b7e26ed7d2a6d2fbc7372d/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7f2036a595ce5b219144e3375ddac139/jetified-GreenDaoUpgradeHelper-v2.2.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7f2036a595ce5b219144e3375ddac139/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/7f2036a595ce5b219144e3375ddac139/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.yuweiguocn/GreenDaoUpgradeHelper/v2.2.1/7aef2e7b4c18afb240f0e17af5d045f176d2b8ef/GreenDaoUpgradeHelper-v2.2.1-javadoc.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.yuweiguocn/GreenDaoUpgradeHelper/v2.2.1/7aef2e7b4c18afb240f0e17af5d045f176d2b8ef/GreenDaoUpgradeHelper-v2.2.1-javadoc.jar!/" />

View File

@ -16,6 +16,9 @@
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8acd84ed04507b25ad4ab1f092095a58/jetified-logger-2.2.0/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8acd84ed04507b25ad4ab1f092095a58/jetified-logger-2.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8acd84ed04507b25ad4ab1f092095a58/jetified-logger-2.2.0/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8acd84ed04507b25ad4ab1f092095a58/jetified-logger-2.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8acd84ed04507b25ad4ab1f092095a58/jetified-logger-2.2.0/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8acd84ed04507b25ad4ab1f092095a58/jetified-logger-2.2.0/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad5dbc95019bd8e49004e8b34c57b5cc/jetified-logger-2.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad5dbc95019bd8e49004e8b34c57b5cc/jetified-logger-2.2.0/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ad5dbc95019bd8e49004e8b34c57b5cc/jetified-logger-2.2.0/res" />
</CLASSES> </CLASSES>
<JAVADOC> <JAVADOC>
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.orhanobut/logger/2.2.0/98e69754ab23f7179137d8d2a0e3eea79200d746/logger-2.2.0-javadoc.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.orhanobut/logger/2.2.0/98e69754ab23f7179137d8d2a0e3eea79200d746/logger-2.2.0-javadoc.jar!/" />

View File

@ -9,7 +9,7 @@
</map> </map>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

File diff suppressed because one or more lines are too long

View File

@ -87,11 +87,11 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library name="Gradle: kaptGeneratedClasses"> <library name="Gradle: kaptGeneratedClasses">
<CLASSES> <CLASSES>
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debugAndroidTest" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/release" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debugUnitTest" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debug" /> <root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debug" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/releaseUnitTest" /> <root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/releaseUnitTest" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debugAndroidTest" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debugUnitTest" />
<root url="file://$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/release" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES /> <SOURCES />

View File

@ -89,10 +89,10 @@
<orderEntry type="module-library"> <orderEntry type="module-library">
<library name="Gradle: kaptGeneratedClasses"> <library name="Gradle: kaptGeneratedClasses">
<CLASSES> <CLASSES>
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debug" />
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/release" /> <root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/release" />
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debugAndroidTest" />
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/releaseUnitTest" /> <root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/releaseUnitTest" />
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debugAndroidTest" />
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debug" />
<root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debugUnitTest" /> <root url="file://$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debugUnitTest" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />

View File

@ -21,8 +21,8 @@ android {
applicationId "net.sysolution.taxiapp" applicationId "net.sysolution.taxiapp"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 29 targetSdkVersion 29
versionCode 240 versionCode 242
versionName "3.3.3-beta26.3.9.97-debug" versionName "3.3.3-beta26.3.9.99-debug"
//alphaxx - ,bug //alphaxx - ,bug
//Betaxx - //Betaxx -
@ -58,7 +58,8 @@ android {
3.3.3-beta26.3.9.3.94 gps开关查询广 3.3.3-beta26.3.9.3.94 gps开关查询广
3.3.3-beta26.3.9.3.95 3.3.3-beta26.3.9.3.95
26.3.9.96 广 26.3.9.96 广
26.3.9.97 taxiApp当天的运行时间 26.3.9.98 taxiApp当天的运行时间
26.3.9.99
**/ **/
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -172,7 +173,6 @@ dependencies {
// implementation 'androidx.room:room-runtime:2.2.5'//room // implementation 'androidx.room:room-runtime:2.2.5'//room
// kapt "androidx.room:room-compiler:2.2.5" // kapt "androidx.room:room-compiler:2.2.5"
//lifecycle协程 //lifecycle协程
implementation "androidx.lifecycle:lifecycle-livedata-core-ktx:$livedata" implementation "androidx.lifecycle:lifecycle-livedata-core-ktx:$livedata"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$livedata" implementation "androidx.lifecycle:lifecycle-livedata-ktx:$livedata"

View File

@ -396,6 +396,28 @@ public class Configurations {
context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putString("runtimeJsonString", s).apply(); context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putString("runtimeJsonString", s).apply();
} }
public String logSummaryJsonString(){
return context.getSharedPreferences("config", Context.MODE_PRIVATE).getString("logSummaryJsonString", "");
}
public void logSummaryJsonStringSave(String s){
context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putString("logSummaryJsonString", s).apply();
}
/**
* taxiApp当天第一次运行时间
* @return
*/
public long firstRunTime(){
long defaultValue = System.currentTimeMillis();
return context.getSharedPreferences("config", Context.MODE_PRIVATE).getLong("firstRunTime",defaultValue);
}
public void firstRunTimeSave(Long runTime){
context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putLong("firstRunTime", runTime).apply();
}
} }

View File

@ -75,7 +75,9 @@ class TaxiApp:Application() {
// lateinit var listener:Player.Listener // lateinit var listener:Player.Listener
// var player: SimpleExoPlayer? = null // var player: SimpleExoPlayer? = null
// lateinit var factory: ProgressiveMediaSource.Factory // lateinit var factory: ProgressiveMediaSource.Factory
var sendLogTimes = 0
var isPositionRefresh = false
companion object{ companion object{
private var instance:Application? =null private var instance:Application? =null

View File

@ -72,6 +72,11 @@ object Repository {
currentSyncTime = syncTime currentSyncTime = syncTime
} }
fun cancelTimer(){
kuroTimer.cancel()
kuroTimer.purge()
}
fun getAdvertiseTEST(): Advertise? { fun getAdvertiseTEST(): Advertise? {
synchronized(TaxiApp::class.java){ synchronized(TaxiApp::class.java){
val list = myListMap[getTestPlayLevels()] val list = myListMap[getTestPlayLevels()]
@ -571,7 +576,13 @@ object Repository {
currentListOrder = 0 currentListOrder = 0
refreshMyList() refreshMyList()
// "sync:${Configurations.config(TaxiApp.instance()).sync()}".loge() // "sync:${Configurations.config(TaxiApp.instance()).sync()}".loge()
if (Configurations.config(TaxiApp.instance()).sync() && getTestPlayLevels() == AdvertiseType.GROUP.ordinal) { //#edit by ljh @2023/12/12 定点刷新
if (taxiApp.isPositionRefresh){
//非同步播放或者定点播放
YoungUtil.YoungLog("非同步刷新")
playViewModel!!.refreshAdvertise()
taxiApp.isPositionRefresh = false
} else if (Configurations.config(TaxiApp.instance()).sync() && getTestPlayLevels() == AdvertiseType.GROUP.ordinal) {
//设置同步播放并且是分组广告 //设置同步播放并且是分组广告
// if (Settings.sync) { // if (Settings.sync) {
val syncTimeModel = getSyncSingleTime(currentSyncTime, getTestPlayCircularList()) val syncTimeModel = getSyncSingleTime(currentSyncTime, getTestPlayCircularList())

View File

@ -9,5 +9,9 @@ package cn.trans88.taxiappkotlin.logic.model
data class LogSummary( data class LogSummary(
val ad_id: String, val ad_id: String,
val play_num:Int, val play_num:Int,
val duration:Long val duration:Long,
val ad_type:Int,
val media_url:String,
val begin_play_ts:Long,
val end_play_ts:Long
) )

View File

@ -18,6 +18,7 @@ import cn.trans88.taxiappkotlin.logic.dao.DaoUtil
import cn.trans88.taxiappkotlin.logic.model.* import cn.trans88.taxiappkotlin.logic.model.*
import cn.trans88.taxiappkotlin.play.RefreshPlayer import cn.trans88.taxiappkotlin.play.RefreshPlayer
import cn.trans88.taxiappkotlin.ui.play.PlayActivity import cn.trans88.taxiappkotlin.ui.play.PlayActivity
import cn.trans88.taxiappkotlin.ui.play.isSendedLog
import cn.trans88.taxiappkotlin.util.KuroTimer import cn.trans88.taxiappkotlin.util.KuroTimer
import cn.trans88.taxiappkotlin.util.KuroTimerTask import cn.trans88.taxiappkotlin.util.KuroTimerTask
import cn.trans88.taxiappkotlin.util.YoungUtil import cn.trans88.taxiappkotlin.util.YoungUtil
@ -39,8 +40,11 @@ import okhttp3.RequestBody.Companion.asRequestBody
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.util.* import java.util.*
import java.util.concurrent.Executors
import java.util.concurrent.ThreadPoolExecutor import java.util.concurrent.ThreadPoolExecutor
import java.util.concurrent.TimeUnit
import java.util.stream.Collectors import java.util.stream.Collectors
import kotlin.concurrent.thread
/** /**
* @author TRS * @author TRS
@ -189,7 +193,7 @@ object ConnManger {
} }
} }
sendLogger() // sendLogger()
sendLocation() sendLocation()
//edit by ljh @2023/9/1 //edit by ljh @2023/9/1
WsManager.isRegister = false WsManager.isRegister = false
@ -684,22 +688,33 @@ object ConnManger {
*/ */
fun sendLogsSummary(){ fun sendLogsSummary(){
YoungUtil.YoungLog("sendLogger in Thread is ${Looper.getMainLooper().thread === Thread.currentThread()}") YoungUtil.YoungLog("sendLogger in Thread is ${Looper.getMainLooper().thread === Thread.currentThread()}")
thread {
val playLoggers = DaoUtil.getPlayLoggers() val playLoggers = DaoUtil.getPlayLoggers()
if (playLoggers.isNotEmpty()) { "playLoggers size: ${playLoggers.size}".logd()
//#edit by ljh @2023/6/5 改成大批量看是否能减小流量消耗 val requestJson = getLogSummaryJson(playLoggers)
val requestJson = ProcessingCommands.gson.toJson(playLoggers) if (requestJson.isNotEmpty()){
sendLogsSummaryToWeb(requestJson)
for (playLogger in playLoggers) { }
DaoUtil.getPlayLogger().delete(playLogger) }
} }
val okHttpClient = OkHttpClient() /**
YoungUtil.YoungLog("准备上传日志") * 上传日志概要到平台
* @param jsonStr String
*/
var logsSummaryTimer:Timer? = null
fun sendLogsSummaryToWeb(requestJson:String){
val okHttpClient = OkHttpClient.Builder()
.connectTimeout(80, TimeUnit.SECONDS)
.readTimeout(80, TimeUnit.SECONDS)
.writeTimeout(80, TimeUnit.SECONDS)
.build()
YoungUtil.YoungLog("准备上传日志摘要")
val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull() val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull()
val body = RequestBody.create(parse, requestJson) val body = RequestBody.create(parse, requestJson)
YoungUtil.YoungLog("sendLogger:${requestJson}") YoungUtil.YoungLog("sendLogger:${requestJson}")
val request: Request = Request.Builder() val request: Request = Request.Builder()
.url(Configurations.config(TaxiApp.instance()).logServiceUrl() + "postPlayerLog") //要访问的链接 .url(Configurations.config(TaxiApp.instance()).logServiceUrl() + "postPlayerLogPlus") //要访问的链接
.addHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).appToken()}") .addHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).appToken()}")
.addHeader("Accept-Encoding", "gzip") .addHeader("Accept-Encoding", "gzip")
.post(body) .post(body)
@ -709,46 +724,100 @@ object ConnManger {
override fun onFailure(call: Call, e: IOException) { override fun onFailure(call: Call, e: IOException) {
YoungUtil.YoungLog("上传日志失败:${e.message}") YoungUtil.YoungLog("上传日志失败:${e.message}")
e.printStackTrace()
"3s后重新上传日志摘要".loge()
logsSummaryTimer?.let {
it.cancel()
it.purge()
}
logsSummaryTimer = Timer()
logsSummaryTimer?.schedule(object :TimerTask(){
override fun run() {
sendLogsSummaryToWeb(requestJson)
}
},3000L)
} }
override fun onResponse(call: Call, response: Response) { override fun onResponse(call: Call, response: Response) {
YoungUtil.YoungLog("上传日志成功:${response.message},response isSuccessful ${response.isSuccessful}${response.code}") YoungUtil.YoungLog("上传日志成功:${response.message},response isSuccessful ${response.isSuccessful}${response.code}")
if (response.code == 200) {
// if (response.code == 200) { Configurations.config(taxiApp).logSummaryJsonStringSave("")
// //#edit by ljh @2023/6/5 删除批量上传的日志 isSendedLog = false
// DaoUtil.getPlayLogger().deleteAll() } else {
// } "服务器没回复200重新上传日志摘要".loge()
"删除已上传的日志".logd() "3s后重新上传日志摘要".loge()
logsSummaryTimer?.let {
it.cancel()
it.purge()
}
logsSummaryTimer = Timer()
logsSummaryTimer?.schedule(object :TimerTask(){
override fun run() {
sendLogsSummaryToWeb(requestJson)
}
},3000L)
}
} }
}) })
} }
/**
* 获取昨天的日志概要Json数据
*/
private fun getLogSummaryJson(playLoggers:List<PlayLogger>):String{
val cacheJson = Configurations.config(taxiApp).logSummaryJsonString()
if (!cacheJson.isNullOrEmpty()){
"cacheJson:$cacheJson".logd()
return cacheJson
} }
var jsonStr = ""
if (!playLoggers.isNullOrEmpty()){
val summaryList = ArrayList<LogSummary>()
// val endPlayTime = playLoggers.map {
// it.end_play_ts
// }.max() ?: 0L
// val beginPlayTime = playLoggers.map {
// it.begin_play_ts
// }.min() ?: 0L
private fun getLogSummaryJson(){ val logsGroup = playLoggers.groupBy { it.ad_id }
val playLoggers = DaoUtil.getPlayLoggers() logsGroup.keys.forEach {
val maxEndPlayTs = playLoggers.map { val adId = it
it.end_play_ts logsGroup.get(it)?.let { playLoggers ->
}.max() val beginPlayTime = playLoggers.map { it.begin_play_ts }.min() ?: 0L
val minBeginPlayTs = playLoggers.map { val endPlayTime = playLoggers.map { it.end_play_ts }.max() ?: 0L
it.begin_play_ts val playNums = playLoggers.size
}.min() val playLogger = playLoggers.get(0)
val ad_type = playLogger.ad_type
"开始播放时间:$minBeginPlayTs,最后一条日志的播放时间:$maxEndPlayTs".loge() val media_url = playLogger.media_url
if (playLoggers.isNotEmpty()) { val duration = playLogger.duration
val summary = LogSummary(adId,playNums,duration,ad_type,media_url,beginPlayTime,endPlayTime)
"开始播放时间:$beginPlayTime,结束播放时间:$endPlayTime".loge()
"添加一条日志摘要:${summary.toString()}".loge()
summaryList.add(summary)
}
}
for (playLogger in playLoggers) { for (playLogger in playLoggers) {
DaoUtil.getPlayLogger().delete(playLogger) DaoUtil.getPlayLogger().delete(playLogger)
} }
jsonStr = Gson().toJson(summaryList)
Configurations.config(taxiApp).logSummaryJsonStringSave(jsonStr)
} }
"日志概要json:$jsonStr".loge()
return jsonStr
} }
/** /**
* 上报运行时长 * 上报运行时长
*/ */
var runtimeTimer:Timer? = null
fun sendRuntimeToWeb(){ fun sendRuntimeToWeb(){
val jsonStr = Configurations.config(taxiApp).runtimeJsonString() ?: "" val jsonStr = Configurations.config(taxiApp).runtimeJsonString() ?: ""
val okHttpClient = OkHttpClient() val okHttpClient = OkHttpClient.Builder()
.connectTimeout(80, TimeUnit.SECONDS)
.readTimeout(80, TimeUnit.SECONDS)
.writeTimeout(80, TimeUnit.SECONDS)
.build()
YoungUtil.YoungLog("准备上报运行时长") YoungUtil.YoungLog("准备上报运行时长")
val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull() val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull()
val body = RequestBody.create(parse, jsonStr) val body = RequestBody.create(parse, jsonStr)
@ -764,12 +833,18 @@ object ConnManger {
override fun onFailure(call: Call, e: IOException) { override fun onFailure(call: Call, e: IOException) {
YoungUtil.YoungLog("上传运行时长失败:${e.message}") YoungUtil.YoungLog("上传运行时长失败:${e.message}")
Timer().schedule(object :TimerTask(){ e.printStackTrace()
"3s后重新上报运行时长".loge()
runtimeTimer?.let {
it.cancel()
it.purge()
}
runtimeTimer = Timer()
runtimeTimer?.schedule(object :TimerTask(){
override fun run() { override fun run() {
"重新上报运行时长".loge()
sendRuntimeToWeb() sendRuntimeToWeb()
} }
},5000) },3000L)
} }
override fun onResponse(call: Call, response: Response) { override fun onResponse(call: Call, response: Response) {
@ -777,6 +852,18 @@ object ConnManger {
if (response.code == 200) { if (response.code == 200) {
"清除上传成功的运行时长数据".loge() "清除上传成功的运行时长数据".loge()
Configurations.config(taxiApp).runtimeJsonStringSave("") Configurations.config(taxiApp).runtimeJsonStringSave("")
} else {
"3s后重新上报运行时长".loge()
runtimeTimer?.let {
it.cancel()
it.purge()
}
runtimeTimer = Timer()
runtimeTimer?.schedule(object :TimerTask(){
override fun run() {
sendRuntimeToWeb()
}
},3000L)
} }
} }
}) })

View File

@ -193,6 +193,26 @@ object ProcessingCommands {
sanleResponse.turn_on = turn_on sanleResponse.turn_on = turn_on
val response = gson.toJson(sanleResponse) val response = gson.toJson(sanleResponse)
send(response) 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)
} }
/** /**
@ -228,7 +248,8 @@ object ProcessingCommands {
if (loggerSwitch.isTurn_on){ if (loggerSwitch.isTurn_on){
// ConnManger.loggerTimer?.cancel() // ConnManger.loggerTimer?.cancel()
// ConnManger.loggerTimer?.purge() // ConnManger.loggerTimer?.purge()
ConnManger.sendLogger()
// ConnManger.sendLogger()
} }
baseResponse.type = type baseResponse.type = type

View File

@ -170,7 +170,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
customView() customView()
Thread(Runnable { clearOverdueLogger() }).start() // Thread(Runnable { clearOverdueLogger() }).start()
val serverIntent = Intent(this, PlayServer::class.java) val serverIntent = Intent(this, PlayServer::class.java)
startService(serverIntent) startService(serverIntent)
//开机不管同步不同步直接先放 //开机不管同步不同步直接先放
@ -199,7 +199,8 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
var cacheStartTime:Long = configurations.startRunTime() var cacheStartTime:Long = configurations.startRunTime()
var currentTime = System.currentTimeMillis() var currentTime = System.currentTimeMillis()
"saveStartTime ---> currentTime:$currentTime".loge() "saveStartTime ---> currentTime:$currentTime".loge()
if (currentTime>23646086L){
if (currentTime > 23646086L && currentTime > cacheStartTime){
startSaveRunTimer?.let { startSaveRunTimer?.let {
it.purge() it.purge()
@ -210,13 +211,28 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
var dayType = DateUtil.getDaysDiff(currentTime,cacheStartTime) var dayType = DateUtil.getDaysDiff(currentTime,cacheStartTime)
when(dayType){ when(dayType){
DayType.IS_OTHER_DAY.ordinal -> { //如果缓存的启动时间是三天前(或更久)了,或者为零,直接覆盖 DayType.IS_OTHER_DAY.ordinal -> { //如果缓存的启动时间是三天前(或更久)了,或者为零,直接覆盖
configurations.logSummaryJsonStringSave("")
Thread(Runnable { clearOverdueLogger() }).start()
isSendedLog = false
"startRunTimeendRunTime初始化为$currentTime".loge() "startRunTimeendRunTime初始化为$currentTime".loge()
configurations.startRunTimeSave(currentTime) configurations.startRunTimeSave(currentTime)
configurations.endRunTimeSave(currentTime) configurations.endRunTimeSave(currentTime)
configurations.firstRunTimeSave(currentTime)
configurations.sumRunTimeSave(0L) configurations.sumRunTimeSave(0L)
configurations.runtimeJsonStringSave("")
startRuntimeTimer() startRuntimeTimer()
} }
DayType.IS_SAME_DAY.ordinal -> {//同一天重启 DayType.IS_SAME_DAY.ordinal -> {//同一天重启
//测试日志上传
ConnManger.sendLogsSummary()
isSendedLog = false
// val logSummaryJson = configurations.logSummaryJsonString()
// if (!logSummaryJson.isNullOrEmpty()){
// "同一天重启,之前的日志数据没传,重新上传".loge()
// ConnManger.sendLogsSummary()
// } else {
// isSendedLog = false
// }
//先计算上次重启前的运行时间 //先计算上次重启前的运行时间
val lastSumTime = configurations.sumRunTime() val lastSumTime = configurations.sumRunTime()
val lastStartRuntime = configurations.startRunTime() val lastStartRuntime = configurations.startRunTime()
@ -229,7 +245,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
"程序启动,目前运行时间(毫秒):${todaySumRuntime}".loge() "程序启动,目前运行时间(毫秒):${todaySumRuntime}".loge()
//测试上报接口 //测试上报接口
// val runtimeJson = RuntimeJson(configurations.cardId(),todaySumRuntime,System.currentTimeMillis()) // val runtimeJson = RuntimeJson(configurations.cardId(),todaySumRuntime,lastStartRuntime)
// configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson)) // configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson))
if (!configurations.runtimeJsonString().isNullOrEmpty()){ if (!configurations.runtimeJsonString().isNullOrEmpty()){
ConnManger.sendRuntimeToWeb() ConnManger.sendRuntimeToWeb()
@ -241,6 +257,8 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
startRuntimeTimer() startRuntimeTimer()
} }
DayType.IS_SECOND_DAY.ordinal -> { DayType.IS_SECOND_DAY.ordinal -> {
ConnManger.sendLogsSummary()
//先计算上次重启前的运行时间 //先计算上次重启前的运行时间
val lastSumTime = configurations.sumRunTime() val lastSumTime = configurations.sumRunTime()
val lastStartRuntime = configurations.startRunTime() val lastStartRuntime = configurations.startRunTime()
@ -251,18 +269,21 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
val yesterdaySumTime = lastRunTime + lastSumTime val yesterdaySumTime = lastRunTime + lastSumTime
"程序启动,昨天运行时间(毫秒):${yesterdaySumTime}".loge() "程序启动,昨天运行时间(毫秒):${yesterdaySumTime}".loge()
//提交昨天一整天的运行时间 //提交昨天一整天的运行时间
val runtimeJson = RuntimeJson(configurations.cardId(),yesterdaySumTime,System.currentTimeMillis()) val firstRuntime = configurations.firstRunTime()
val runtimeJson = RuntimeJson(configurations.cardId(),yesterdaySumTime,firstRuntime)
configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson)) configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson))
ConnManger.sendRuntimeToWeb() ConnManger.sendRuntimeToWeb()
//保存新的开始运行时间,和结束时间 //保存新的开始运行时间,和结束时间
configurations.startRunTimeSave(currentTime) configurations.startRunTimeSave(currentTime)
configurations.endRunTimeSave(currentTime) configurations.endRunTimeSave(currentTime)
configurations.firstRunTimeSave(currentTime)
configurations.sumRunTimeSave(0L) configurations.sumRunTimeSave(0L)
startRuntimeTimer() startRuntimeTimer()
} }
else -> { else -> {
configurations.startRunTimeSave(currentTime) configurations.startRunTimeSave(currentTime)
configurations.endRunTimeSave(currentTime) configurations.endRunTimeSave(currentTime)
configurations.firstRunTimeSave(currentTime)
configurations.sumRunTimeSave(0L) configurations.sumRunTimeSave(0L)
} }
} }
@ -293,17 +314,41 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
override fun run() { override fun run() {
val endRuntime = configurations.endRunTime() val endRuntime = configurations.endRunTime()
val startRuntime = configurations.startRunTime() val startRuntime = configurations.startRunTime()
val currentTime = System.currentTimeMillis()
"RuntimeTimer --> currentEndRuntime:$endRuntime".loge() "RuntimeTimer --> currentEndRuntime:$endRuntime".loge()
val type = DateUtil.getDaysDiff(endRuntime,startRuntime) val type = DateUtil.getDaysDiff(endRuntime,startRuntime)
if (DayType.IS_SECOND_DAY.ordinal == type) { val currentType = DateUtil.getDaysDiff(currentTime,startRuntime)
val isSecond = DayType.IS_SECOND_DAY.ordinal == currentType
if (isSecond && Repository.taxiApp.sendLogTimes == 0) {
//当前时间被手动设置成第二天了,提交一次运行时长数据
isSendedLog = true
val lastRunTime = endRuntime - startRuntime val lastRunTime = endRuntime - startRuntime
val yesterdayRuntime = configurations.sumRunTime() + lastRunTime val yesterdayRuntime = configurations.sumRunTime() + lastRunTime
//提交昨天一整天的运行时间 //提交昨天一整天的运行时间
val runtimeJson = RuntimeJson(configurations.cardId(),yesterdayRuntime,System.currentTimeMillis()) val firstRuntime = configurations.firstRunTime()
val runtimeJson = RuntimeJson(configurations.cardId(),yesterdayRuntime,firstRuntime)
configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson))
ConnManger.sendRuntimeToWeb()
//提交一次日志数据
ConnManger.sendLogsSummary()
Repository.taxiApp.sendLogTimes = 1
}
if (DayType.IS_SECOND_DAY.ordinal == type) {
ConnManger.sendLogsSummary()
val lastRunTime = endRuntime - startRuntime
val yesterdayRuntime = configurations.sumRunTime() + lastRunTime
//提交昨天一整天的运行时间
val firstRuntime = configurations.firstRunTime()
val runtimeJson = RuntimeJson(configurations.cardId(),yesterdayRuntime,firstRuntime)
configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson)) configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson))
ConnManger.sendRuntimeToWeb() ConnManger.sendRuntimeToWeb()
//保存新的开始运行时间,和结束时间 //保存新的开始运行时间,和结束时间
configurations.startRunTimeSave(endRuntime) configurations.startRunTimeSave(endRuntime)
configurations.firstRunTimeSave(endRuntime)
configurations.sumRunTimeSave(0L) configurations.sumRunTimeSave(0L)
} }
@ -351,6 +396,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
override fun onServiceConnected(name: ComponentName?, service: IBinder?) { override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
YoungUtil.YoungLog("bindService onServiceConnected") YoungUtil.YoungLog("bindService onServiceConnected")
connService = ConnService.Stub.asInterface(service) connService = ConnService.Stub.asInterface(service)
ConnManger.setConnService(connService) ConnManger.setConnService(connService)
ConnManger.registerApp() ConnManger.registerApp()
@ -409,7 +455,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
val overdueTime = currentTimeMillis - 30 * 24 * 60 * 60 * 1000 val overdueTime = currentTimeMillis - 30 * 24 * 60 * 60 * 1000
//lt < gt > ge >= le <= //lt < gt > ge >= le <=
DaoUtil.getPlayLoggerDao().queryBuilder().where(PlayLoggerDao.Properties.Created_at.lt(overdueTime)).buildDelete().executeDeleteWithoutDetachingEntities() DaoUtil.getPlayLoggerDao().queryBuilder().where(PlayLoggerDao.Properties.Created_at.lt(overdueTime)).buildDelete().executeDeleteWithoutDetachingEntities()
"清除日志后,当前日志数量:${DaoUtil.getPlayLoggers().size}".logd()
} }
/** /**
@ -445,7 +491,6 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
busLayoutParams.width = Configurations.config(TaxiApp.instance()).screenSizeX() / 7 busLayoutParams.width = Configurations.config(TaxiApp.instance()).screenSizeX() / 7
busLayoutParams.height = Configurations.config(TaxiApp.instance()).screenSizeY() busLayoutParams.height = Configurations.config(TaxiApp.instance()).screenSizeY()
img_bus_top.visibility = View.VISIBLE img_bus_top.visibility = View.VISIBLE
val program = File(TaxiApp.instance().filesDir, TaxiApp.instance().getString(string.dir_program)) val program = File(TaxiApp.instance().filesDir, TaxiApp.instance().getString(string.dir_program))

View File

@ -72,6 +72,7 @@ import cn.trans88.taxiappkotlin.util.YoungUtil
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
import org.greenrobot.greendao.query.LazyList import org.greenrobot.greendao.query.LazyList
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.File
import java.util.* import java.util.*
@ -80,6 +81,8 @@ import java.util.*
* 所有与界面相关的数据都应该放在ViewModel中 * 所有与界面相关的数据都应该放在ViewModel中
*/ */
//todo 这里不应该持有ui应该要建立对应的livedata去回调给ui //todo 这里不应该持有ui应该要建立对应的livedata去回调给ui
//如果是第二天但是第一天日志没传完就设为true
var isSendedLog: Boolean = true
class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout, private val imageView: ImageView) : ViewModel(), GpsInformationListener, IPlay, LifecycleObserver { class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout, private val imageView: ImageView) : ViewModel(), GpsInformationListener, IPlay, LifecycleObserver {
private val providerMap = HashMap<String,String>() private val providerMap = HashMap<String,String>()
@ -569,6 +572,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
//view.startAnimation(addAnim) //view.startAnimation(addAnim)
fl_play.addView(view) fl_play.addView(view)
// fl_play.addView(view)
removeView() removeView()
@ -786,6 +790,8 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
} }
} }
var cachePlayLoggers = ArrayList<PlayLogger>()
/** /**
* 将curLogger设置为播放完成后存储到LoggerContainer中并将curLogger清空 * 将curLogger设置为播放完成后存储到LoggerContainer中并将curLogger清空
*/ */
@ -796,9 +802,27 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
curLogger!!.end_play_ts = System.currentTimeMillis() curLogger!!.end_play_ts = System.currentTimeMillis()
// val roundingDuration = Math.ceil((curLogger!!.duration.toDouble() / 1000)) * 1000 // val roundingDuration = Math.ceil((curLogger!!.duration.toDouble() / 1000)) * 1000
// curLogger!!.duration = roundingDuration.toLong() // curLogger!!.duration = roundingDuration.toLong()
// DaoUtil.getPlayLoggerDao().insert(curLogger)
// "存储日志:${curLogger?.begin_play_ts}".loge()
// "当前日志数量:${DaoUtil.getPlayLoggers().size}".logd()
if (isSendedLog){
cachePlayLoggers.add(curLogger!!)
"缓存日志数据:${curLogger.toString()}".loge()
} else {
"存储日志数据:${curLogger.toString()}".loge()
val logs = DaoUtil.getPlayLoggers()
"当前日志数据size${logs.size}".logd()
for (log in logs) {
"日志数据:${log.toString()}"
}
DaoUtil.getPlayLoggerDao().insert(curLogger) DaoUtil.getPlayLoggerDao().insert(curLogger)
"存储日志:${curLogger?.begin_play_ts}".loge() for (cachePlayLogger in cachePlayLoggers) {
"存储缓存的日志数据insert cachePlayLogger${cachePlayLogger.toString()}".logd()
DaoUtil.getPlayLoggerDao().insert(cachePlayLogger)
}
cachePlayLoggers.clear()
}
} }
curLogger = null curLogger = null
} }
@ -898,6 +922,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
list list
} }
"regions.size:${regions.size}".logd() "regions.size:${regions.size}".logd()
var isRefresh = false
for (region in regions) { for (region in regions) {
"regionAdId:${region.regionAdId},index:${regions.indexOf(region)}".logd() "regionAdId:${region.regionAdId},index:${regions.indexOf(region)}".logd()
YoungUtil.YoungLog("当前两点间距离:${DistanceUtil.getDistance(region.lat, region.lng, latitude, longitude)}") YoungUtil.YoungLog("当前两点间距离:${DistanceUtil.getDistance(region.lat, region.lng, latitude, longitude)}")
@ -941,7 +966,11 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
//edit by ljh @2023/8/15 //edit by ljh @2023/8/15
taxiApp.daoAds.clear() taxiApp.daoAds.clear()
RefreshPlayer.refresh() //edit by ljh @2023/12/12 刷新定点广告
Repository.cancelTimer()
isRefresh = true
// RefreshPlayer.refresh()
} else { } else {
YoungUtil.YoungLog("positionAdvertise is null"); YoungUtil.YoungLog("positionAdvertise is null");
} }
@ -957,7 +986,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
val reg = DaoUtil.getRegion().queryBuilder().where(RegionsDao.Properties.AutoId.eq(region.autoId)).unique() val reg = DaoUtil.getRegion().queryBuilder().where(RegionsDao.Properties.AutoId.eq(region.autoId)).unique()
if (reg != null){ if (reg != null){
reg.isInRegion = true reg.isInRegion = false
DaoUtil.getRegion().update(reg) DaoUtil.getRegion().update(reg)
} else { } else {
taxiApp.regionsList.clear() taxiApp.regionsList.clear()
@ -972,13 +1001,21 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
//edit by ljh @2023/8/14 //edit by ljh @2023/8/14
taxiApp.daoAds.clear() taxiApp.daoAds.clear()
//edit by ljh @2023/12/12
Repository.cancelTimer()
isRefresh = true
DaoUtil.getAdvertise().queryBuilder().where(AdvertiseDao.Properties.Ad_id.eq(region.regionAdId)).buildDelete() DaoUtil.getAdvertise().queryBuilder().where(AdvertiseDao.Properties.Ad_id.eq(region.regionAdId)).buildDelete()
.executeDeleteWithoutDetachingEntities() .executeDeleteWithoutDetachingEntities()
YoungUtil.YoungLog("没进圈删除定点广告:${region.regionAdId}") YoungUtil.YoungLog("没进圈删除定点广告:${region.regionAdId}")
taxiApp.isPositionRefresh = true
// RefreshPlayer.refresh()
}
}
}
if (isRefresh){
"定点变动,刷新列表".loge()
RefreshPlayer.refresh() RefreshPlayer.refresh()
} }
}
}
} }
@ -1002,6 +1039,9 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
}) })
} }
/**
* 清除旧的定点广告
*/
fun clearAreaAdvertise() { fun clearAreaAdvertise() {
val list = getAdvertise().queryBuilder().where(Properties.BelongTo.eq(AREA.ordinal)).list() val list = getAdvertise().queryBuilder().where(Properties.BelongTo.eq(AREA.ordinal)).list()
list?.let { list?.let {
@ -1009,13 +1049,13 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
taxiApp.daoAds.clear() taxiApp.daoAds.clear()
for (advertise in it) { for (advertise in it) {
getAdvertise().delete(advertise) getAdvertise().delete(advertise)
}
try { try {
RefreshPlayer.refresh() RefreshPlayer.refresh()
} catch (e: InterruptedException) { } catch (e: InterruptedException) {
e.printStackTrace() e.printStackTrace()
} }
} }
}
} }
@ -1159,6 +1199,13 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
this.latitude = latitude this.latitude = latitude
} }
//edit by ljh @2023/12/12
val file = File(advertise.pathName)
if (file.exists()) {
"定点广告的素材已下载".loge()
advertise.isDownloaded = true
}
YoungUtil.YoungLog("setAdvertiseByPosition adid${advertise.ad_id}") YoungUtil.YoungLog("setAdvertiseByPosition adid${advertise.ad_id}")
advertise.toString().loge() advertise.toString().loge()

View File

@ -112,7 +112,7 @@ public class DateUtil {
* @return * @return
*/ */
public static int getDaysDiff(long currentTime, long cacheTime){ public static int getDaysDiff(long currentTime, long cacheTime){
Log.d("yzd_t", "currentTime: " + currentTime + ", cacheTime: " + cacheTime); Log.d("yzd_t", "currentTime: " + currentTime + ", cacheStartTime: " + cacheTime);
int dayType = DayType.IS_OTHER_DAY.ordinal(); int dayType = DayType.IS_OTHER_DAY.ordinal();
// long currentTimeStamp = 1699723270L; // 替换为currentTimeStamp的值 2023/11/12 // long currentTimeStamp = 1699723270L; // 替换为currentTimeStamp的值 2023/11/12
// long lastTimeStamp = 1699690270L; // 替换为lastTimeStamp的值 2023/11/11 // long lastTimeStamp = 1699690270L; // 替换为lastTimeStamp的值 2023/11/11

View File

@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":240,"versionName":"3.3.3-beta26.3.9.97-debug","enabled":true,"outputFile":"TaxiApp_v3.3.3-beta26.3.9.97-debug{240}.apk","fullName":"debug","baseName":"debug","dirName":""},"path":"TaxiApp_v3.3.3-beta26.3.9.97-debug{240}.apk","properties":{}}] [{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":242,"versionName":"3.3.3-beta26.3.9.99-debug","enabled":true,"outputFile":"TaxiApp_v3.3.3-beta26.3.9.99-debug{242}.apk","fullName":"debug","baseName":"debug","dirName":""},"path":"TaxiApp_v3.3.3-beta26.3.9.99-debug{242}.apk","properties":{}}]

View File

@ -4,5 +4,5 @@
# Location of the SDK. This is only used by Gradle. # Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the # For customization when using a Version Control System, please read the
# header note. # header note.
#Mon Nov 06 09:42:57 GMT+08:00 2023 #Sat Dec 02 11:15:51 GMT+08:00 2023
sdk.dir=D\:\\Android\\sdk sdk.dir=D\:\\Android\\sdk

View File

@ -1 +0,0 @@
[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":239,"versionName":"3.3.3-beta26.3.9.96-release","enabled":true,"outputFile":"TaxiApp_v3.3.3-beta26.3.9.96-release{239}.apk","fullName":"release","baseName":"release","dirName":""},"path":"TaxiApp_v3.3.3-beta26.3.9.96-release{239}.apk","properties":{}}]