解决定点投放广告播放不了问题,播放日志和gps定点日志开关默认改为关闭,心跳由30s改为两分钟发一次,重连时间10s改为30s,凭证信息可备份至conn,防止跑账号

This commit is contained in:
刘金华 2023-04-14 10:43:59 +08:00
parent 1bf1de0351
commit 481e07359d
49 changed files with 557 additions and 372 deletions

View File

@ -1,5 +1,5 @@
<component name="libraryTable">
<library name="Gradle: D./A_TaxiApp/26/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar">
<library name="Gradle: D./A_TaxiApp/taxi26/26Original/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar">
<CLASSES>
<root url="jar://$PROJECT_DIR$/app/libs/xixun_card_settings_1.2.4.jar!/" />
</CLASSES>

View File

@ -39,6 +39,7 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cbacc0420eb54d22b11c3ebe49cbfb9d/jetified-hamcrest-library-1.3.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/c2aff52a3446202851bad44fbb8fd9c7/jetified-core-1.2.0-api.jar</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/a33f8ce3216f44d0b34f8584fe1d4053/material-1.4.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/45ead938a935c9e6e195051654e8f67e/constraintlayout-2.0.1-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/5811bc91d2614a9158a1ca655b9ded43/appcompat-1.3.0-api.jar</arg>
@ -97,6 +98,7 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/50c4f3f9cb89c12875b3d8a37bce3ea8/jetified-kotlin-android-extensions-runtime-1.3.71.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/eef10497c076c3e0224eef478dfacc95/jetified-kotlin-stdlib-jdk7-1.3.71.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/2e05a7c119c523ef3da3eca735692616/jetified-kotlin-reflect-1.3.61.jar</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar</arg>
@ -128,8 +130,8 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/9822764d1b6050859a78a0b3ec51c6dc/jetified-permissionx-1.1.1-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/020b480d2bde92043942aeb85ef94e0f/jetified-YJTools-v1.0.5-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cb9e9189a7eabc085ddffe7ef81268f3/jetified-android-database-sqlcipher-3.5.7-api.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../app/build/tmp/kotlin-classes/debugAndroidTest" />
@ -199,7 +201,7 @@
</library>
</orderEntry>
<orderEntry type="module" module-name="taxiapp-ktl.kurolibrary.main" scope="TEST" />
<orderEntry type="library" scope="TEST" name="Gradle: D./A_TaxiApp/26/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: D./A_TaxiApp/taxi26/26Original/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-integration:1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-library:1.3" level="project" />

View File

@ -4,7 +4,7 @@
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":app" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.6.2" />
<option name="LAST_KNOWN_AGP_VERSION" value="3.6.2" />
</configuration>
</facet>

View File

@ -30,6 +30,7 @@
<stringArguments>
<stringArg name="classpath">
<args>
<arg>$MODULE_DIR$/../../../app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cd6ee3eb3fc50696fc57eaf7fa81506a/jetified-xixun_card_settings_1.2.4.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/50c4f3f9cb89c12875b3d8a37bce3ea8/jetified-kotlin-android-extensions-runtime-1.3.71.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/eef10497c076c3e0224eef478dfacc95/jetified-kotlin-stdlib-jdk7-1.3.71.jar</arg>
@ -40,6 +41,8 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/52f608662a75fc89303d1701f5ec50e0/jetified-lifecycle-reactivestreams-ktx-2.2.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ec781f3119334c7509522ff1bb966868/jetified-lifecycle-runtime-ktx-2.2.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/798edd96275281c937a1982cd81c07a3/jetified-lifecycle-viewmodel-ktx-2.2.0-api.jar</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar</arg>
@ -115,8 +118,8 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/9822764d1b6050859a78a0b3ec51c6dc/jetified-permissionx-1.1.1-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/020b480d2bde92043942aeb85ef94e0f/jetified-YJTools-v1.0.5-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cb9e9189a7eabc085ddffe7ef81268f3/jetified-android-database-sqlcipher-3.5.7-api.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../app/build/tmp/kotlin-classes/debug" />
@ -156,20 +159,31 @@
<exclude-output />
<content url="file://$MODULE_DIR$/../../../app/build/generated/aidl_source_output_dir/debug/out">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/aidl_source_output_dir/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/aidl_source_output_dir/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/aidl_source_output_dir/debug/out" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/build/generated/renderscript_source_output_dir/debug/out" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/res/rs/debug" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/kapt/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kapt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kapt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kapt/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debug" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/src/debug" />
<content url="file://$MODULE_DIR$/../../../app/src/main">
@ -191,7 +205,7 @@
</library>
</orderEntry>
<orderEntry type="module" module-name="taxiapp-ktl.kurotool.main" />
<orderEntry type="library" name="Gradle: D./A_TaxiApp/26/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar" level="project" />
<orderEntry type="library" name="Gradle: D./A_TaxiApp/taxi26/26Original/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.71" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71" level="project" />
<orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-reflect:1.3.61" level="project" />

View File

@ -30,6 +30,7 @@
<stringArguments>
<stringArg name="classpath">
<args>
<arg>$MODULE_DIR$/../../../app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cd6ee3eb3fc50696fc57eaf7fa81506a/jetified-xixun_card_settings_1.2.4.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/50c4f3f9cb89c12875b3d8a37bce3ea8/jetified-kotlin-android-extensions-runtime-1.3.71.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/eef10497c076c3e0224eef478dfacc95/jetified-kotlin-stdlib-jdk7-1.3.71.jar</arg>
@ -40,6 +41,8 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/52f608662a75fc89303d1701f5ec50e0/jetified-lifecycle-reactivestreams-ktx-2.2.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/ec781f3119334c7509522ff1bb966868/jetified-lifecycle-runtime-ktx-2.2.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/798edd96275281c937a1982cd81c07a3/jetified-lifecycle-viewmodel-ktx-2.2.0-api.jar</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar</arg>
@ -117,8 +120,11 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/cb9e9189a7eabc085ddffe7ef81268f3/jetified-android-database-sqlcipher-3.5.7-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/73288eb0c21a43b54cd0b7ad8c497738/jetified-junit-4.12.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../app/build/intermediates/javac/debug/classes</arg>
<arg>$MODULE_DIR$/../../../app/build/tmp/kotlin-classes/debug</arg>
<arg>$MODULE_DIR$/../../../app/build/tmp/kapt3/classes/debug</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../app/build/tmp/kotlin-classes/debugUnitTest" />
@ -169,6 +175,7 @@
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/kapt/debugUnitTest" />
<content url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debugUnitTest">
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debugUnitTest" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../app/build/generated/source/kaptKotlin/debugUnitTest" isTestSource="true" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../app/src/test">
<sourceFolder url="file://$MODULE_DIR$/../../../app/src/test/java" isTestSource="true" />
@ -187,7 +194,7 @@
</library>
</orderEntry>
<orderEntry type="module" module-name="taxiapp-ktl.kurotool.main" scope="TEST" />
<orderEntry type="library" scope="TEST" name="Gradle: D./A_TaxiApp/26/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: D./A_TaxiApp/taxi26/26Original/taxiapp-ktl/app/libs/xixun_card_settings_1.2.4.jar" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.3.71" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.71" level="project" />
<orderEntry type="library" scope="TEST" name="Gradle: org.jetbrains.kotlin:kotlin-reflect:1.3.61" level="project" />

View File

@ -97,8 +97,9 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/107e22d3375bddc7d1b0a774a0f08ed5/jetified-gson-2.8.5.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0fac2df818d5003a70205e494249161d/jetified-annotation-experimental-1.0.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.1/30988fe2d77f3fe3bf7551bb8a8b795fad7e7226/constraintlayout-solver-2.0.1.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-32/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-32/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../kurolibrary/build/tmp/kotlin-classes/debugAndroidTest" />
@ -142,7 +143,7 @@
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/buildConfig/androidTest/debug" />
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kapt/debugAndroidTest" />
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debugAndroidTest">
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debugAndroidTest" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debugAndroidTest" isTestSource="true" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurolibrary/src/androidTest">
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/src/androidTest/java" isTestSource="true" />

