优化定点广告切换黑屏问题
This commit is contained in:
parent
0f9e99fb8c
commit
71c6f658fd
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="11" />
|
||||
<bytecodeTargetLevel target="1.8" />
|
||||
</component>
|
||||
</project>
|
|
@ -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/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="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>
|
||||
<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!/" />
|
||||
|
|
|
@ -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/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/083aec472dafcfc3b0c0d766cd43b137/jetified-stetho-1.5.1/annotations.zip!/" />
|
||||
</ANNOTATIONS>
|
||||
<CLASSES>
|
||||
<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/res" />
|
||||
<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>
|
||||
<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!/" />
|
||||
|
|
|
@ -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="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/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>
|
||||
<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!/" />
|
||||
|
|
|
@ -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="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="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>
|
||||
<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!/" />
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</map>
|
||||
</option>
|
||||
</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" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -87,11 +87,11 @@
|
|||
<orderEntry type="module-library">
|
||||
<library name="Gradle: kaptGeneratedClasses">
|
||||
<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/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>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
|
|
@ -89,10 +89,10 @@
|
|||
<orderEntry type="module-library">
|
||||
<library name="Gradle: kaptGeneratedClasses">
|
||||
<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/debugAndroidTest" />
|
||||
<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" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
|
|
|
@ -21,8 +21,8 @@ android {
|
|||
applicationId "net.sysolution.taxiapp"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 29
|
||||
versionCode 240
|
||||
versionName "3.3.3-beta26.3.9.97-debug"
|
||||
versionCode 242
|
||||
versionName "3.3.3-beta26.3.9.99-debug"
|
||||
|
||||
//alphaxx - 预览版本,不会对外发布,由测试人员测试,会有很多bug
|
||||
//Betaxx - 公开测试版本,会发给其他工作人员,会有较多版本
|
||||
|
@ -58,7 +58,8 @@ android {
|
|||
3.3.3-beta26.3.9.3.94 新增播放日志开关,gps开关查询,直接清除所有广告功能
|
||||
3.3.3-beta26.3.9.3.95 修复日志重复上传问题
|
||||
26.3.9.96 播放时长为广告素材的播放时长
|
||||
26.3.9.97 记录taxiApp当天的运行时间
|
||||
26.3.9.98 记录taxiApp当天的运行时间
|
||||
26.3.9.99 优化日志上传,改为一天只传一次昨天的播放记录。
|
||||
**/
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
@ -172,7 +173,6 @@ dependencies {
|
|||
// implementation 'androidx.room:room-runtime:2.2.5'//room
|
||||
// kapt "androidx.room:room-compiler:2.2.5"
|
||||
|
||||
|
||||
//lifecycle协程
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-core-ktx:$livedata"
|
||||
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$livedata"
|
||||
|
|
|
@ -396,6 +396,28 @@ public class Configurations {
|
|||
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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -75,7 +75,9 @@ class TaxiApp:Application() {
|
|||
// lateinit var listener:Player.Listener
|
||||
// var player: SimpleExoPlayer? = null
|
||||
// lateinit var factory: ProgressiveMediaSource.Factory
|
||||
var sendLogTimes = 0
|
||||
|
||||
var isPositionRefresh = false
|
||||
|
||||
companion object{
|
||||
private var instance:Application? =null
|
||||
|
|
|
@ -72,6 +72,11 @@ object Repository {
|
|||
currentSyncTime = syncTime
|
||||
}
|
||||
|
||||
fun cancelTimer(){
|
||||
kuroTimer.cancel()
|
||||
kuroTimer.purge()
|
||||
}
|
||||
|
||||
fun getAdvertiseTEST(): Advertise? {
|
||||
synchronized(TaxiApp::class.java){
|
||||
val list = myListMap[getTestPlayLevels()]
|
||||
|
@ -571,7 +576,13 @@ object Repository {
|
|||
currentListOrder = 0
|
||||
refreshMyList()
|
||||
// "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) {
|
||||
val syncTimeModel = getSyncSingleTime(currentSyncTime, getTestPlayCircularList())
|
||||
|
|
|
@ -9,5 +9,9 @@ package cn.trans88.taxiappkotlin.logic.model
|
|||
data class LogSummary(
|
||||
val ad_id: String,
|
||||
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
|
||||
)
|
||||
|
|
|
@ -18,6 +18,7 @@ import cn.trans88.taxiappkotlin.logic.dao.DaoUtil
|
|||
import cn.trans88.taxiappkotlin.logic.model.*
|
||||
import cn.trans88.taxiappkotlin.play.RefreshPlayer
|
||||
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.KuroTimerTask
|
||||
import cn.trans88.taxiappkotlin.util.YoungUtil
|
||||
|
@ -39,8 +40,11 @@ import okhttp3.RequestBody.Companion.asRequestBody
|
|||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.ThreadPoolExecutor
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.stream.Collectors
|
||||
import kotlin.concurrent.thread
|
||||
|
||||
/**
|
||||
* @author TRS
|
||||
|
@ -189,7 +193,7 @@ object ConnManger {
|
|||
}
|
||||
}
|
||||
|
||||
sendLogger()
|
||||
// sendLogger()
|
||||
sendLocation()
|
||||
//edit by ljh @2023/9/1
|
||||
WsManager.isRegister = false
|
||||
|
@ -684,22 +688,33 @@ object ConnManger {
|
|||
*/
|
||||
fun sendLogsSummary(){
|
||||
YoungUtil.YoungLog("sendLogger in Thread is ${Looper.getMainLooper().thread === Thread.currentThread()}")
|
||||
thread {
|
||||
val playLoggers = DaoUtil.getPlayLoggers()
|
||||
if (playLoggers.isNotEmpty()) {
|
||||
//#edit by ljh @2023/6/5 改成大批量看是否能减小流量消耗
|
||||
val requestJson = ProcessingCommands.gson.toJson(playLoggers)
|
||||
|
||||
for (playLogger in playLoggers) {
|
||||
DaoUtil.getPlayLogger().delete(playLogger)
|
||||
"playLoggers size: ${playLoggers.size}".logd()
|
||||
val requestJson = getLogSummaryJson(playLoggers)
|
||||
if (requestJson.isNotEmpty()){
|
||||
sendLogsSummaryToWeb(requestJson)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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 body = RequestBody.create(parse, requestJson)
|
||||
YoungUtil.YoungLog("sendLogger:${requestJson}")
|
||||
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("Accept-Encoding", "gzip")
|
||||
.post(body)
|
||||
|
@ -709,46 +724,100 @@ object ConnManger {
|
|||
|
||||
override fun onFailure(call: Call, e: IOException) {
|
||||
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) {
|
||||
YoungUtil.YoungLog("上传日志成功:${response.message},response isSuccessful ${response.isSuccessful}${response.code}")
|
||||
|
||||
// if (response.code == 200) {
|
||||
// //#edit by ljh @2023/6/5 删除批量上传的日志
|
||||
// DaoUtil.getPlayLogger().deleteAll()
|
||||
// }
|
||||
"删除已上传的日志".logd()
|
||||
if (response.code == 200) {
|
||||
Configurations.config(taxiApp).logSummaryJsonStringSave("")
|
||||
isSendedLog = false
|
||||
} else {
|
||||
"服务器没回复200,重新上传日志摘要".loge()
|
||||
"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 playLoggers = DaoUtil.getPlayLoggers()
|
||||
val maxEndPlayTs = playLoggers.map {
|
||||
it.end_play_ts
|
||||
}.max()
|
||||
val minBeginPlayTs = playLoggers.map {
|
||||
it.begin_play_ts
|
||||
}.min()
|
||||
|
||||
"开始播放时间:$minBeginPlayTs,最后一条日志的播放时间:$maxEndPlayTs".loge()
|
||||
if (playLoggers.isNotEmpty()) {
|
||||
val logsGroup = playLoggers.groupBy { it.ad_id }
|
||||
logsGroup.keys.forEach {
|
||||
val adId = it
|
||||
logsGroup.get(it)?.let { playLoggers ->
|
||||
val beginPlayTime = playLoggers.map { it.begin_play_ts }.min() ?: 0L
|
||||
val endPlayTime = playLoggers.map { it.end_play_ts }.max() ?: 0L
|
||||
val playNums = playLoggers.size
|
||||
val playLogger = playLoggers.get(0)
|
||||
val ad_type = playLogger.ad_type
|
||||
val media_url = playLogger.media_url
|
||||
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) {
|
||||
DaoUtil.getPlayLogger().delete(playLogger)
|
||||
}
|
||||
|
||||
jsonStr = Gson().toJson(summaryList)
|
||||
Configurations.config(taxiApp).logSummaryJsonStringSave(jsonStr)
|
||||
}
|
||||
"日志概要json:$jsonStr".loge()
|
||||
return jsonStr
|
||||
}
|
||||
|
||||
/**
|
||||
* 上报运行时长
|
||||
*/
|
||||
var runtimeTimer:Timer? = null
|
||||
fun sendRuntimeToWeb(){
|
||||
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("准备上报运行时长")
|
||||
val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull()
|
||||
val body = RequestBody.create(parse, jsonStr)
|
||||
|
@ -764,12 +833,18 @@ object ConnManger {
|
|||
|
||||
override fun onFailure(call: Call, e: IOException) {
|
||||
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() {
|
||||
"重新上报运行时长".loge()
|
||||
sendRuntimeToWeb()
|
||||
}
|
||||
},5000)
|
||||
},3000L)
|
||||
}
|
||||
|
||||
override fun onResponse(call: Call, response: Response) {
|
||||
|
@ -777,6 +852,18 @@ object ConnManger {
|
|||
if (response.code == 200) {
|
||||
"清除上传成功的运行时长数据".loge()
|
||||
Configurations.config(taxiApp).runtimeJsonStringSave("")
|
||||
} else {
|
||||
"3s后重新上报运行时长".loge()
|
||||
runtimeTimer?.let {
|
||||
it.cancel()
|
||||
it.purge()
|
||||
}
|
||||
runtimeTimer = Timer()
|
||||
runtimeTimer?.schedule(object :TimerTask(){
|
||||
override fun run() {
|
||||
sendRuntimeToWeb()
|
||||
}
|
||||
},3000L)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -193,6 +193,26 @@ object ProcessingCommands {
|
|||
sanleResponse.turn_on = turn_on
|
||||
val response = gson.toJson(sanleResponse)
|
||||
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){
|
||||
// ConnManger.loggerTimer?.cancel()
|
||||
// ConnManger.loggerTimer?.purge()
|
||||
ConnManger.sendLogger()
|
||||
|
||||
// ConnManger.sendLogger()
|
||||
}
|
||||
|
||||
baseResponse.type = type
|
||||
|
|
|
@ -170,7 +170,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
|
||||
customView()
|
||||
|
||||
Thread(Runnable { clearOverdueLogger() }).start()
|
||||
// Thread(Runnable { clearOverdueLogger() }).start()
|
||||
val serverIntent = Intent(this, PlayServer::class.java)
|
||||
startService(serverIntent)
|
||||
//开机不管同步不同步直接先放
|
||||
|
@ -199,7 +199,8 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
var cacheStartTime:Long = configurations.startRunTime()
|
||||
var currentTime = System.currentTimeMillis()
|
||||
"saveStartTime ---> currentTime:$currentTime".loge()
|
||||
if (currentTime>23646086L){
|
||||
|
||||
if (currentTime > 23646086L && currentTime > cacheStartTime){
|
||||
|
||||
startSaveRunTimer?.let {
|
||||
it.purge()
|
||||
|
@ -210,13 +211,28 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
var dayType = DateUtil.getDaysDiff(currentTime,cacheStartTime)
|
||||
when(dayType){
|
||||
DayType.IS_OTHER_DAY.ordinal -> { //如果缓存的启动时间是三天前(或更久)了,或者为零,直接覆盖
|
||||
configurations.logSummaryJsonStringSave("")
|
||||
Thread(Runnable { clearOverdueLogger() }).start()
|
||||
isSendedLog = false
|
||||
"startRunTime,endRunTime初始化为:$currentTime".loge()
|
||||
configurations.startRunTimeSave(currentTime)
|
||||
configurations.endRunTimeSave(currentTime)
|
||||
configurations.firstRunTimeSave(currentTime)
|
||||
configurations.sumRunTimeSave(0L)
|
||||
configurations.runtimeJsonStringSave("")
|
||||
startRuntimeTimer()
|
||||
}
|
||||
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 lastStartRuntime = configurations.startRunTime()
|
||||
|
@ -229,7 +245,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
"程序启动,目前运行时间(毫秒):${todaySumRuntime}".loge()
|
||||
|
||||
//测试上报接口
|
||||
// val runtimeJson = RuntimeJson(configurations.cardId(),todaySumRuntime,System.currentTimeMillis())
|
||||
// val runtimeJson = RuntimeJson(configurations.cardId(),todaySumRuntime,lastStartRuntime)
|
||||
// configurations.runtimeJsonStringSave(Gson().toJson(runtimeJson))
|
||||
if (!configurations.runtimeJsonString().isNullOrEmpty()){
|
||||
ConnManger.sendRuntimeToWeb()
|
||||
|
@ -241,6 +257,8 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
startRuntimeTimer()
|
||||
}
|
||||
DayType.IS_SECOND_DAY.ordinal -> {
|
||||
ConnManger.sendLogsSummary()
|
||||
|
||||
//先计算上次重启前的运行时间
|
||||
val lastSumTime = configurations.sumRunTime()
|
||||
val lastStartRuntime = configurations.startRunTime()
|
||||
|
@ -251,18 +269,21 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
val yesterdaySumTime = lastRunTime + lastSumTime
|
||||
"程序启动,昨天运行时间(毫秒):${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))
|
||||
ConnManger.sendRuntimeToWeb()
|
||||
//保存新的开始运行时间,和结束时间
|
||||
configurations.startRunTimeSave(currentTime)
|
||||
configurations.endRunTimeSave(currentTime)
|
||||
configurations.firstRunTimeSave(currentTime)
|
||||
configurations.sumRunTimeSave(0L)
|
||||
startRuntimeTimer()
|
||||
}
|
||||
else -> {
|
||||
configurations.startRunTimeSave(currentTime)
|
||||
configurations.endRunTimeSave(currentTime)
|
||||
configurations.firstRunTimeSave(currentTime)
|
||||
configurations.sumRunTimeSave(0L)
|
||||
}
|
||||
}
|
||||
|
@ -293,17 +314,41 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
override fun run() {
|
||||
val endRuntime = configurations.endRunTime()
|
||||
val startRuntime = configurations.startRunTime()
|
||||
val currentTime = System.currentTimeMillis()
|
||||
"RuntimeTimer --> currentEndRuntime:$endRuntime".loge()
|
||||
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 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))
|
||||
ConnManger.sendRuntimeToWeb()
|
||||
//保存新的开始运行时间,和结束时间
|
||||
configurations.startRunTimeSave(endRuntime)
|
||||
configurations.firstRunTimeSave(endRuntime)
|
||||
configurations.sumRunTimeSave(0L)
|
||||
}
|
||||
|
||||
|
@ -351,6 +396,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
|
||||
override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
|
||||
YoungUtil.YoungLog("bindService onServiceConnected")
|
||||
|
||||
connService = ConnService.Stub.asInterface(service)
|
||||
ConnManger.setConnService(connService)
|
||||
ConnManger.registerApp()
|
||||
|
@ -409,7 +455,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
|
|||
val overdueTime = currentTimeMillis - 30 * 24 * 60 * 60 * 1000
|
||||
//lt < gt > ge >= le <=
|
||||
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.height = Configurations.config(TaxiApp.instance()).screenSizeY()
|
||||
|
||||
|
||||
img_bus_top.visibility = View.VISIBLE
|
||||
|
||||
val program = File(TaxiApp.instance().filesDir, TaxiApp.instance().getString(string.dir_program))
|
||||
|
|
|
@ -72,6 +72,7 @@ import cn.trans88.taxiappkotlin.util.YoungUtil
|
|||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
import org.greenrobot.greendao.query.LazyList
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
|
@ -80,6 +81,8 @@ import java.util.*
|
|||
* 所有与界面相关的数据都应该放在ViewModel中
|
||||
*/
|
||||
//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 {
|
||||
|
||||
private val providerMap = HashMap<String,String>()
|
||||
|
@ -569,6 +572,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
//view.startAnimation(addAnim)
|
||||
|
||||
fl_play.addView(view)
|
||||
// fl_play.addView(view)
|
||||
|
||||
removeView()
|
||||
|
||||
|
@ -786,6 +790,8 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
var cachePlayLoggers = ArrayList<PlayLogger>()
|
||||
/**
|
||||
* 将curLogger设置为播放完成后存储到LoggerContainer中,并将curLogger清空
|
||||
*/
|
||||
|
@ -796,9 +802,27 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
curLogger!!.end_play_ts = System.currentTimeMillis()
|
||||
// val roundingDuration = Math.ceil((curLogger!!.duration.toDouble() / 1000)) * 1000
|
||||
// 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)
|
||||
"存储日志:${curLogger?.begin_play_ts}".loge()
|
||||
for (cachePlayLogger in cachePlayLoggers) {
|
||||
"存储缓存的日志数据insert cachePlayLogger${cachePlayLogger.toString()}".logd()
|
||||
DaoUtil.getPlayLoggerDao().insert(cachePlayLogger)
|
||||
}
|
||||
cachePlayLoggers.clear()
|
||||
}
|
||||
|
||||
}
|
||||
curLogger = null
|
||||
}
|
||||
|
@ -898,6 +922,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
list
|
||||
}
|
||||
"regions.size:${regions.size}".logd()
|
||||
var isRefresh = false
|
||||
for (region in regions) {
|
||||
"regionAdId:${region.regionAdId},index:${regions.indexOf(region)}".logd()
|
||||
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
|
||||
taxiApp.daoAds.clear()
|
||||
|
||||
RefreshPlayer.refresh()
|
||||
//edit by ljh @2023/12/12 刷新定点广告
|
||||
Repository.cancelTimer()
|
||||
isRefresh = true
|
||||
|
||||
// RefreshPlayer.refresh()
|
||||
} else {
|
||||
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()
|
||||
if (reg != null){
|
||||
reg.isInRegion = true
|
||||
reg.isInRegion = false
|
||||
DaoUtil.getRegion().update(reg)
|
||||
} else {
|
||||
taxiApp.regionsList.clear()
|
||||
|
@ -972,13 +1001,21 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
//edit by ljh @2023/8/14
|
||||
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()
|
||||
.executeDeleteWithoutDetachingEntities()
|
||||
YoungUtil.YoungLog("没进圈删除定点广告:${region.regionAdId}")
|
||||
taxiApp.isPositionRefresh = true
|
||||
// RefreshPlayer.refresh()
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isRefresh){
|
||||
"定点变动,刷新列表".loge()
|
||||
RefreshPlayer.refresh()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1002,6 +1039,9 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除旧的定点广告
|
||||
*/
|
||||
fun clearAreaAdvertise() {
|
||||
val list = getAdvertise().queryBuilder().where(Properties.BelongTo.eq(AREA.ordinal)).list()
|
||||
list?.let {
|
||||
|
@ -1009,13 +1049,13 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
taxiApp.daoAds.clear()
|
||||
for (advertise in it) {
|
||||
getAdvertise().delete(advertise)
|
||||
}
|
||||
try {
|
||||
RefreshPlayer.refresh()
|
||||
} catch (e: InterruptedException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1159,6 +1199,13 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
|
|||
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}")
|
||||
|
||||
advertise.toString().loge()
|
||||
|
|
|
@ -112,7 +112,7 @@ public class DateUtil {
|
|||
* @return
|
||||
*/
|
||||
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();
|
||||
// long currentTimeStamp = 1699723270L; // 替换为currentTimeStamp的值 2023/11/12
|
||||
// long lastTimeStamp = 1699690270L; // 替换为lastTimeStamp的值 2023/11/11
|
||||
|
|
|
@ -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":{}}]
|
Binary file not shown.
|
@ -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.
|
||||
#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
|
||||
|
|
|
@ -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":{}}]
|
Loading…
Reference in New Issue
Block a user