修复有计次广告的时候重启后过了好几分钟才播的问题

This commit is contained in:
刘金华 2024-06-21 14:13:17 +08:00
parent 96376ed7fc
commit 37924fa2b5
31 changed files with 160 additions and 196 deletions

View File

@ -28,6 +28,12 @@
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/66c4a999c6f6d70833d2c8f86bcf185d/jetified-debug-db-base-1.0.6/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/66c4a999c6f6d70833d2c8f86bcf185d/jetified-debug-db-base-1.0.6/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/66c4a999c6f6d70833d2c8f86bcf185d/jetified-debug-db-base-1.0.6/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/66c4a999c6f6d70833d2c8f86bcf185d/jetified-debug-db-base-1.0.6/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/66c4a999c6f6d70833d2c8f86bcf185d/jetified-debug-db-base-1.0.6/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/66c4a999c6f6d70833d2c8f86bcf185d/jetified-debug-db-base-1.0.6/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/50940156addf6bddb76e95ed727c8bee/jetified-debug-db-base-1.0.6/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/50940156addf6bddb76e95ed727c8bee/jetified-debug-db-base-1.0.6/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/50940156addf6bddb76e95ed727c8bee/jetified-debug-db-base-1.0.6/jars/classes.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/14ef4c0cf733cf117ddea4bb23fad05f/jetified-debug-db-base-1.0.6/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/14ef4c0cf733cf117ddea4bb23fad05f/jetified-debug-db-base-1.0.6/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/14ef4c0cf733cf117ddea4bb23fad05f/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

@ -10,6 +10,9 @@
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/887f6708c215f50988e88d72cdabde59/jetified-stetho-1.5.1/annotations.zip!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/887f6708c215f50988e88d72cdabde59/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cccd8aa5fc5dd56698cef82da605b812/jetified-stetho-1.5.1/annotations.zip!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cccd8aa5fc5dd56698cef82da605b812/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/annotations.zip!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ea069d680a452b2b20ed9f28da603030/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/440f81a160906a9defe08b476792ce98/jetified-stetho-1.5.1/annotations.zip!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b2fc26a486b08ed641398608a6b45164/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!/" />
@ -39,6 +42,15 @@
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/69ab993d74cceb064b535055353ca0cb/jetified-stetho-1.5.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ea069d680a452b2b20ed9f28da603030/jetified-stetho-1.5.1/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ea069d680a452b2b20ed9f28da603030/jetified-stetho-1.5.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ea069d680a452b2b20ed9f28da603030/jetified-stetho-1.5.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/440f81a160906a9defe08b476792ce98/jetified-stetho-1.5.1/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/440f81a160906a9defe08b476792ce98/jetified-stetho-1.5.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/440f81a160906a9defe08b476792ce98/jetified-stetho-1.5.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b2fc26a486b08ed641398608a6b45164/jetified-stetho-1.5.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b2fc26a486b08ed641398608a6b45164/jetified-stetho-1.5.1/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b2fc26a486b08ed641398608a6b45164/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

@ -28,6 +28,15 @@
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1c32e92e942e346fa72f85577fbd57cb/jetified-GreenDaoUpgradeHelper-v2.2.1/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1c32e92e942e346fa72f85577fbd57cb/jetified-GreenDaoUpgradeHelper-v2.2.1/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1c32e92e942e346fa72f85577fbd57cb/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1c32e92e942e346fa72f85577fbd57cb/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1c32e92e942e346fa72f85577fbd57cb/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1c32e92e942e346fa72f85577fbd57cb/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb8df3919283efc1f3f23f8c7562b55/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb8df3919283efc1f3f23f8c7562b55/jetified-GreenDaoUpgradeHelper-v2.2.1/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6bb8df3919283efc1f3f23f8c7562b55/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/9f2d89654525734f9df46f8b0c86ea98/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/9f2d89654525734f9df46f8b0c86ea98/jetified-GreenDaoUpgradeHelper-v2.2.1/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/9f2d89654525734f9df46f8b0c86ea98/jetified-GreenDaoUpgradeHelper-v2.2.1/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/335eb90c2c2079801ad2d1562688d085/jetified-GreenDaoUpgradeHelper-v2.2.1/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/335eb90c2c2079801ad2d1562688d085/jetified-GreenDaoUpgradeHelper-v2.2.1/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/335eb90c2c2079801ad2d1562688d085/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