View File

@ -4,7 +4,7 @@
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":kurolibrary" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.6.2" />
<option name="LAST_KNOWN_AGP_VERSION" value="3.6.2" />
</configuration>
</facet>

View File

@ -31,6 +31,7 @@
<stringArguments>
<stringArg name="classpath">
<args>
<arg>$MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/d81251d5927161ec93d9dc99e7da18e3/jetified-retrofit-2.7.1.jar</arg>
@ -83,8 +84,8 @@
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.2.0/57136ff68ee784c6e19db34ed4a175338fadfde1/annotation-1.2.0.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/0fac2df818d5003a70205e494249161d/jetified-annotation-experimental-1.0.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.1/30988fe2d77f3fe3bf7551bb8a8b795fad7e7226/constraintlayout-solver-2.0.1.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-32/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-32/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../kurolibrary/build/tmp/kotlin-classes/debug" />
@ -128,7 +129,7 @@
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kapt/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debug" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurolibrary/src/debug" />
<content url="file://$MODULE_DIR$/../../../kurolibrary/src/main">

View File

@ -85,8 +85,11 @@
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.1/30988fe2d77f3fe3bf7551bb8a8b795fad7e7226/constraintlayout-solver-2.0.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6caef15cbfc6f35ac8669787bd9cfcab/jetified-junit-4.13.2.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-32/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/intermediates/javac/debug/classes</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/tmp/kotlin-classes/debug</arg>
<arg>$MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debug</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-32/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../kurolibrary/build/tmp/kotlin-classes/debugUnitTest" />
@ -128,7 +131,7 @@
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/ap_generated_sources/debugUnitTest/out" />
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kapt/debugUnitTest" />
<content url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debugUnitTest">
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debugUnitTest" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/build/generated/source/kaptKotlin/debugUnitTest" isTestSource="true" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurolibrary/src/test">
<sourceFolder url="file://$MODULE_DIR$/../../../kurolibrary/src/test/java" isTestSource="true" />

View File

@ -93,8 +93,9 @@
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/9f2b33d370b6af0362fe1e71cd0de502/jetified-annotations-13.0.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/61969562c26d090cb354becbc427a8b5/jetified-reactive-streams-1.0.3.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/107e22d3375bddc7d1b0a774a0f08ed5/jetified-gson-2.8.5.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../kurotool/build/tmp/kotlin-classes/debugAndroidTest" />
@ -145,7 +146,7 @@
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/buildConfig/androidTest/debug" />
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kapt/debugAndroidTest" />
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debugAndroidTest">
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debugAndroidTest" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debugAndroidTest" isTestSource="true" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurotool/src/androidTest">
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/src/androidTest/java" isTestSource="true" />

View File

@ -4,7 +4,7 @@
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":kurotool" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" />
<option name="LAST_SUCCESSFUL_SYNC_AGP_VERSION" value="3.6.2" />
<option name="LAST_KNOWN_AGP_VERSION" value="3.6.2" />
</configuration>
</facet>

View File

@ -31,6 +31,7 @@
<stringArguments>
<stringArg name="classpath">
<args>
<arg>$MODULE_DIR$/../../../kurotool/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar</arg>
@ -79,8 +80,8 @@
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/b8406a0417971e7997dafe8b24d4441f/interpolator-1.0.0-api.jar</arg>
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../kurotool/build/tmp/kotlin-classes/debug" />
@ -131,7 +132,7 @@
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kapt/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debug">
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debug" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debug" isTestSource="false" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurotool/src/debug" />
<content url="file://$MODULE_DIR$/../../../kurotool/src/main">

View File

@ -81,8 +81,11 @@
<arg>$USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/73288eb0c21a43b54cd0b7ad8c497738/jetified-junit-4.12.jar</arg>
<arg>$USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/intermediates/javac/debug/classes</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/tmp/kotlin-classes/debug</arg>
<arg>$MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debug</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar</arg>
<arg>$MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar</arg>
</args>
</stringArg>
<stringArg name="destination" arg="$MODULE_DIR$/../../../kurotool/build/tmp/kotlin-classes/debugUnitTest" />
@ -131,7 +134,7 @@
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/ap_generated_sources/debugUnitTest/out" />
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kapt/debugUnitTest" />
<content url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debugUnitTest">
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debugUnitTest" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/build/generated/source/kaptKotlin/debugUnitTest" isTestSource="true" generated="true" />
</content>
<content url="file://$MODULE_DIR$/../../../kurotool/src/test">
<sourceFolder url="file://$MODULE_DIR$/../../../kurotool/src/test/java" isTestSource="true" />

View File