@ -28,6 +28,15 @@
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1adbba6365c42fc22a765dabaf2bf186/jetified-logger-2.2.0/jars/classes.jar!/" /> <root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1adbba6365c42fc22a765dabaf2bf186/jetified-logger-2.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1adbba6365c42fc22a765dabaf2bf186/jetified-logger-2.2.0/res" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1adbba6365c42fc22a765dabaf2bf186/jetified-logger-2.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1adbba6365c42fc22a765dabaf2bf186/jetified-logger-2.2.0/AndroidManifest.xml" /> <root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1adbba6365c42fc22a765dabaf2bf186/jetified-logger-2.2.0/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2c7174e836587cce110bf07de8a9d247/jetified-logger-2.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2c7174e836587cce110bf07de8a9d247/jetified-logger-2.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2c7174e836587cce110bf07de8a9d247/jetified-logger-2.2.0/AndroidManifest.xml" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/590a8d0b56e7f81871a8e48271d0a8db/jetified-logger-2.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/590a8d0b56e7f81871a8e48271d0a8db/jetified-logger-2.2.0/AndroidManifest.xml" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/590a8d0b56e7f81871a8e48271d0a8db/jetified-logger-2.2.0/jars/classes.jar!/" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8ccd565971f02f2b178029a4f4566ab1/jetified-logger-2.2.0/jars/classes.jar!/" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8ccd565971f02f2b178029a4f4566ab1/jetified-logger-2.2.0/res" />
<root url="file://$USER_HOME$/.gradle/caches/transforms-2/files-2.1/8ccd565971f02f2b178029a4f4566ab1/jetified-logger-2.2.0/AndroidManifest.xml" />
</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!/" />

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -21,8 +21,8 @@ android {
applicationId "net.sysolution.taxiapp" applicationId "net.sysolution.taxiapp"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 29 targetSdkVersion 29
versionCode 253 versionCode 256
versionName "3.3.3-beta26.4.1.2-release" versionName "3.3.3-beta26.4.1.5-release"
//alphaxx - ,bug //alphaxx - ,bug
//Betaxx - //Betaxx -
@ -64,6 +64,8 @@ android {
3.3.3-beta26.4.0.6-release GPS, 3.3.3-beta26.4.0.6-release GPS,
3.3.3-beta26.4.0.7-release GPS上报2502508 3.3.3-beta26.4.0.7-release GPS上报2502508
3.3.3-beta26.4.1.2-release GPS卫星数量为0时频繁刷新问题 3.3.3-beta26.4.1.2-release GPS卫星数量为0时频繁刷新问题
3.3.3-beta26.4.1.4-release GPS日志时100gps日志时2
3.3.3-beta26.4.1.5-release 广
**/ **/
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@ -75,8 +75,8 @@ class TaxiApp:Application() {
//gps日志定时器 //gps日志定时器
var gpsTimer: Timer? = null var gpsTimer: Timer? = null
//播放日志定时器 //存储静止点坐标定时器
var playerLogTimer: Timer? = null var quietGpsTimer: Timer? = null
//播放日志摘要定时器 //播放日志摘要定时器
var playerLogSummaryTimer: Timer? = null var playerLogSummaryTimer: Timer? = null

View File

@ -95,6 +95,7 @@ object Repository {
} }
fun getTestPlayCircularList(): MutableList<Advertise>? { fun getTestPlayCircularList(): MutableList<Advertise>? {
"getTestPlayCircularList".logd()
//#edit by ljh @2023/2/23 //#edit by ljh @2023/2/23
//如果正在播放的是多时段的定时广告,则返回定时广告的播放列表,否则返回不定时的播放列表 //如果正在播放的是多时段的定时广告,则返回定时广告的播放列表,否则返回不定时的播放列表
val taxiApp:TaxiApp = TaxiApp.instance() as TaxiApp val taxiApp:TaxiApp = TaxiApp.instance() as TaxiApp
@ -107,48 +108,6 @@ object Repository {
return list return list
} }
fun getAdvertiseNext(): Advertise? {
// return getPlayAdvertise(circularListMap[getPlayLevels()])
val isTimedAdvertise = Configurations.config(taxiApp.activity).isTimedAdvertise
// val advertise = getNextPlayAdvertise(myListMap[getTestPlayLevels()])
val advertise = if (isTimedAdvertise){
getNextPlayAdvertise(taxiApp.timedAds)
} else {
getNextPlayAdvertise(myListMap[getTestPlayLevels()])
}
"getAdvertiseNext() -> advertise:${advertise}".loge()
return advertise
}
/**
* 拿到将要播放的广告
*/
private fun getNextPlayAdvertise(list: MutableList<Advertise>?): Advertise? {
YoungUtil.YoungLog("getNextPlayAdvertise")
var nextIndex = currentListOrder + 1
list?.let {
if (it.isEmpty()) {
return null
}
for (index in 0..list.size) {
//防止下标越界
if (nextIndex >= list.size) {
nextIndex = 0
}
//YoungUtil.YoungLog("当前播放的广告list位数 $currentListOrder")
val advertise = list[nextIndex]
if (advertise.isAllowPlay()) {
//YoungUtil.YoungLog("拿到广告花费时间 ${System.currentTimeMillis() - currentTimeMillis}")
YoungUtil.YoungLog("拿到下一个广告:" + advertise.ad_id)
return advertise
}
}
}
return null
}
/** /**
@ -214,43 +173,6 @@ object Repository {
return null return null
} }
/**
* 拿到将要播放的广告
*/
private fun getTestPlayAdvertiseByTempList(list: MutableList<Advertise>?): Advertise? {
YoungUtil.YoungLog("getTestPlayAdvertiseByTempList")
val currentTimeMillis = System.currentTimeMillis()
list?.let {
if (it.isEmpty()) {
"播放列表是空的".loge()
return null
}
//防止如果需求定点广告切换成普通广告,但是要继续上次普通广告的播放,然后现在的广告列表数改变,下标越界的情况
// if(currentListOrder>=list.size){
// currentListOrder=0
// }
for (index in 0..list.size) {
//防止下标越界
if (currentListOrder >= list.size) {
currentListOrder = 0
}
//YoungUtil.YoungLog("当前播放的广告list位数 $currentListOrder")
val advertise = list[currentListOrder]
if (advertise.isAllowPlay()) {
//YoungUtil.YoungLog("拿到广告花费时间 ${System.currentTimeMillis() - currentTimeMillis}")
YoungUtil.YoungLog("拿到广告:" + advertise.ad_id)
return advertise
}
}
}
return null
}
/** /**
* 拿到应该播放的等级 * 拿到应该播放的等级
@ -456,7 +378,7 @@ object Repository {
if (newAdvertise.isAllowPlay()) { if (newAdvertise.isAllowPlay()) {
//#edit by ljh @2023/2/23 myListMap集合只存放不是定时插播的广告 //#edit by ljh @2023/2/23 myListMap集合只存放不是定时插播的广告
if (!newAdvertise.isTimedAd){ if (!newAdvertise.isTimedAd){
"广告准备ok 加入Mylist 广告ad_id:${newAdvertise.ad_id},是否是最后一个广告:${newAdvertise.isLast},belongto: ${newAdvertise.belongTo}".loge("Repository") "广告准备ok 加入Mylist 广告ad_id:${newAdvertise.ad_id},是否是最后一个广告:${newAdvertise.isLast},belongto: ${newAdvertise.belongTo}".loge()
myListMap[newAdvertise.belongTo]?.add(newAdvertise) myListMap[newAdvertise.belongTo]?.add(newAdvertise)
} else if(isTimedAdNow && newAdvertise.isTimedAd && newAdvertise.is_exclusive) { } else if(isTimedAdNow && newAdvertise.isTimedAd && newAdvertise.is_exclusive) {
taxiApp.timedAds.forEach { taxiApp.timedAds.forEach {
@ -470,6 +392,8 @@ object Repository {
// myListMap[newAdvertise.belongTo]?.add(newAdvertise) // myListMap[newAdvertise.belongTo]?.add(newAdvertise)
} else { } else {
YoungUtil.YoungLog("广告不满足不加入播放列表:${newAdvertise.ad_id}") YoungUtil.YoungLog("广告不满足不加入播放列表:${newAdvertise.ad_id}")
//edit by ljh @2023/8/14
taxiApp.daoAds.clear()
} }
} }
} catch (e:Exception){ } catch (e:Exception){
@ -544,7 +468,7 @@ object Repository {
if (playViewModel == null) { if (playViewModel == null) {
playViewModel = viewModel playViewModel = viewModel
} }
refreshMyList() // refreshMyList()
// refreshCircularList() // refreshCircularList()
// playViewModel?.refreshAdvertise(getAdvertiseTEST()) // playViewModel?.refreshAdvertise(getAdvertiseTEST())
playViewModel?.refreshAdvertise() playViewModel?.refreshAdvertise()
@ -588,14 +512,16 @@ object Repository {
val syncTimeModel = getSyncSingleTime(currentSyncTime, getTestPlayCircularList()) val syncTimeModel = getSyncSingleTime(currentSyncTime, getTestPlayCircularList())
YoungUtil.YoungLog("播放方式为同步播放,同步时间:${syncTimeModel.delay}=============================================") YoungUtil.YoungLog("播放方式为同步播放,同步时间:${syncTimeModel.delay}=============================================")
val currentTimeMillis = System.currentTimeMillis() val currentTimeMillis = System.currentTimeMillis()
val advertise = getAdvertiseTEST() // val advertise = getAdvertiseTEST()
val getAdvertiseSyncTime = syncTimeModel.delay-(System.currentTimeMillis()-currentTimeMillis) val getAdvertiseSyncTime = syncTimeModel.delay-(System.currentTimeMillis()-currentTimeMillis)
YoungUtil.YoungLog("获取到广告的时间 校准同步时间:$getAdvertiseSyncTime") YoungUtil.YoungLog("获取到广告的时间 校准同步时间:$getAdvertiseSyncTime")
// handler.postDelayed(SyncTimerTask(playViewModel!!, advertise, syncTimeModel.currentPosition), syncTimeModel.delay) // handler.postDelayed(SyncTimerTask(playViewModel!!, advertise, syncTimeModel.currentPosition), syncTimeModel.delay)
"即将播放的视频索引:${syncTimeModel.currentPosition}".logd()
kuroTimer.cancel() kuroTimer.cancel()
kuroTimer.purge() kuroTimer.purge()
kuroTimer = KuroTimer() kuroTimer = KuroTimer()
kuroTimer.schedule(SyncTimerTask(playViewModel!!, advertise, syncTimeModel.currentPosition), syncTimeModel.delay) // kuroTimer.schedule(SyncTimerTask(playViewModel!!, advertise, syncTimeModel.currentPosition), syncTimeModel.delay)
kuroTimer.schedule(SyncTimerTask(playViewModel!!, null, syncTimeModel.currentPosition), syncTimeModel.delay)
} else { } else {
//非同步播放或者定点播放 //非同步播放或者定点播放
YoungUtil.YoungLog("播放方式为非同步播放") YoungUtil.YoungLog("播放方式为非同步播放")

View File

@ -514,10 +514,10 @@ object ConnManger {
"启动发送坐标线程".logd() "启动发送坐标线程".logd()
sendGPSLogSwitch = true sendGPSLogSwitch = true
while (true) { while (true) {
val locations = DaoUtil.getLocations() // val locations = DaoUtil.getLocations()
"locations size:${locations.size}".logd() val upLocations = DaoUtil.getLocationDao().queryBuilder().limit(100).build().list()
if (locations.isNotEmpty()){ "locations size:${upLocations.size}".logd()
val upLocations = DaoUtil.getLocationDao().queryBuilder().limit(250).build().list() if (upLocations.isNotEmpty()){
val requestJson: String = ProcessingCommands.gson.toJson(upLocations) val requestJson: String = ProcessingCommands.gson.toJson(upLocations)
"提交GPS数据 $requestJson".logd() "提交GPS数据 $requestJson".logd()
val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull() val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull()
@ -528,6 +528,7 @@ object ConnManger {
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
.addHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).appToken()}") .addHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).appToken()}")
// .addHeader("Accept-Encoding", "gzip")
.post(body) .post(body)
.build() .build()
val response = OkHttpTool.getInstance().client.newCall(request).execute() val response = OkHttpTool.getInstance().client.newCall(request).execute()
@ -537,58 +538,23 @@ object ConnManger {
DaoUtil.getLocationDao().deleteInTx(upLocations) DaoUtil.getLocationDao().deleteInTx(upLocations)
"删除GPS日志成功,upLocations.size:${upLocations.size}".logd() "删除GPS日志成功,upLocations.size:${upLocations.size}".logd()
if(upLocations.size < 250) { // if(upLocations.size < 250) {
Thread.sleep(8*60*1000L) // Thread.sleep(8*60*1000L)
} // }
} else { } else {
"上传GPS日志失败".loge() "上传GPS日志失败".loge()
Thread.sleep(3*60*1000L) Thread.sleep(2*60*1000L)
} }
} catch (e: Exception) { } catch (e: Exception) {
"Exception:${e.message}".loge() "up logs failed,Exception:${e.message}".loge()
Thread.sleep(3*60*1000L) Thread.sleep(2*60*1000L)
} }
// EasyHttp.post(url)
// .readTimeOut(80*1000) //读超时80s,单位毫秒
// .writeTimeOut(80*1000) //写超时80s,单位毫秒
// .connectTimeout(80*1000) //连接超时80s,单位毫秒
// .headers("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).appToken()}")
// .requestBody(body)
// .retryCount(5) //网络不好自动重试5次
// .retryDelay(600) //本次请求重试延迟时间600ms
// .syncRequest(true)//设置同步请求
// .execute(object : SimpleCallBack<String>(){
// override fun onError(e: ApiException?) {
// "上传GPS数据失败${e?.message}".loge()
// try {
// Thread.sleep(3*60*1000L)
// }catch (e: Exception) {
// "${e?.message}".loge()
// e.printStackTrace()
// }
// }
//
// override fun onSuccess(t: String?) {
// "上传GPS数据成功 $t".loge()
// DaoUtil.getLocationDao().deleteInTx(upLocations)
// "删除GPS数据成功".logd()
// }
// })
// if(upLocations.size<250) {
// try {
// Thread.sleep(8*60*1000L)
// } catch (e: Exception) {
// "${e?.message}".loge()
// e.printStackTrace()
// }
// }
} else { } else {
"gps数据小于0条不上传3分钟后再次查询".logd() "gps数据小于0条不上传2分钟后再次查询".logd()
try { try {
Thread.sleep(3*60*1000L) Thread.sleep(2*60*1000L)
}catch (e: Exception) { } catch (e: Exception) {
"${e?.message}".loge() "${e?.message}".loge()
e.printStackTrace() e.printStackTrace()
} }
@ -1018,25 +984,7 @@ object ConnManger {
} }
/**
* 发送播放日志
*/
fun sendLogger() {
taxiApp.playerLogTimer?.let {
it.cancel()
it.purge()
}
//edit by yzd @20211201
//if (Settings.loggerSwitch) {
if (Configurations.config(TaxiApp.instance()).loggerSwitch()) {
taxiApp.playerLogTimer = Timer()
taxiApp.playerLogTimer?.schedule(object :TimerTask(){
override fun run() {
sendLoggerToWeb()
}
},5000,30000)
}
}
/** /**
* 提交播放日志 * 提交播放日志
@ -1048,10 +996,11 @@ object ConnManger {
"提交播放日志线程启动".logd() "提交播放日志线程启动".logd()
sendPlayerLogSwitch = true sendPlayerLogSwitch = true
while (true){ while (true){
val playerLogs = DaoUtil.getPlayLoggers() // val playerLogs = DaoUtil.getPlayLoggers()
val playerLogs = DaoUtil.getPlayLogger().queryBuilder().limit(100).build().list()
"播放日志数据数量:${playerLogs.size}".logd() "播放日志数据数量:${playerLogs.size}".logd()
if (playerLogs.size>10){ if (playerLogs.size>10){
EasyHttpTool.sendPlayLogToServer() EasyHttpTool.sendPlayLogToServer(playerLogs)
} else { } else {
try { try {
Thread.sleep(60*1000L) Thread.sleep(60*1000L)

View File

@ -40,7 +40,7 @@ public class JoeyDownloadManager {
private static IPlay iPlay; private static IPlay iPlay;
//edit by ljh 2022/11/29 //edit by ljh 2022/11/29
private static final int RETRY_TIMES = 600; private static final int RETRY_TIMES = 600;
private static int downloadCount =100;//重试的次数 private static int downloadCount = 100;//重试的次数
private static Application app; private static Application app;
// private LastThread lastThread = null;//执行最后一次 // private LastThread lastThread = null;//执行最后一次

View File

@ -336,7 +336,7 @@ object ProcessingCommands {
Configurations.config(TaxiApp.instance()).loggerSwitchSave(true) Configurations.config(TaxiApp.instance()).loggerSwitchSave(true)
if (loggerInterval.interval > -1){ if (loggerInterval.interval > -1){
Configurations.config(TaxiApp.instance()).logIntervalSave(loggerInterval.interval) Configurations.config(TaxiApp.instance()).logIntervalSave(loggerInterval.interval)
ConnManger.sendLogSummaryByInterval(loggerInterval.interval) // ConnManger.sendLogSummaryByInterval(loggerInterval.interval)
} }
baseResponse.type = type baseResponse.type = type
@ -1036,7 +1036,7 @@ object ProcessingCommands {
"${task_id}计次播放,该广告播放次数为${sanleAdvertise.play_numbers}".logd() "${task_id}计次播放,该广告播放次数为${sanleAdvertise.play_numbers}".logd()
} }
if (time_section != null && time_section.size>0){ if (time_section != null && time_section.size>0 && !isCount){
isTimedAd = true isTimedAd = true
"${task_id}是分时段播放广告".loge() "${task_id}是分时段播放广告".loge()
} }

View File

@ -7,6 +7,7 @@ import cn.trans88.taxiappkotlin.ext.loge
import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao
import cn.trans88.taxiappkotlin.logic.dao.DaoUtil import cn.trans88.taxiappkotlin.logic.dao.DaoUtil
import cn.trans88.taxiappkotlin.logic.dao.RunTimeDataDao import cn.trans88.taxiappkotlin.logic.dao.RunTimeDataDao
import cn.trans88.taxiappkotlin.logic.model.PlayLogger
import cn.trans88.taxiappkotlin.logic.model.RunTimeData import cn.trans88.taxiappkotlin.logic.model.RunTimeData
import cn.trans88.taxiappkotlin.logic.model.RuntimeJson import cn.trans88.taxiappkotlin.logic.model.RuntimeJson
import cn.trans88.taxiappkotlin.logic.network.ProcessingCommands import cn.trans88.taxiappkotlin.logic.network.ProcessingCommands
@ -168,9 +169,8 @@ object EasyHttpTool {
/** /**
* 上传100条播放日志 * 上传100条播放日志
*/ */
fun sendPlayLogToServer(){ fun sendPlayLogToServer(dbPlayerLogs:List<PlayLogger>){
val tenPlayLogs = DaoUtil.getPlayLogger().queryBuilder().limit(100).build().list() val logJson = ProcessingCommands.gson.toJson(dbPlayerLogs)
val logJson = ProcessingCommands.gson.toJson(tenPlayLogs)
"提交日志Json $logJson".logd() "提交日志Json $logJson".logd()
val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull() val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull()
val body = RequestBody.create(parse, logJson) val body = RequestBody.create(parse, logJson)
@ -188,14 +188,14 @@ object EasyHttpTool {
"response body:${response?.body?.string().toString()}".logd() "response body:${response?.body?.string().toString()}".logd()
if (response.isSuccessful){ if (response.isSuccessful){
"上传日志成功 ".logd() "上传日志成功 ".logd()
DaoUtil.getPlayLogger().deleteInTx(tenPlayLogs) DaoUtil.getPlayLogger().deleteInTx(dbPlayerLogs)
"删除日志成功".logd() "删除日志成功".logd()
} else { } else {
"上传日志失败".loge() "上传日志失败".loge()
Thread.sleep(60*1000L) Thread.sleep(60*1000L)
} }
} catch (e: Exception) { } catch (e: Exception) {
"Exception:${e.message}".loge() "提交失败Exception:${e.message}".loge()
Thread.sleep(60*1000L) Thread.sleep(60*1000L)
} }

View File

@ -331,7 +331,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
startRuntimeTimer() startRuntimeTimer()
} }
DayType.IS_SECOND_DAY.ordinal -> { DayType.IS_SECOND_DAY.ordinal -> {
ConnManger.sendLogsSummary() // ConnManger.sendLogsSummary()
sendLogInterval() sendLogInterval()
//先计算上次重启前的运行时间 //先计算上次重启前的运行时间
val lastSumTime = configurations.sumRunTime() val lastSumTime = configurations.sumRunTime()
@ -384,7 +384,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
val logInterval = configurations.logInterval() val logInterval = configurations.logInterval()
"logInterval:$logInterval".logd() "logInterval:$logInterval".logd()
if (logInterval > 0){ if (logInterval > 0){
ConnManger.sendLogSummaryByInterval(logInterval) // ConnManger.sendLogSummaryByInterval(logInterval)
} }
} }
@ -467,7 +467,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
// } // }
if (DayType.IS_SECOND_DAY.ordinal == type) { if (DayType.IS_SECOND_DAY.ordinal == type) {
ConnManger.sendLogsSummary() // ConnManger.sendLogsSummary()
val lastRunTime = endRuntime - startRuntime val lastRunTime = endRuntime - startRuntime
val yesterdayRuntime = configurations.sumRunTime() + lastRunTime val yesterdayRuntime = configurations.sumRunTime() + lastRunTime
@ -672,9 +672,10 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
*/ */
fun cancelCustomView(){ fun cancelCustomView(){
YoungUtil.YoungLog("取消自定义显示,路线、左转右转等..") YoungUtil.YoungLog("取消自定义显示,路线、左转右转等..")
runOnUiThread{
ll_bus.visibility = View.GONE ll_bus.visibility = View.GONE
img_other_screen.visibility = View.GONE img_other_screen.visibility = View.GONE
}
fl_play.apply { fl_play.apply {
val logoView = this.findViewWithTag<View>("logo") val logoView = this.findViewWithTag<View>("logo")

View File

@ -85,6 +85,8 @@ import java.util.*
var isSendedLog: Boolean = true var isSendedLog: Boolean = true
//从缓存获取次数达到8888次后从数据库获取一次数据并更新缓存 //从缓存获取次数达到8888次后从数据库获取一次数据并更新缓存
const val MAX_CACHE: Int = 8888 const val MAX_CACHE: Int = 8888
// 跳跃点的距离阈值,单位为米
const val JUMP_THRESHOLD = 10000.0f
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>()
@ -504,6 +506,8 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
if(!advertise.isCount){ if(!advertise.isCount){
setCurAdvertise(advertise) setCurAdvertise(advertise)
} else {
curAdvertise = advertise
} }
//edit by yzd @2022-09-09 //edit by yzd @2022-09-09
@ -598,17 +602,22 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
//用来防止有多余的view没有删除。 //用来防止有多余的view没有删除。
if (fl_play.childCount > 1) { if (fl_play.childCount > 1) {
fl_play.post { fl_play.postDelayed({
YoungUtil.YoungLog("删除ViewFrameLayout有多少子视图${fl_play.childCount}") YoungUtil.YoungLog("删除ViewFrameLayout有多少子视图${fl_play.childCount}")
if (fl_play.childCount > 1) { if (fl_play.childCount > 1) {
val childView = fl_play[0] val childView = fl_play[0]
//edit by ljh on2024/5/9
if (childView is EmptyControlVideo) {
"上一个图层是软解码视图释放资源is EmptyControlVideo".loge()
childView.release()
}
if (childView != null) { if (childView != null) {
fl_play.removeView(childView) fl_play.removeView(childView)
} }
} }
} },2000L)
// fl_play.postDelayed({ // fl_play.postDelayed({
// YoungUtil.YoungLog("删除ViewFrameLayout有多少子视图${fl_play.childCount}") // YoungUtil.YoungLog("删除ViewFrameLayout有多少子视图${fl_play.childCount}")
@ -1073,6 +1082,12 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
//edit by ljh@2023/8/22 //edit by ljh@2023/8/22
if (distanceLocation > 20) { if (distanceLocation > 20) {
// Log.d("LCT","DistanceUtil --> distanceLocation:$distanceLocation") // Log.d("LCT","DistanceUtil --> distanceLocation:$distanceLocation")
//edit by ljh@2024/5/9
taxiApp.quietGpsTimer?.apply {
cancel()
purge()
}
taxiApp.quietGpsTimer = null
// edit by yzd @20211201 // edit by yzd @20211201
// if (Settings.gpsSwitch) { // if (Settings.gpsSwitch) {
@ -1096,13 +1111,14 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
} }
//过滤掉距离过大的数据edit by ljh 2023/8/8 //过滤掉距离过大的数据edit by ljh 2023/8/8
// location.distance?.let { location.distance?.let {
// if (it < 10000f){ if (it < JUMP_THRESHOLD){
// DaoUtil.getLocationDao().insert(location) DaoUtil.getLocationDao().insert(location)
// } // 如果不是跳跃点,更新上一个有效点的坐标
// } curLocation = location
DaoUtil.getLocationDao().insert(location) }
curLocation = location }
// DaoUtil.getLocationDao().insert(location)
//debug 将日志存卡里看location信息对不对 //debug 将日志存卡里看location信息对不对
// taxiApp.saveLog(location.toString()) // taxiApp.saveLog(location.toString())
} else { } else {
@ -1127,7 +1143,22 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
} }
} }
} else { } else {
YoungUtil.YoungLog("当前位置坐标距离上一个点小于20不记录") YoungUtil.YoungLog("当前位置坐标距离上一个点小于20")
//edit by ljh@2024/5/9
val lon = String.format("%.7f", longitude).toDouble()
val lat = String.format("%.7f", latitude).toDouble()
val location = Location().apply {
timestamp = System.currentTimeMillis()
setLongitude(lon)
setLatitude(lat)
setBearing(bearing)
setSpeed(speed)
// val floatArray = FloatArray(1)
// distanceBetween(curLocation?.latitude!!, curLocation?.longitude!!, latitude, longitude, floatArray)
distance = distanceLocation.toFloat()
elapse = timestamp - curLocation?.timestamp!!
}
saveQuietGPS(location)
return return
} }
} else { } else {
@ -1136,6 +1167,23 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
} }
} }
/**
* 存储静止点
* @param location Location
*/
private fun saveQuietGPS(location: Location) {
if (taxiApp.quietGpsTimer == null) {
"开启存储静止点的定时器".logd()
taxiApp.quietGpsTimer = Timer()
taxiApp.quietGpsTimer?.schedule(object :TimerTask(){
override fun run() {
"三分钟没收到非静止的点了,存储静止点:${location.timestamp}".logd()
DaoUtil.getLocationDao().insert(location)
}
},3*60*1000,3*60*1000)
}
}
/** /**
* 判断是否当前是否已经在播当前区域的定点广告 * 判断是否当前是否已经在播当前区域的定点广告
*/ */