@ -21,8 +21,8 @@ android {
applicationId "net.sysolution.taxiapp"
minSdkVersion 21
targetSdkVersion 29
versionCode 173
versionName "3.3.3-beta26-release"
versionCode 176
versionName "3.3.3-beta26.3-release"
//alphaxx - ,bug
//Betaxx -
@ -40,6 +40,12 @@ android {
//333-20 conn没被改到问题
//333-21 isdownloading的判断
/*
333-26
26.3 广gps定点日志开关默认改为关闭30s改为两分钟发一次10s改为30s
conn,
* */
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// Enabling multidex support.

View File

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

View File

@ -1,8 +1,22 @@
package com.xixun.xy.conn.aidl;
import com.xixun.xy.conn.aidl.FpgaInfo;
import com.xixun.contract.model.TaskToKeepScreenOn;
interface ConnService {
interface ConnService {
String getServerURL();
boolean setServerURL(String value);
String getCompanyId();
boolean setCompanyId(String value);
}
void sendFpgaInfoToWeb(in List<FpgaInfo> FpgaInfoList);
void send(String json);
boolean setAlias(String value);
String getAlias();
//boolean getRadioState();
String setKeyValue(String key,String value);
String getKeyValue(String key);
}

View File

@ -46,8 +46,8 @@ public class Configurations {
isFirstRegisterSave(true);
enableWriteLogSave( false);
advertiseOrderSave( "");
loggerSwitchSave(true);
gpsSwitchSave(true);
loggerSwitchSave(false);
gpsSwitchSave(false);
upload_debug_file_urlSave("http://taxihub.cn:2345/postDebugFile");
}else{
YoungUtil.YoungLog("copy configurations");
@ -258,14 +258,14 @@ public class Configurations {
context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putBoolean("enableWriteLog", b).apply();
}
public boolean loggerSwitch(){
return context.getSharedPreferences("config", Context.MODE_PRIVATE).getBoolean("loggerSwitch", true);
return context.getSharedPreferences("config", Context.MODE_PRIVATE).getBoolean("loggerSwitch", false);
}
public void loggerSwitchSave(boolean b){
context.getSharedPreferences("config", Context.MODE_PRIVATE).edit().putBoolean("loggerSwitch", b).apply();
}
public boolean gpsSwitch(){
return context.getSharedPreferences("config", Context.MODE_PRIVATE).getBoolean("gpsSwitch", true);
return context.getSharedPreferences("config", Context.MODE_PRIVATE).getBoolean("gpsSwitch", false);
}
public void gpsSwitchSave(boolean b){

View File

@ -8,6 +8,9 @@ import cn.trans88.kurotool.util.LogLevel
import cn.trans88.kurotool.util.LogUtil
import cn.trans88.taxiappkotlin.ext.logd
import cn.trans88.taxiappkotlin.ext.loge
import cn.trans88.taxiappkotlin.logic.dao.DaoMaster
import cn.trans88.taxiappkotlin.logic.dao.DaoSession
import cn.trans88.taxiappkotlin.logic.dao.HelperDaoDB
import cn.trans88.taxiappkotlin.logic.exception.CrashHandler
import cn.trans88.taxiappkotlin.logic.model.Advertise
import cn.trans88.taxiappkotlin.logic.model.Schedule
@ -29,6 +32,8 @@ import kotlin.collections.HashMap
class TaxiApp:Application() {
private lateinit var daoSession: DaoSession
val timer = Timer()
//定时任务是否执行
var isTimed:Boolean = false
@ -63,25 +68,15 @@ class TaxiApp:Application() {
super.onCreate()
instance = this
val helperDaoDB = HelperDaoDB(this, "taxi-app-database.db", null)
val db = helperDaoDB.writableDatabase
daoSession = DaoMaster(db).newSession()
//add by yzd @20211130 用config替换原有的配置文件
Configurations.config(this).init();
//初始化异常捕捉 //yzd 注释于20211110
CrashHandler.getInstance(this).setInfo("熙讯ID", Configurations.config(TaxiApp.instance()).cardId()).setPost("").setDep(5).init()
//初始化ApiClient
// ApiClient.init("http://taxihub.cn:2346/v1/cms/taxi/",true)
// //初始化Logger
// val formatStrategy: FormatStrategy = PrettyFormatStrategy.newBuilder()
// .showThreadInfo(false) // (Optional) Whether to show thread info or not. Default true
// .methodCount(0) // (Optional) How many method line to show. Default 2
// .methodOffset(7) // (Optional) Hides internal method calls up to offset. Default 5
// .tag(TAG) // (Optional) Global tag for every log. Default PRETTY_LOGGER
// .showThreadInfo(true)
// .build()
// val adapter = AndroidLogAdapter(formatStrategy)
// Logger.addLogAdapter(adapter)
KuroApiFactory.initRetrofit("http://taxihub.cn:2346/v1/cms/taxi/").setInterceptor(BizInterceptor())
setLogUtil()
@ -110,12 +105,6 @@ class TaxiApp:Application() {
startActivity.flags = Intent.FLAG_ACTIVITY_NEW_TASK
this.startActivity(startActivity)
}
// val serverIntent = Intent(this, PlayServer::class.java)
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// startForegroundService(serverIntent);
// }else{
// startService(serverIntent)
// }
Thread(Runnable {
Thread.sleep(10*1000)
@ -128,45 +117,12 @@ class TaxiApp:Application() {
}
/**
* 配置exoPlayer的player
* 获取daoSession
* @return DaoSession
*/
// fun initPlayer(){
// val dataSourceFactory = DefaultDataSourceFactory(applicationContext)
// factory = ProgressiveMediaSource.Factory(dataSourceFactory)
// //edit by ljh 2023/1/5
// //配置exoPlayer的player
// player = SimpleExoPlayer.Builder(this).build()
// //音量设置为0
// player!!.volume = 0f
//// player!!.playWhenReady = true
// initListener()
// player!!.addListener(listener)
// }
/**
* 初始化视频监听器
*/
// private fun initListener(){
// listener = object : Player.Listener{
// override fun onPlaybackStateChanged(state: Int) {
// when(state){
// Player.STATE_BUFFERING -> {
// "视频正在缓冲".logd("PlayView")
// }
// Player.STATE_READY -> {
// "视频准备就绪".logd("PlayView")
// }
// Player.STATE_ENDED -> {
// "播放完毕".loge("PlayView")
// }
//
// Player.STATE_IDLE -> {
// "闲置视频".loge("PlayView")
// }
// }
// }
// }
// }
fun getDaoSession():DaoSession{
return daoSession
}
private fun initKuroLog() {

View File

@ -86,7 +86,6 @@ object Repository {
}
fun getAdvertiseTEST(): Advertise? {
// return getPlayAdvertise(circularListMap[getPlayLevels()])
val list = myListMap[getTestPlayLevels()]
"广告数量:${list?.size}".loge()
@ -96,7 +95,7 @@ object Repository {
advertise = if (isTimedAdvertise){
getTestPlayAdvertise(taxiApp.timedAds)
} else {
getTestPlayAdvertise(myListMap[getTestPlayLevels()])
getTestPlayAdvertise(list)
}
// val advertise = getTestPlayAdvertise(myListMap[getTestPlayLevels()])
return advertise
@ -200,6 +199,7 @@ object Repository {
fun getTestPlayLevels(): Int {
val levels = AdvertiseType.values()
val isTimedAdvertise = Configurations.config(taxiApp.activity).isTimedAdvertise
"getTestPlayLevels -> isTimedAdvertise:$isTimedAdvertise".loge()
for (index in AdvertiseType.values().size downTo 0) {
//#edit by ljh 2023/2/27
//先判断当前的播放列表是否是分时段播放列表,还是正常的播放列表
@ -228,7 +228,6 @@ object Repository {
/**
* 刷新循环列表
*/
@SuppressLint("SimpleDateFormat")
@Synchronized
fun refreshMyList() {
val currentTimeMillis = System.currentTimeMillis()
@ -312,9 +311,7 @@ object Repository {
}
for (index in 0 until advertises.size) {
val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val dateStr = format.format(Date(advertises[index].createAt))
YoungUtil.YoungLog("列表序号:${advertises[index].ad_id} 创建时间 $dateStr")
YoungUtil.YoungLog("列表序号:${advertises[index].ad_id} 创建时间 ${advertises[index].createAt}")
// sb.append("\n广告id:${advertise.ad_id}")
val advertise = advertises[index]

View File

@ -1,55 +1,62 @@
package cn.trans88.taxiappkotlin.logic.dao
//import cn.trans88.taxiappkotlin.entity.Advertise
import android.database.sqlite.SQLiteDatabase
import cn.trans88.taxiappkotlin.TaxiApp
import cn.trans88.taxiappkotlin.ext.logd
import cn.trans88.taxiappkotlin.logic.model.*
import cn.trans88.taxiappkotlin.ui.advertise.AdvertiseType
import org.greenrobot.greendao.database.Database
import java.io.File
object DaoUtil {
private const val DB_NAME = "taxi-app-database.db"
// private val helperDaoDB = HelperDaoDB(TaxiApp.instance(), DB_NAME, null)
// val db = helperDaoDB.writableDatabase
// private val daoMaster: DaoMaster = DaoMaster(db)
// val daoSession: DaoSession = daoMaster.newSession()
private var helperDaoDB:HelperDaoDB
var db:SQLiteDatabase
// var db:Database
private var daoMaster: DaoMaster
var daoSession: DaoSession
val taxiApp = TaxiApp.instance() as TaxiApp
var daoSession:DaoSession = taxiApp.getDaoSession()
private var mOrderDao:OrderDao
private var mPlayLoggerDao:PlayLoggerDao
private var mAdvertiseDao:AdvertiseDao
private var mLocationDao:LocationDao
private var mSanleAdvertiseDao:SanleAdvertiseDao
private var mPositionAdvertiseDao:PositionAdvertiseDao
private var mTimeSpanDao:TimeSpanDao
private var mScheduleDao:ScheduleDao
private var mRegionsDao:RegionsDao
private var mContainerDao:ContainerDao
init {
helperDaoDB = HelperDaoDB(TaxiApp.instance(), DB_NAME, null)
// helperDaoDB = HelperDaoDB(TaxiApp.instance(), DB_NAME, null)
// db = helperDaoDB.getEncryptedWritableDb("123")
db = helperDaoDB.writableDatabase
// db = helperDaoDB.writableDatabase
// db.disableWriteAheadLogging()
daoMaster = DaoMaster(db)
daoSession= daoMaster.newSession()
mOrderDao = daoSession.orderDao
mPlayLoggerDao = daoSession.playLoggerDao
mAdvertiseDao = daoSession.advertiseDao
mLocationDao = daoSession.locationDao
mSanleAdvertiseDao = daoSession.sanleAdvertiseDao
mPositionAdvertiseDao = daoSession.positionAdvertiseDao
mTimeSpanDao = daoSession.timeSpanDao
mScheduleDao = daoSession.scheduleDao
mRegionsDao = daoSession.regionsDao
mContainerDao = daoSession.containerDao
}
@Synchronized
fun getOrderDao(): OrderDao {
return daoMaster.newSession().orderDao
return mOrderDao
}
@Synchronized
fun getPlayLoggerDao(): PlayLoggerDao {
return daoMaster.newSession().playLoggerDao
return mPlayLoggerDao
}
@Synchronized
fun getAdvertise(): AdvertiseDao {
return daoMaster.newSession().advertiseDao
return mAdvertiseDao
}
@Synchronized
fun getLocationDao(): LocationDao {
return daoMaster.newSession().locationDao
return mLocationDao
}
@Synchronized
@ -59,39 +66,39 @@ object DaoUtil {
@Synchronized
fun getAdvertises(): MutableList<Advertise> {
return daoMaster.newSession().advertiseDao.loadAll()
return mAdvertiseDao.loadAll()
}
@Synchronized
fun getSanleAdvertises(): List<SanleAdvertise> {
return daoMaster.newSession().sanleAdvertiseDao.loadAll()
return mSanleAdvertiseDao.loadAll()
}
@Synchronized
fun getSanleAdvertise(): SanleAdvertiseDao {
return daoMaster.newSession().sanleAdvertiseDao
return mSanleAdvertiseDao
}
@Synchronized
fun getPositionAdvertise(): PositionAdvertiseDao = daoMaster.newSession().positionAdvertiseDao
fun getPositionAdvertise(): PositionAdvertiseDao = mPositionAdvertiseDao
@Synchronized
fun getTimeSpan(): TimeSpanDao = daoMaster.newSession().timeSpanDao
fun getTimeSpan(): TimeSpanDao = mTimeSpanDao
@Synchronized
fun getSchedule(): ScheduleDao = daoMaster.newSession().scheduleDao
fun getSchedule(): ScheduleDao = mScheduleDao
@Synchronized
fun getPositionAdvertises(): List<PositionAdvertise> = daoMaster.newSession().positionAdvertiseDao.loadAll()
fun getPositionAdvertises(): List<PositionAdvertise> = mPositionAdvertiseDao.loadAll()
@Synchronized
fun getRegion(): RegionsDao {
return daoMaster.newSession().regionsDao
return mRegionsDao
}
@Synchronized
fun getPlayLogger(): PlayLoggerDao {
return daoMaster.newSession().playLoggerDao
return mPlayLoggerDao
}
@Synchronized
@ -101,7 +108,7 @@ object DaoUtil {
@Synchronized
fun getContainerDao(): ContainerDao {
return daoMaster.newSession().containerDao
return mContainerDao
}
/**
@ -162,13 +169,13 @@ object DaoUtil {
*/
@Synchronized
fun updatePlayNumbers(advertise: Advertise){
"更新广告数据".logd("Repository")
val oldAdvertise: Advertise? = DaoUtil.getAdvertise().queryBuilder()
"更新广告数据".logd()
val oldAdvertise: Advertise? = getAdvertise().queryBuilder()
.where(AdvertiseDao.Properties.Ad_id.eq(advertise.ad_id)).build()
.unique()
if (oldAdvertise!=null){
oldAdvertise.play_numbers = advertise.play_numbers
DaoUtil.getAdvertise().insertOrReplace(oldAdvertise)
getAdvertise().insertOrReplace(oldAdvertise)
}
}

View File

@ -0,0 +1,12 @@
package cn.trans88.taxiappkotlin.logic.model
/**
*
* @Author LJH
* @Time 2023/4/13
* @description
*/
data class ConnResponse(
var operation:String,
var message:String
)

View File

@ -0,0 +1,20 @@
package cn.trans88.taxiappkotlin.logic.model
/**
*
* @Author LJH
* @Time 2023/4/12
* @description和平台通信的相关信息
*/
data class ConnectMessage(
var countId:String = "", //账号ID
var taxiBaseUrl:String = "", //注册时请求的平台地址
var registerToken:String = "", //注册Token
var cardId:String = "", //卡号
var appToken:String = "", //和平台建立长连接请求的Token
var taxiServiceUrl:String = "", //和平台建立长连接请求的taxiServiceUrl
var logServiceUrl:String = "", //上传gps坐标和播放日志的logServiceUrl
var downloadUrl:String = "", //下载广告文件的downloadUrl
var uploadDebugFileUrl:String = "", //上传debug信息的url
var taxiInfo:String = "" //注册时获得该账号的车辆信息
)

View File

@ -38,7 +38,6 @@ public class PositionAdvertise implements Serializable {
private List<TimeSpan> time_span;
@Generated(hash = 90801906)
public PositionAdvertise(Long autoId, String id, int belongTo, int media_type,
String media_url, String task_id, String pathName, String duration) {
@ -56,7 +55,6 @@ public class PositionAdvertise implements Serializable {
public PositionAdvertise() {
}
public List<TimeSpan> getTime_span() {
return time_span;

View File

@ -27,11 +27,13 @@ public class Schedule implements Serializable{
@Id(autoincrement = true)
private Long id;
private String advertiseId;
//星期几 1-7
private Long start_time;
private Long end_time;
//星期几 1-7字符串形式"1,2,3,4,5,6,7" 表示周一至周日
private String weekDayString;
//星期几 1-7
@Transient
private List<Integer> week_day;

View File

@ -62,4 +62,6 @@ public class TimeSpan {
public void setDay_end(long day_end) {
this.day_end = day_end;
}
}

View File

@ -3,6 +3,7 @@ package cn.trans88.taxiappkotlin.logic.network
import android.annotation.SuppressLint
import android.os.Looper
import android.os.RemoteException
import androidx.constraintlayout.solver.GoalRow
import cn.trans88.kurotool.net.rx.BaseObserver
import cn.trans88.kurotool.net.rx.RxRestClient
import cn.trans88.kurotool.util.ThreadUtil
@ -43,9 +44,16 @@ import java.util.concurrent.ThreadPoolExecutor
* @author TRS
* @deprecated 处理各种网络请求连接
*/
object ConnManger {
//如果是绑定账号或者转移账号就不对比conn
var isBindOrTransfer = false
//保存到conn的实体类信息
var connectMessage:ConnectMessage = ConnectMessage()
// private val handler =Handler()
var testToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50X2lkIjoiNWY5ZmE0ZTI1NzIzMDkzZGM5MGMwYTA0IiwiZ3JvdXBfaWQiOiI2MmNmZGUzMzU3MjMwOTQ1NDM3MGFjNjIiLCJ1c2VyX2lkIjoiNjMyN2Q5NmI1NzIzMDkxYmJhZTM2MTkyIn0.6fQ1PsV3FM_C-I7yVd_7VpQIwLLMofF-8bKerpXmq_M"
var defaultToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhY2NvdW50X2lkIjoiNWY4OTNiODE1NzIzMDk0YWQzZmM5MTI0IiwiZ3JvdXBfaWQiOiI1Zjg5M2I4MTU3MjMwOTRhZDNmYzkxMjYiLCJ1c2VyX2lkIjoiNWY4OTNiODE1NzIzMDk0YWQzZmM5MTI1In0.o2M6CE2yFi7dvjILb485sQF436eMDdKwzTryK4rw3W0"
@Volatile
var isRegisterSuccess = false
@ -67,6 +75,13 @@ object ConnManger {
return@Runnable
}
//不是绑定或者转移账号就对比一下conn的信息
if (!isBindOrTransfer){
"is not BindOrTransfer count".loge()
val result = contrastConnMessage()
"对比结果,result:$result".loge()
}
YoungUtil.YoungLog("开始注册 TID:${Thread.currentThread().id},当前baseUrl: ${Configurations.config(TaxiApp.instance()).taxiBaseUrl()}")
val registerRequest = RegisterRequest()
@ -145,11 +160,30 @@ object ConnManger {
//Settings.taxiInfo = toJson
Configurations.config(TaxiApp.instance()).taxiInfoSave(toJson)
//初始化connectMessage并传给conn
val registerToken = Configurations.config(TaxiApp.instance()).registerToken()
//不是默认账号则存入conn
if (!registerToken.equals(defaultToken)){
"is not defaultToken,save message to conn.".loge()
initConnectMessage()
} else {
//是默认账号看看conn有没保存信息如果有则重新注册一遍
if (connService != null){
if (contrastConnMessageOnce()){
"is default count,registerApp again...".loge()
isRegisterSuccess = false
registerApp()
return
}
}
}
sendLogger()
sendLocation()
WsManager.initWebSocket()
// Settings.toJson()
}
@ -158,6 +192,10 @@ object ConnManger {
YoungUtil.YoungLog("baseUrl:$baseUrl")
isRegisterSuccess = false
// val timer = Timer()
//验证conn的信息
if (isBindOrTransfer){
isBindOrTransfer = false
}
DelayTimer.timer({ registerApp() }, 4000)
}
})
@ -170,6 +208,132 @@ object ConnManger {
// }
}
/**
* 初始化connectMessage并传给conn
*/
private fun initConnectMessage(){
"initConnectMessage()".loge()
val configurations = Configurations.config(TaxiApp.instance())
val accountId = configurations.accountId()
val taxiBaseUrl = configurations.taxiBaseUrl()
val registerToken = configurations.registerToken()
val cardId = if (TaxiApp.isTest){
"y60-a20-40919"
} else {
Xixun.getCardId()
}
val appToken = configurations.appToken()
val taxiServiceUrl = configurations.taxiServiceUrl()
val logServiceUrl = configurations.logServiceUrl()
val downloadUrl = configurations.downloadUrl()
val uploadDebugFileUrl = configurations.upload_debug_file_url()
val taxiInfo = configurations.taxiInfo()
connectMessage = ConnectMessage(
countId = accountId,
taxiBaseUrl = taxiBaseUrl,
registerToken = registerToken,
cardId = cardId,
appToken = appToken,
taxiServiceUrl = taxiServiceUrl,
logServiceUrl = logServiceUrl,
downloadUrl = downloadUrl,
uploadDebugFileUrl = uploadDebugFileUrl,
taxiInfo = taxiInfo
)
connService?.let {
val jsonStr = Gson().toJson(connectMessage)
"connectMessageJsonStr:$jsonStr".loge()
try {
val str = it.setKeyValue("connectMessage",jsonStr)
"conn response:$str".loge()
} catch (e:Exception){
"setKeyValue,e.message:${e.message}".loge()
}
}
}
/**
* 从conn获取连接信息
* @return ConnectMessage
*/
fun getConnectMessageFromConn():ConnectMessage?{
var connectMessage:ConnectMessage? = null
"getConnectMessageFromConn(),conn : $connService".loge()
connService?.let {
try {
val msg = it.getKeyValue("connectMessage")
"responseString$msg".loge()
val connResponse:ConnResponse = Gson().fromJson<ConnResponse>(msg,ConnResponse::class.java)
connectMessage = Gson().fromJson(connResponse.message,ConnectMessage::class.java)
"connectMessage:${connResponse.message.toString()}".loge()
} catch (e:Exception){
"getConnectMessageFromConn,e.message:${e.message}".loge()
}
}
return connectMessage
}
/**
* 对照conn存储的信息,返回true说明对比成功此时conn信息和taxiApp的信息不一致将conn信息存储到taxiApp
* 返回false表示对比失败可能aidl调用失败或者信息一致
*/
fun contrastConnMessage():Boolean{
"contrastConnMessage()".loge()
var result = false
val configurations = Configurations.config(TaxiApp.instance())
val taxiAppRegisterToken = configurations.registerToken()
val taxiAppTaxiBaseUrl = configurations.taxiBaseUrl()
val taxiAppCardId = configurations.taxiBaseUrl()
val connectMessage = getConnectMessageFromConn()
connectMessage?.let {
if (!it.appToken.isNullOrEmpty()){
if (!(taxiAppCardId.equals(it.cardId) && taxiAppTaxiBaseUrl.equals(it.taxiBaseUrl) && taxiAppRegisterToken.equals(it.registerToken))){
"save conn message...cardID:${it.cardId}".loge()
configurations.accountIdSave(it.countId)
configurations.taxiBaseUrlSave(it.taxiBaseUrl)
configurations.registerTokenSave(it.registerToken)
configurations.cardIdSave(it.cardId)
configurations.taxiServiceUrlSave(it.taxiServiceUrl)
configurations.logServiceUrlSave(it.logServiceUrl)
configurations.downloadUrlSave(it.downloadUrl)
configurations.upload_debug_file_urlSave(it.uploadDebugFileUrl)
configurations.taxiInfoSave(it.taxiInfo)
result = true
}
}
}
return result
}
/**
* 对照conn存储的信息,返回true说明对比成功此时conn信息和taxiApp的信息不一致将conn信息存储到taxiApp
* 返回false表示对比失败可能aidl调用失败或者信息一致
*/
fun contrastConnMessageOnce():Boolean{
"contrastConnMessage()".loge()
var result = false
val configurations = Configurations.config(TaxiApp.instance())
val taxiAppRegisterToken = configurations.registerToken()
val taxiAppTaxiBaseUrl = configurations.taxiBaseUrl()
val taxiAppCardId = configurations.taxiBaseUrl()
val connectMessage = getConnectMessageFromConn()
connectMessage?.let {
if (!it.appToken.isNullOrEmpty()){
if (!(taxiAppCardId.equals(it.cardId) && taxiAppTaxiBaseUrl.equals(it.taxiBaseUrl) && taxiAppRegisterToken.equals(it.registerToken))){
"save conn message...cardID:${it.cardId}".loge()
result = true
}
}
}
return result
}
fun setConnService(connService: ConnService?) {
YoungUtil.YoungLog("设置connService")
this.connService = connService
@ -191,7 +355,7 @@ object ConnManger {
.setBody(body)
.setHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).registerToken()}")
.setHeader("Card_ID", Xixun.getCardId())
.post(object : BaseObserver<SendTaxiInfoResponse>() {
.post(object : BaseObserver < SendTaxiInfoResponse>() {
override fun onGot(sendTaxiInfoResponse: SendTaxiInfoResponse) {
DelayTimer.cancel { sendTaxiInfo(taxiInfo) }
}
@ -353,51 +517,50 @@ object ConnManger {
}
//edit by yzd @20211201
//if (Settings.loggerSwitch) {
if (Configurations.config(TaxiApp.instance()).loggerSwitch()) {
ThreadUtil.executeBySingleThread(Runnable {
val okHttpClient = OkHttpClient()
YoungUtil.YoungLog("准备获取播放的总次数")
val request: Request = Request.Builder()
ThreadUtil.executeBySingleThread(Runnable {
val okHttpClient = OkHttpClient()
YoungUtil.YoungLog("准备获取播放的总次数")
val request: Request = Request.Builder()
// .url("http://avhipxml.beesnat.com/v1/cms/groupAd/${advertise.ad_id}/AdCount") //要访问的链接
.url("${baseUrl}/v1/cms/groupAd/${advertise.ad_id}/AdCount") //要访问的链接
.addHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).registerToken()}")
.build()
val call = okHttpClient.newCall(request)
call.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
YoungUtil.YoungLog("访问AdCount失败${e.message}")
}
.url("${baseUrl}/v1/cms/groupAd/${advertise.ad_id}/AdCount") //要访问的链接
.addHeader("Authorization", "Bearer ${Configurations.config(TaxiApp.instance()).registerToken()}")
.build()
val call = okHttpClient.newCall(request)
call.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
YoungUtil.YoungLog("访问AdCount失败${e.message}")
}
override fun onResponse(call: Call, response: Response) {
YoungUtil.YoungLog("访问AdCount成功${response.message},response isSuccessful ${response.isSuccessful}${response.code}")
override fun onResponse(call: Call, response: Response) {
YoungUtil.YoungLog("访问AdCount成功${response.message},response isSuccessful ${response.isSuccessful}${response.code}")
// "taxiServiceUrl:${Configurations.config(TaxiApp.instance()).taxiServiceUrl()}".loge()
// "logServiceUrl:${Configurations.config(TaxiApp.instance()).logServiceUrl()}".loge()
val countStr = response.body?.string()
if (response.code == 200){
val realCount = countStr?.toInt()
"responseBody.string:${realCount.toString()}".loge()
if (advertise.play_numbers < realCount!!){
if (advertise.play_numbers != -1 ){
advertise.play_numbers = -1
DaoUtil.updatePlayNumbers(advertise)
}
try {
RefreshPlayer.refresh()
} catch (e: InterruptedException) {
e.printStackTrace()
}
val countStr = response.body?.string()
if (response.code == 200){
val realCount = countStr?.toInt()
"responseBody.string:${realCount.toString()}".loge()
if (advertise.play_numbers < realCount!!){
if (advertise.play_numbers != -1 ){
advertise.play_numbers = -1
DaoUtil.updatePlayNumbers(advertise)
}
try {
RefreshPlayer.refresh()
} catch (e: InterruptedException) {
e.printStackTrace()
}
"广告[${advertise.ad_id}]已请求次数【${realCount}】,总播放次数:${advertise.play_numbers}".loge()
if(advertise.play_numbers != -1){
val activity = taxiApp.activity as PlayActivity
activity.getViewModel().saveCountAdLog(advertise)
}
}
"广告[${advertise.ad_id}]已请求次数【${realCount}】,总播放次数:${advertise.play_numbers}".loge()
if(advertise.play_numbers != -1){
val activity = taxiApp.activity as PlayActivity
activity.getViewModel().saveCountAdLog(advertise)
}
}
})
}
})
}
})
}
/**
@ -563,6 +726,8 @@ object ConnManger {
Configurations.config(TaxiApp.instance()).taxiBaseUrlSave(bindModel.server);
setConnServiceUrl(bindModel.server)
}
//不验证conn的信息
isBindOrTransfer = true
reconnect(1003,"切换账户关闭连接")
@ -614,6 +779,8 @@ object ConnManger {
resetAccountCleanDao()
//Settings.registerToken = token
Configurations.config(TaxiApp.instance()).registerTokenSave(token)
//不验证conn的信息
isBindOrTransfer = true
reconnect(1003,"切换账户关闭连接")
YoungUtil.YoungLog("用户不同,账号重新绑定 切换账户")
}
@ -688,41 +855,9 @@ object ConnManger {
*/
private fun resetAccountSendLogger() {
DaoUtil.getPlayLoggerDao().deleteAll()
// YoungUtil.YoungLog("resetAccountSendLogger in MainThread is ${Looper.getMainLooper().thread === Thread.currentThread()}")
// val playLoggers = DaoUtil.getPlayLoggers()
// if (playLoggers.isNotEmpty()) {
// val okHttpClient = OkHttpClient()
//// YoungUtil.YoungLog("准备上传日志,上传地址:${SaveSimpleData.getLogServiceUrl()}")
// YoungUtil.YoungLog("重置账号准备上传日志,上传地址:${Settings.logServiceUrl}")
// val requestJson = ProcessingCommands.gson.toJson(playLoggers)
// val parse = ("application/json;charset=UTF-8").toMediaTypeOrNull()
// val body = RequestBody.create(parse, requestJson)
// YoungUtil.YoungLog("resetAccountSendLogger:${requestJson}")
// val request: Request = Request.Builder()
//// .url(SaveSimpleData.getLogServiceUrl()+"postPlayerLog") //要访问的链接
// .url(Settings.logServiceUrl + "postPlayerLog") //要访问的链接
//// .addHeader("Authorization","Bearer ${SaveSimpleData.getAppToken()}")
// .addHeader("Authorization", "Bearer ${Settings.appToken}")
// .post(body)
// .build()
// val call = okHttpClient.newCall(request)
// call.enqueue(object : Callback {
// override fun onFailure(call: Call, e: IOException) {
// YoungUtil.YoungLog("上传日志失败:${e.message}")
// }
//
// override fun onResponse(call: Call, response: Response) {
// YoungUtil.YoungLog("重置账号上传日志成功:${response.message},response isSussceful ${response.isSuccessful}${response.code}")
// if (response.code == 200) {
// DaoUtil.getPlayLoggerDao().deleteAll()
// }
// }
//
// })
// }
}
fun reconnect(code:Int,msg:String) {
fun reconnect(code:Int,msg:String) {
WsManager.stopConnect(code,msg)
isRegisterSuccess = false
//Settings.isFirstRegister = true

View File

@ -27,8 +27,10 @@ import java.io.*
import java.util.*
object ProcessingCommands {
val gson = Gson()
var beatTimer:Timer? = null
/**
* 三乐平台的命令
*/
@ -162,7 +164,7 @@ object ProcessingCommands {
ConnManger.sendLogger()
}
baseResponse.type =type
baseResponse.type = type
val response = gson.toJson(baseResponse)
send(response)
}
@ -185,10 +187,12 @@ object ProcessingCommands {
beatTimer!!.schedule(object :TimerTask(){
override fun run() {
YoungUtil.YoungLog("长时间没新的心跳应答,断开连接重试重新连接")
//验证conn的信息
ConnManger.isBindOrTransfer = false
reconnect(1004, "长时间未收到心跳断开连接")
}
},5*60*1000)
},4*60*1000)
}
/**
@ -294,18 +298,23 @@ object ProcessingCommands {
*/
private fun setBusInfo(task: String, type: String) {
val busInfo = gson.fromJson<BusInfo>(task)
when (busInfo.background_type) {
"route" -> downloadBusInfo(busInfo.media_id, "busLicence", HAOSHENG)
"brake" -> downloadBusInfo(busInfo.media_id, "turnStop", HAOSHENG)
"turn_left" -> downloadBusInfo(busInfo.media_id, "turnLeft", HAOSHENG)
"turn_right" -> downloadBusInfo(busInfo.media_id, "turnRight", HAOSHENG)
"vacant" -> downloadBusInfo(busInfo.media_id, "vacant", MAIDIER)
"hired" -> downloadBusInfo(busInfo.media_id, "hired", MAIDIER)
"no_service" -> downloadBusInfo(busInfo.media_id, "no_service", MAIDIER)
"booked" -> downloadBusInfo(busInfo.media_id, "booked", MAIDIER)
"logo" ->downloadBusInfo(busInfo.media_id, "logo", XIXUN)
else -> YoungUtil.YoungLog("设置车辆信息 未知type")
//#edit by ljh @2023/3/28
//如果传的media_id为空则取消屏幕的自定义显示
if (busInfo.media_id.isNullOrEmpty()){
taxiApp.activity?.cancelCustomView()
} else {
when (busInfo.background_type) {
"route" -> downloadBusInfo(busInfo.media_id, "busLicence", HAOSHENG)
"brake" -> downloadBusInfo(busInfo.media_id, "turnStop", HAOSHENG)
"turn_left" -> downloadBusInfo(busInfo.media_id, "turnLeft", HAOSHENG)
"turn_right" -> downloadBusInfo(busInfo.media_id, "turnRight", HAOSHENG)
"vacant" -> downloadBusInfo(busInfo.media_id, "vacant", MAIDIER)
"hired" -> downloadBusInfo(busInfo.media_id, "hired", MAIDIER)
"no_service" -> downloadBusInfo(busInfo.media_id, "no_service", MAIDIER)
"booked" -> downloadBusInfo(busInfo.media_id, "booked", MAIDIER)
"logo" ->downloadBusInfo(busInfo.media_id, "logo", XIXUN)
else -> YoungUtil.YoungLog("设置车辆信息 未知type")
}
}
val sanleResponse = SanleResponse()
@ -498,6 +507,11 @@ object ProcessingCommands {
DaoUtil.getTimeSpan().insert(it)
}
//#edit by ljh 测试定点
// val advertise = Repository.taxiApp.activity!!.getViewModel().setAdvertiseByPosition(positionAdvertise, "region.id", 5.2, 5.2)
// DaoUtil.getAdvertise().insert(advertise)
// RefreshPlayer.refresh()
downloadFile(positionAdvertise.media_url, positionAdvertise.pathName, positionAdvertise.task_id)
val regions = positionAdvertise.regions
@ -704,7 +718,6 @@ object ProcessingCommands {
for (item in sanleAdvertises) {
if (sanleAdvertise.task_id == item.task_id) {
insert = false
// val updateSanleAdvertise = updateSanleAdvertise(item, sanleAdvertise)
// downloadFile(updateSanleAdvertise.media_url,updateSanleAdvertise.pathName)
sanleAdvertiseToAdvertise(sanleAdvertise)

View File

@ -24,8 +24,10 @@ object WsManager {
private var okHttpClient: OkHttpClient? = null
private var mRequest: Request? = null
private const val reconnectTime: Long = 10 * 1000
private const val heartbeatTime: Long = 30 * 1000
// private const val reconnectTime: Long = 10 * 1000
private const val reconnectTime: Long = 30 * 1000
private const val heartbeatTime: Long = 120 * 1000
// private const val heartbeatTime: Long = 30 * 1000
private const val sendCurrentAdvertiseTime: Long = 10 *60 * 1000
private val heartbeatContext: String = "beat"

View File

@ -21,6 +21,7 @@ import cn.trans88.taxiappkotlin.R.string
import cn.trans88.taxiappkotlin.TaxiApp
import cn.trans88.taxiappkotlin.TaxiApp.Companion.HAOSHENG
import cn.trans88.taxiappkotlin.TaxiApp.Companion.MAIDIER
import cn.trans88.taxiappkotlin.ext.loge
import cn.trans88.taxiappkotlin.jetpack.PlayViewModelFactory
import cn.trans88.taxiappkotlin.logic.Repository
import cn.trans88.taxiappkotlin.logic.Repository.powerOnAdvertise
@ -82,6 +83,8 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
if (VERSION.SDK_INT >= VERSION_CODES.P) {
setFlagHide()
}
//测试
Advertise().toString().loge()
setContentView(R.layout.activity_main)
//读取保留的配置文件
@ -117,13 +120,7 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
//通过ViewModelProvider拿到viewModel实例 viewModel的生命周期要长于activity
playViewModel = ViewModelProvider(this, PlayViewModelFactory(lifecycle, fl_play, img_bus_top)).get(PlayViewModel::class.java)
// playViewModel.advertiseLiveData.observeForever {
// YoungUtil.YoungLog("更新播放广告:")
// if (it.isFailure){
// YoungUtil.YoungLog("更新播放广告出错:${it.exceptionOrNull()?.message}")
// }
// playViewModel.playAdvertise(it.getOrNull())
// }
playViewModel.playLogo()
//通过lifecycle监听activity的生命周期
@ -167,6 +164,9 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
YoungUtil.YoungLog("bindService onServiceConnected")
connService = ConnService.Stub.asInterface(service)
ConnManger.setConnService(connService)
//对照conn之前的绑定信息
// val result = ConnManger.contrastConnMessage()
// "对比结果,result:$result".loge()
}
}, Context.BIND_AUTO_CREATE)
@ -230,38 +230,6 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
// playViewModel.playAdvertise(advertise,createView!!)
}
/**
* 读取之前保留在sdcard中的配置
*/
/*
private fun readConfiguration() {
val file = File(Environment.getExternalStorageDirectory(), "/taxiConfig/taxiconfig.txt")
if (file.exists()) {
val readText = file.readText()
YoungUtil.YoungLog("read序列化内容$readText")
val settingMod = Gson().fromJson<SettingMod>(readText)
Settings.registerToken = settingMod.registerToken
Settings.appToken = settingMod.appToken
Settings.company = settingMod.company
Settings.sync = settingMod.sync
Settings.logServiceUrl = settingMod.logServiceUrl
Settings.connServiceUrl = settingMod.connServiceUrl
Settings.screenSizeX = settingMod.screenSizeX
Settings.screenSizeY = settingMod.screenSizeY
Settings.taxiInfo = settingMod.taxiInfo
Settings.cardId = settingMod.cardId
Settings.taxiServiceUrl = settingMod.taxiServiceUrl
Settings.downloadUrl = settingMod.downloadUrl
Settings.accountId = settingMod.accountId
Settings.taxiBaseUrl = settingMod.taxiBaseUrl
Settings.isDeleteOldAdvitise = settingMod.isDeleteOldAdvitise
Settings.isFirstRegister = settingMod.isFirstRegister
Settings.enableWriteLog = settingMod.enableWriteLog
Settings.advertiseOrder = settingMod.advertiseOrder
}
}*/
//使用Handler要用静态内部类加弱引用持有外部实例否则会出现内存泄露
@Deprecated("无用的Handler,之前版本用来播放")
class MyHandler(activity: PlayActivity) : Handler() {
@ -332,6 +300,14 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
}
/**
* 取消自定义显示路线左转右转等..
*/
fun cancelCustomView(){
ll_bus.visibility = View.GONE
img_other_screen.visibility = View.GONE
}
/**
* 注册广播
*/
@ -384,44 +360,12 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
//初始化屏幕尺寸
initListenerOnScreenSize()
//edit by yzd 魔改============================
/*
class MyTimerTask(val t:Timer) : TimerTask() {
override fun run() {
if(TaxiApp.isStart) {
t.cancel()
t.purge()
YoungUtil.YoungLog("finish timer to power on ====================================")
return
}else{
YoungUtil.YoungLog("timer to power on")
powerOnAdvertise(playViewModel)
}
}
}
val timer = Timer()
var tt = MyTimerTask(timer)
timer.schedule(tt, 100, 1000)
*/
//============================================
Repository.initLastThread(playViewModel)
Repository.initRefreshPlayerList()
YoungUtil.YoungLog("开机初始化广告")
//开机不管同步不同步直接先放
powerOnAdvertise(playViewModel)
timeRefreshAdvertise()
// if (Settings.company == CompanyType.SANLE.name) {
// if (NetUtil.getNetWorkState(this) == NetworkType.NETWORK_NONE) {
// onLost()
// } else {
// YoungUtil.YoungLog("初始化广告 网络正常")
// RefreshPlayer.refresh()
// }
// } else {
// RefreshPlayer.refresh()
// }
})
}
@ -677,27 +621,4 @@ class PlayActivity : AppCompatActivity(), NetworkCallback, BusCallback, OnScreen
fun isMainThread(): Boolean {
return Looper.getMainLooper().thread === Thread.currentThread()
}
private fun testBindOtherService() {
// val intent1 = Intent()
// intent1.setPackage("com.trs88.asproj.alotservice")
// intent1.action = "aliyunIOT.IoTLinkService"
// val aliyunbind =bindService(intent1,object :ServiceConnection{
// override fun onServiceDisconnected(name: ComponentName?) {
// YoungUtil.YoungLog("阿里云连接失败")
// }
//
// override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
// YoungUtil.YoungLog("阿里云连接成功")
// val asInterface = IAlotServicr.Stub.asInterface(service)
// val alotInfo ="{\"deviceName\":\"y60-221-40641\",\"deviceSecret\":\"8bf1d4aa8936217e79b6fdb670a3fecb\",\"productKey\":\"a15TWA8OETM\"}"
// asInterface.setAlotInfo(alotInfo)
//
// }
//
// }, Context.BIND_AUTO_CREATE)
//
//
// YoungUtil.YoungLog("alotService 是否成功:$aliyunbind")
}
}

View File

@ -5,6 +5,7 @@ import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.BitmapFactory.Options
import android.graphics.Matrix
import android.media.MediaPlayer
import android.net.Uri
import android.os.Build
import android.os.Looper
@ -142,10 +143,36 @@ fun View.createView(context: Context, advertise: Advertise, seek: Int): View? {
mediaPlayer.isLooping = false
YoungUtil.YoungLog("视频准备完成,当前线程${Looper.getMainLooper().thread === Thread.currentThread()}")
YoungUtil.YoungLog("视频的播放时长${jVideoView.duration}")
mediaPlayer.start()
try {
mediaPlayer.start()
} catch (e:Exception){
"播放异常:${e.printStackTrace()}".loge()
if (mediaPlayer.isLooping){
mediaPlayer.stop()
}
mediaPlayer.reset()
jVideoView.videoPath = advertise.pathName
mediaPlayer.prepare()
mediaPlayer.start()
}
}
jVideoView.setOnErrorListener { _, _, _ -> true }
jVideoView.setOnErrorListener { mp, what, ext ->
val whatMsg = when(what){
MediaPlayer.MEDIA_ERROR_UNKNOWN -> "UNKNOWN_error"
else -> "SERVER_DIED"
}
val extraMsg = when(ext){
MediaPlayer.MEDIA_ERROR_IO -> {
"IO_Error"
}
MediaPlayer.MEDIA_ERROR_MALFORMED -> "ERROR_MALFORMED"
MediaPlayer.MEDIA_ERROR_UNSUPPORTED -> "ERROR_UNSUPPORTED"
else -> "ERROR_TIMED_OUT"
}
"extraMsg:$extraMsg,whatMsg:$whatMsg".loge()
true
}
YoungUtil.YoungLog("初始化视频控件耗时:${currentTimeMillis - System.currentTimeMillis()}")
video = jVideoView

View File

@ -93,7 +93,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
private val nextCheck: Runnable = Runnable {
YoungUtil.YoungLog("进入nextCheck")
synchronized(this) {
if (null == curLogger) {
if (null == curLogger && curAdvertise == null) {
YoungUtil.YoungLog("nextCheck curLogger等于空")
updatePlayerUI(AdvertiseType.IDLE, PlayerStatus.START)
return@Runnable
@ -318,7 +318,6 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
/**
* 调这个方法就会从仓库中拿advertise播放
*/
@Synchronized
fun refreshAdvertise() {
YoungUtil.YoungLog("刷新播放界面,开始播放 ")
var advertise = Repository.getAdvertiseTEST()
@ -350,9 +349,8 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
return
}
// saveCountAdLog(advertise)
"当前播放的广告:${Repository.getTestPlayCircularList().toString()}".loge()
}
// "当前播放的广告:${Repository.getTestPlayCircularList().toString()}".loge()
"当前播放的广告:${Repository.getTestPlayCircularList().toString()}".loge()
playLiveData.postValue(advertise)
}
@ -521,33 +519,6 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
}
private fun addChildView(view: View?, advertise: Advertise) {
// ThreadUtil.executeByPool(object :Runnable{
// override fun run() {
//新添加的view执行的动画
//val addAnim = loadAnimation(R.anim.add_view_anim)
// addAnim?.setAnimationListener(object : Animation.AnimationListener {
// override fun onAnimationRepeat(animation: Animation?) {
//
// }
//
// override fun onAnimationEnd(animation: Animation?) {
// fl_play.post {
// YoungUtil.YoungLog("添加View动画结束")
//
// if(fl_play.childCount > 1) {
// YoungUtil.YoungLog("删除View")
// fl_play.removeViewAt(0)
// YoungUtil.YoungLog("删除后FrameLayout有多少子视图${fl_play.childCount}")
// }
// }
// }
//
// override fun onAnimationStart(animation: Animation?) {
// YoungUtil.YoungLog("添加View动画开始")
// }
//
// })
if (view != null) {
view.tag = advertise.ad_id
YoungUtil.YoungLog("添加View")
@ -688,7 +659,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
}
handler.removeCallbacks(nextCheck)
curAdvertise = null
// curLogger = null
curLogger = null
// nextAdvertise =null
YoungUtil.YoungLog("停止播放")
}
@ -1020,7 +991,7 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
/**
* 将PositionAdvertise转化成Advertise
*/
private fun setAdvertiseByPosition(
fun setAdvertiseByPosition(
positionAdvertise: PositionAdvertise,
regionId: String,
longitude: Double,
@ -1040,6 +1011,9 @@ class PlayViewModel(val lifecycle: Lifecycle, private val fl_play: FrameLayout,
this.latitude = latitude
}
YoungUtil.YoungLog("setAdvertiseByPosition adid${advertise.ad_id}")
advertise.toString().loge()
return advertise
}

View File

@ -1,6 +1,7 @@
package cn.trans88.taxiappkotlin.ui.play
import cn.trans88.kurotool.util.TimeUtil
import cn.trans88.taxiappkotlin.ext.loge
import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao
import cn.trans88.taxiappkotlin.logic.dao.AdvertiseDao.Properties
import cn.trans88.taxiappkotlin.logic.dao.DaoUtil
@ -76,7 +77,7 @@ fun Advertise.isReady(): Boolean {
//如果广告已经过期
if (isOverdue()){
YoungUtil.YoungLog("广告已经过期返回false")
ready =false
ready = false
}
}
}
@ -93,12 +94,12 @@ fun Advertise.isAllowPlay(): Boolean {
}
if (isReady()) {
if (!isPlayNow()) {
//YoungUtil.YoungLog("存在不允许播放的广告 播放时间不满足:${this.toString()}")
return false
}else{
//YoungUtil.YoungLog("播放时间满足:${this.toString()}")
}
// if (!isPlayNow()) {
// //YoungUtil.YoungLog("存在不允许播放的广告 播放时间不满足:${this.toString()}")
// return false
// }else{
// //YoungUtil.YoungLog("播放时间满足:${this.toString()}")
// }
return true
} else {
// send("服务器日志 ${Xixun.getCardId()} 有不允许播放的广告: ${this.ad_id}")
@ -138,7 +139,7 @@ fun Advertise.isPlayNow(): Boolean {
var isPlay = false
var timeList:List<TimeSpan>? = null
timeList = DaoUtil.getTimeSpan().queryBuilder().where(TimeSpanDao.Properties.AdvertiseId.eq(this.ad_id)).list()
timeList = DaoUtil.getTimeSpan().queryBuilder().where(TimeSpanDao.Properties.AdvertiseId.eq(this.ad_id)).limit(10).list()
timeList?.forEach {
val curTime = System.currentTimeMillis()
@ -197,7 +198,7 @@ fun Advertise.isPlayNow(): Boolean {
}
fun Advertise.isOverdue():Boolean{
val timeList = DaoUtil.getTimeSpan().queryBuilder().where(TimeSpanDao.Properties.AdvertiseId.eq(this.ad_id)).list()
val timeList = DaoUtil.getTimeSpan().queryBuilder().where(TimeSpanDao.Properties.AdvertiseId.eq(this.ad_id)).limit(10).list()
timeList?.forEach {
val curTime = System.currentTimeMillis()
@ -223,7 +224,6 @@ fun Advertise.isOverdue():Boolean{
if (endTime <= 0) {
endTime = Long.MAX_VALUE
}
//如果时间已经大于结束时间了,直接将广告删除
if (curTime>endTime){
DaoUtil.deleteAdvertise(this)

View File

@ -0,0 +1,33 @@
package com.xixun.contract.model
import android.os.Parcel
import android.os.Parcelable
/**
*
* @Author LJH
* @Time 2023/4/12
* @description
*/
class TaskToKeepScreenOn() :Parcelable {
constructor(parcel: Parcel) : this() {
}
override fun writeToParcel(parcel: Parcel, flags: Int) {
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<TaskToKeepScreenOn> {
override fun createFromParcel(parcel: Parcel): TaskToKeepScreenOn {
return TaskToKeepScreenOn(parcel)
}
override fun newArray(size: Int): Array<TaskToKeepScreenOn?> {
return arrayOfNulls(size)
}
}
}

View File

@ -0,0 +1,33 @@
package com.xixun.xy.conn.aidl
import android.os.Parcel
import android.os.Parcelable
/**
*
* @Author LJH
* @Time 2023/4/12
* @description
*/
class FpgaInfo() :Parcelable {
constructor(parcel: Parcel) : this() {
}
override fun describeContents(): Int {
return 0
}
override fun writeToParcel(dest: Parcel?, flags: Int) {
}
companion object CREATOR : Parcelable.Creator<FpgaInfo> {
override fun createFromParcel(parcel: Parcel): FpgaInfo {
return FpgaInfo(parcel)
}
override fun newArray(size: Int): Array<FpgaInfo?> {
return arrayOfNulls(size)
}
}
}

Binary file not shown.

View File

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

Binary file not shown.

View File

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