View File

@ -4,6 +4,7 @@ import android.os.Handler
import cn.trans88.kurotool.util.TimeUtil import cn.trans88.kurotool.util.TimeUtil
import cn.trans88.taxiappkotlin.ext.logd import cn.trans88.taxiappkotlin.ext.logd
import cn.trans88.taxiappkotlin.ext.loge import cn.trans88.taxiappkotlin.ext.loge
import cn.trans88.taxiappkotlin.logic.Repository
import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao
import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao.Properties import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao.Properties
import cn.trans88.taxiappkotlin.logic.dao.DaoUtil import cn.trans88.taxiappkotlin.logic.dao.DaoUtil
@ -91,6 +92,7 @@ fun Advertise.isAllowPlay(): Boolean {
if (advertise == null){ if (advertise == null){
YoungUtil.YoungLog("广告已经下坎不再播放:${this.ad_id}") YoungUtil.YoungLog("广告已经下坎不再播放:${this.ad_id}")
return false return false
} }

View File

@ -118,9 +118,9 @@ object SyncUtil {
sum += advertise.duration.toInt() sum += advertise.duration.toInt()
if (sum>=passModuleTime){ if (sum >= passModuleTime){
currentPosition =index+1 currentPosition = index+1
delay =sum -passModuleTime delay = sum - passModuleTime
if (currentPosition >= list.size) { if (currentPosition >= list.size) {
YoungUtil.YoungLog("同步时当前播放广告位置大于列表长度重置为0") YoungUtil.YoungLog("同步时当前播放广告位置大于列表长度重置为0")

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.
#Thu Apr 18 17:50:04 GMT+08:00 2024 #Tue May 21 14:20:34 GMT+08:00 2024
sdk.dir=D\:\\Android\\sdk sdk.dir=D\:\\Android\\sdk

View File

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