diff --git a/.gradle/5.6.4/executionHistory/executionHistory.bin b/.gradle/5.6.4/executionHistory/executionHistory.bin index d821269..25a471a 100644 Binary files a/.gradle/5.6.4/executionHistory/executionHistory.bin and b/.gradle/5.6.4/executionHistory/executionHistory.bin differ diff --git a/.gradle/5.6.4/executionHistory/executionHistory.lock b/.gradle/5.6.4/executionHistory/executionHistory.lock index 4baf4a9..51682bf 100644 Binary files a/.gradle/5.6.4/executionHistory/executionHistory.lock and b/.gradle/5.6.4/executionHistory/executionHistory.lock differ diff --git a/.gradle/5.6.4/fileHashes/fileHashes.bin b/.gradle/5.6.4/fileHashes/fileHashes.bin index f1cc59f..7a9321c 100644 Binary files a/.gradle/5.6.4/fileHashes/fileHashes.bin and b/.gradle/5.6.4/fileHashes/fileHashes.bin differ diff --git a/.gradle/5.6.4/fileHashes/fileHashes.lock b/.gradle/5.6.4/fileHashes/fileHashes.lock index 6937c01..71edaf5 100644 Binary files a/.gradle/5.6.4/fileHashes/fileHashes.lock and b/.gradle/5.6.4/fileHashes/fileHashes.lock differ diff --git a/.gradle/5.6.4/fileHashes/resourceHashesCache.bin b/.gradle/5.6.4/fileHashes/resourceHashesCache.bin index 3218b2f..de44819 100644 Binary files a/.gradle/5.6.4/fileHashes/resourceHashesCache.bin and b/.gradle/5.6.4/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/5.6.4/javaCompile/classAnalysis.bin b/.gradle/5.6.4/javaCompile/classAnalysis.bin index c3b5f90..ccfe88d 100644 Binary files a/.gradle/5.6.4/javaCompile/classAnalysis.bin and b/.gradle/5.6.4/javaCompile/classAnalysis.bin differ diff --git a/.gradle/5.6.4/javaCompile/jarAnalysis.bin b/.gradle/5.6.4/javaCompile/jarAnalysis.bin index 1053ae1..c621d6a 100644 Binary files a/.gradle/5.6.4/javaCompile/jarAnalysis.bin and b/.gradle/5.6.4/javaCompile/jarAnalysis.bin differ diff --git a/.gradle/5.6.4/javaCompile/javaCompile.lock b/.gradle/5.6.4/javaCompile/javaCompile.lock index 3a30ef6..e86502e 100644 Binary files a/.gradle/5.6.4/javaCompile/javaCompile.lock and b/.gradle/5.6.4/javaCompile/javaCompile.lock differ diff --git a/.gradle/5.6.4/javaCompile/taskHistory.bin b/.gradle/5.6.4/javaCompile/taskHistory.bin index 4689ded..c936868 100644 Binary files a/.gradle/5.6.4/javaCompile/taskHistory.bin and b/.gradle/5.6.4/javaCompile/taskHistory.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 4b0d95b..26dec09 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index efa11cf..6de6b25 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.idea/libraries/Gradle__D__A_TaxiApp_26_taxiapp_ktl_app_libs_xixun_card_settings_1_2_4_jar.xml b/.idea/libraries/Gradle__D__A_TaxiApp_taxi26_26Original_taxiapp_ktl_app_libs_xixun_card_settings_1_2_4_jar.xml similarity index 60% rename from .idea/libraries/Gradle__D__A_TaxiApp_26_taxiapp_ktl_app_libs_xixun_card_settings_1_2_4_jar.xml rename to .idea/libraries/Gradle__D__A_TaxiApp_taxi26_26Original_taxiapp_ktl_app_libs_xixun_card_settings_1_2_4_jar.xml index 8d74aaf..d607440 100644 --- a/.idea/libraries/Gradle__D__A_TaxiApp_26_taxiapp_ktl_app_libs_xixun_card_settings_1_2_4_jar.xml +++ b/.idea/libraries/Gradle__D__A_TaxiApp_taxi26_26Original_taxiapp_ktl_app_libs_xixun_card_settings_1_2_4_jar.xml @@ -1,5 +1,5 @@ - + diff --git a/.idea/modules/app/taxiapp-ktl.app.androidTest.iml b/.idea/modules/app/taxiapp-ktl.app.androidTest.iml index 788eac6..d2a6618 100644 --- a/.idea/modules/app/taxiapp-ktl.app.androidTest.iml +++ b/.idea/modules/app/taxiapp-ktl.app.androidTest.iml @@ -39,6 +39,7 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/cbacc0420eb54d22b11c3ebe49cbfb9d/jetified-hamcrest-library-1.3.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/c2aff52a3446202851bad44fbb8fd9c7/jetified-core-1.2.0-api.jar + $MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/a33f8ce3216f44d0b34f8584fe1d4053/material-1.4.0-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/45ead938a935c9e6e195051654e8f67e/constraintlayout-2.0.1-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/5811bc91d2614a9158a1ca655b9ded43/appcompat-1.3.0-api.jar @@ -97,6 +98,7 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/50c4f3f9cb89c12875b3d8a37bce3ea8/jetified-kotlin-android-extensions-runtime-1.3.71.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/eef10497c076c3e0224eef478dfacc95/jetified-kotlin-stdlib-jdk7-1.3.71.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/2e05a7c119c523ef3da3eca735692616/jetified-kotlin-reflect-1.3.61.jar + $MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar @@ -128,8 +130,8 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/9822764d1b6050859a78a0b3ec51c6dc/jetified-permissionx-1.1.1-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/020b480d2bde92043942aeb85ef94e0f/jetified-YJTools-v1.0.5-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/cb9e9189a7eabc085ddffe7ef81268f3/jetified-android-database-sqlcipher-3.5.7-api.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar @@ -199,7 +201,7 @@ - + diff --git a/.idea/modules/app/taxiapp-ktl.app.iml b/.idea/modules/app/taxiapp-ktl.app.iml index aa56362..1b8e90e 100644 --- a/.idea/modules/app/taxiapp-ktl.app.iml +++ b/.idea/modules/app/taxiapp-ktl.app.iml @@ -4,7 +4,7 @@ diff --git a/.idea/modules/app/taxiapp-ktl.app.main.iml b/.idea/modules/app/taxiapp-ktl.app.main.iml index 2e91517..6f7f8e4 100644 --- a/.idea/modules/app/taxiapp-ktl.app.main.iml +++ b/.idea/modules/app/taxiapp-ktl.app.main.iml @@ -30,6 +30,7 @@ + $MODULE_DIR$/../../../app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/cd6ee3eb3fc50696fc57eaf7fa81506a/jetified-xixun_card_settings_1.2.4.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/50c4f3f9cb89c12875b3d8a37bce3ea8/jetified-kotlin-android-extensions-runtime-1.3.71.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/eef10497c076c3e0224eef478dfacc95/jetified-kotlin-stdlib-jdk7-1.3.71.jar @@ -40,6 +41,8 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/52f608662a75fc89303d1701f5ec50e0/jetified-lifecycle-reactivestreams-ktx-2.2.0-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/ec781f3119334c7509522ff1bb966868/jetified-lifecycle-runtime-ktx-2.2.0-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/798edd96275281c937a1982cd81c07a3/jetified-lifecycle-viewmodel-ktx-2.2.0-api.jar + $MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar + $MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar @@ -115,8 +118,8 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/9822764d1b6050859a78a0b3ec51c6dc/jetified-permissionx-1.1.1-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/020b480d2bde92043942aeb85ef94e0f/jetified-YJTools-v1.0.5-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/cb9e9189a7eabc085ddffe7ef81268f3/jetified-android-database-sqlcipher-3.5.7-api.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar @@ -156,20 +159,31 @@ + + + + + + + + + - + + + @@ -191,7 +205,7 @@ - + diff --git a/.idea/modules/app/taxiapp-ktl.app.unitTest.iml b/.idea/modules/app/taxiapp-ktl.app.unitTest.iml index 25e96e5..a8e96f5 100644 --- a/.idea/modules/app/taxiapp-ktl.app.unitTest.iml +++ b/.idea/modules/app/taxiapp-ktl.app.unitTest.iml @@ -30,6 +30,7 @@ + $MODULE_DIR$/../../../app/build/intermediates/compile_and_runtime_not_namespaced_r_class_jar/debug/R.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/cd6ee3eb3fc50696fc57eaf7fa81506a/jetified-xixun_card_settings_1.2.4.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/50c4f3f9cb89c12875b3d8a37bce3ea8/jetified-kotlin-android-extensions-runtime-1.3.71.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/eef10497c076c3e0224eef478dfacc95/jetified-kotlin-stdlib-jdk7-1.3.71.jar @@ -40,6 +41,8 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/52f608662a75fc89303d1701f5ec50e0/jetified-lifecycle-reactivestreams-ktx-2.2.0-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/ec781f3119334c7509522ff1bb966868/jetified-lifecycle-runtime-ktx-2.2.0-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/798edd96275281c937a1982cd81c07a3/jetified-lifecycle-viewmodel-ktx-2.2.0-api.jar + $MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar + $MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar @@ -117,8 +120,11 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/cb9e9189a7eabc085ddffe7ef81268f3/jetified-android-database-sqlcipher-3.5.7-api.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/73288eb0c21a43b54cd0b7ad8c497738/jetified-junit-4.12.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar + $MODULE_DIR$/../../../app/build/intermediates/javac/debug/classes + $MODULE_DIR$/../../../app/build/tmp/kotlin-classes/debug + $MODULE_DIR$/../../../app/build/tmp/kapt3/classes/debug + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar @@ -169,6 +175,7 @@ + @@ -187,7 +194,7 @@ - + diff --git a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.androidTest.iml b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.androidTest.iml index 86bc72f..51781e7 100644 --- a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.androidTest.iml +++ b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.androidTest.iml @@ -97,8 +97,9 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/107e22d3375bddc7d1b0a774a0f08ed5/jetified-gson-2.8.5.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/0fac2df818d5003a70205e494249161d/jetified-annotation-experimental-1.0.0-api.jar $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.1/30988fe2d77f3fe3bf7551bb8a8b795fad7e7226/constraintlayout-solver-2.0.1.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-32/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar + $MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_library_classes/debug/classes.jar + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-32/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar @@ -142,7 +143,7 @@ - + diff --git a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.iml b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.iml index 8af5723..54c1fbf 100644 --- a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.iml +++ b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.iml @@ -4,7 +4,7 @@ diff --git a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.main.iml b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.main.iml index 24d8229..787c95d 100644 --- a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.main.iml +++ b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.main.iml @@ -31,6 +31,7 @@ + $MODULE_DIR$/../../../kurolibrary/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/d81251d5927161ec93d9dc99e7da18e3/jetified-retrofit-2.7.1.jar @@ -83,8 +84,8 @@ $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.2.0/57136ff68ee784c6e19db34ed4a175338fadfde1/annotation-1.2.0.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/0fac2df818d5003a70205e494249161d/jetified-annotation-experimental-1.0.0-api.jar $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.1/30988fe2d77f3fe3bf7551bb8a8b795fad7e7226/constraintlayout-solver-2.0.1.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-32/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-32/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar @@ -128,7 +129,7 @@ - + diff --git a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.unitTest.iml b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.unitTest.iml index 5186528..7f8121b 100644 --- a/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.unitTest.iml +++ b/.idea/modules/kurolibrary/taxiapp-ktl.kurolibrary.unitTest.iml @@ -85,8 +85,11 @@ $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.constraintlayout/constraintlayout-solver/2.0.1/30988fe2d77f3fe3bf7551bb8a8b795fad7e7226/constraintlayout-solver-2.0.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/6caef15cbfc6f35ac8669787bd9cfcab/jetified-junit-4.13.2.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-32/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar + $MODULE_DIR$/../../../kurolibrary/build/intermediates/javac/debug/classes + $MODULE_DIR$/../../../kurolibrary/build/tmp/kotlin-classes/debug + $MODULE_DIR$/../../../kurolibrary/build/tmp/kapt3/classes/debug + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-32/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/28.0.3/core-lambda-stubs.jar @@ -128,7 +131,7 @@ - + diff --git a/.idea/modules/kurotool/taxiapp-ktl.kurotool.androidTest.iml b/.idea/modules/kurotool/taxiapp-ktl.kurotool.androidTest.iml index 8c20161..a51354b 100644 --- a/.idea/modules/kurotool/taxiapp-ktl.kurotool.androidTest.iml +++ b/.idea/modules/kurotool/taxiapp-ktl.kurotool.androidTest.iml @@ -93,8 +93,9 @@ $USER_HOME$/.gradle/caches/transforms-2/files-2.1/9f2b33d370b6af0362fe1e71cd0de502/jetified-annotations-13.0.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/61969562c26d090cb354becbc427a8b5/jetified-reactive-streams-1.0.3.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/107e22d3375bddc7d1b0a774a0f08ed5/jetified-gson-2.8.5.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar + $MODULE_DIR$/../../../kurotool/build/intermediates/compile_library_classes/debug/classes.jar + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar @@ -145,7 +146,7 @@ - + diff --git a/.idea/modules/kurotool/taxiapp-ktl.kurotool.iml b/.idea/modules/kurotool/taxiapp-ktl.kurotool.iml index 2751bbc..879241c 100644 --- a/.idea/modules/kurotool/taxiapp-ktl.kurotool.iml +++ b/.idea/modules/kurotool/taxiapp-ktl.kurotool.iml @@ -4,7 +4,7 @@ diff --git a/.idea/modules/kurotool/taxiapp-ktl.kurotool.main.iml b/.idea/modules/kurotool/taxiapp-ktl.kurotool.main.iml index 2ca9b36..dbf6c01 100644 --- a/.idea/modules/kurotool/taxiapp-ktl.kurotool.main.iml +++ b/.idea/modules/kurotool/taxiapp-ktl.kurotool.main.iml @@ -31,6 +31,7 @@ + $MODULE_DIR$/../../../kurotool/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/6176d58c87e449e2b2e5fc94fb6053c8/jetified-converter-scalars-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/b7680124ff9b7ea7fb176d7f0c284ad9/jetified-adapter-rxjava2-2.7.1.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/4fbf1ce8d5ae2af5f523851cfbe8b485/jetified-converter-gson-2.7.1.jar @@ -79,8 +80,8 @@ $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.arch.core/core-common/2.1.0/b3152fc64428c9354344bd89848ecddc09b6f07e/core-common-2.1.0.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/b8406a0417971e7997dafe8b24d4441f/interpolator-1.0.0-api.jar $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar @@ -131,7 +132,7 @@ - + diff --git a/.idea/modules/kurotool/taxiapp-ktl.kurotool.unitTest.iml b/.idea/modules/kurotool/taxiapp-ktl.kurotool.unitTest.iml index f552111..f10d680 100644 --- a/.idea/modules/kurotool/taxiapp-ktl.kurotool.unitTest.iml +++ b/.idea/modules/kurotool/taxiapp-ktl.kurotool.unitTest.iml @@ -81,8 +81,11 @@ $USER_HOME$/.gradle/caches/modules-2/files-2.1/androidx.annotation/annotation/1.1.0/e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8/annotation-1.1.0.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/73288eb0c21a43b54cd0b7ad8c497738/jetified-junit-4.12.jar $USER_HOME$/.gradle/caches/transforms-2/files-2.1/1f21aa167e0a0fee8c0d09407d21d417/jetified-hamcrest-core-1.3.jar - $MODULE_DIR$/../../../../../../Android/sdk/platforms/android-29/android.jar - $MODULE_DIR$/../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar + $MODULE_DIR$/../../../kurotool/build/intermediates/javac/debug/classes + $MODULE_DIR$/../../../kurotool/build/tmp/kotlin-classes/debug + $MODULE_DIR$/../../../kurotool/build/tmp/kapt3/classes/debug + $MODULE_DIR$/../../../../../../../Android/sdk/platforms/android-29/android.jar + $MODULE_DIR$/../../../../../../../Android/sdk/build-tools/29.0.2/core-lambda-stubs.jar @@ -131,7 +134,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index e495d69..450b265 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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. diff --git a/app/debug/output.json b/app/debug/output.json index b9b0d71..ff94639 100644 --- a/app/debug/output.json +++ b/app/debug/output.json @@ -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":{}}] \ No newline at end of file +[{"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":{}}] \ No newline at end of file diff --git a/app/src/main/aidl/com/xixun/xy/conn/aidl/ConnService.aidl b/app/src/main/aidl/com/xixun/xy/conn/aidl/ConnService.aidl index c9daf16..cdba6a9 100644 --- a/app/src/main/aidl/com/xixun/xy/conn/aidl/ConnService.aidl +++ b/app/src/main/aidl/com/xixun/xy/conn/aidl/ConnService.aidl @@ -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 FpgaInfoList); + + void send(String json); + + boolean setAlias(String value); + String getAlias(); + //boolean getRadioState(); + + String setKeyValue(String key,String value); + String getKeyValue(String key); + +} \ No newline at end of file diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java b/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java index 3582f19..13086a2 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java +++ b/app/src/main/java/cn/trans88/taxiappkotlin/Configurations.java @@ -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){ diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt b/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt index 8d47876..25ec295 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/TaxiApp.kt @@ -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() { diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/Repository.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/Repository.kt index 88938b3..510bd5a 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/Repository.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/Repository.kt @@ -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] diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/dao/DaoUtil.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/dao/DaoUtil.kt index aa8956c..0634212 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/dao/DaoUtil.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/dao/DaoUtil.kt @@ -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 { - return daoMaster.newSession().advertiseDao.loadAll() + return mAdvertiseDao.loadAll() } @Synchronized fun getSanleAdvertises(): List { - 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 = daoMaster.newSession().positionAdvertiseDao.loadAll() + fun getPositionAdvertises(): List = 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) } } diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/ConnResponse.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/ConnResponse.kt new file mode 100644 index 0000000..ce4329f --- /dev/null +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/ConnResponse.kt @@ -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 +) diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/ConnectMessage.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/ConnectMessage.kt new file mode 100644 index 0000000..1bf74cd --- /dev/null +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/ConnectMessage.kt @@ -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 = "" //注册时获得该账号的车辆信息 +) diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/PositionAdvertise.java b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/PositionAdvertise.java index b41c16b..92552fa 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/PositionAdvertise.java +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/PositionAdvertise.java @@ -38,7 +38,6 @@ public class PositionAdvertise implements Serializable { private List 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 getTime_span() { return time_span; diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/Schedule.java b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/Schedule.java index ddb0195..cd8018e 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/Schedule.java +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/Schedule.java @@ -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 week_day; diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/TimeSpan.java b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/TimeSpan.java index 83a07a4..26ff7a6 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/TimeSpan.java +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/model/TimeSpan.java @@ -62,4 +62,6 @@ public class TimeSpan { public void setDay_end(long day_end) { this.day_end = day_end; } + + } diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt index b2319fa..830f36e 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ConnManger.kt @@ -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(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() { + .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 diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt index b69fe08..34182e7 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/ProcessingCommands.kt @@ -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(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) diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/WsManager.kt b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/WsManager.kt index d6bac76..d234da3 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/WsManager.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/logic/network/WsManager.kt @@ -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" diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt index b58c25c..c140cc2 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayActivity.kt @@ -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(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") - } } diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayView.kt b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayView.kt index a9c02df..27e7240 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayView.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayView.kt @@ -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 diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayViewModel.kt b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayViewModel.kt index 43942ea..ac7f3fa 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayViewModel.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayViewModel.kt @@ -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 } diff --git a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayerRule.kt b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayerRule.kt index dd2df4e..9094939 100644 --- a/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayerRule.kt +++ b/app/src/main/java/cn/trans88/taxiappkotlin/ui/play/PlayerRule.kt @@ -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? = 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) diff --git a/app/src/main/java/com/xixun/contract/model/TaskToKeepScreenOn.kt b/app/src/main/java/com/xixun/contract/model/TaskToKeepScreenOn.kt new file mode 100644 index 0000000..72e6861 --- /dev/null +++ b/app/src/main/java/com/xixun/contract/model/TaskToKeepScreenOn.kt @@ -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 { + override fun createFromParcel(parcel: Parcel): TaskToKeepScreenOn { + return TaskToKeepScreenOn(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/xixun/xy/conn/aidl/FpgaInfo.kt b/app/src/main/java/com/xixun/xy/conn/aidl/FpgaInfo.kt new file mode 100644 index 0000000..b4b12b0 --- /dev/null +++ b/app/src/main/java/com/xixun/xy/conn/aidl/FpgaInfo.kt @@ -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 { + override fun createFromParcel(parcel: Parcel): FpgaInfo { + return FpgaInfo(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } +} \ No newline at end of file diff --git a/debug/TaxiApp_v3.3.3-beta26.3.6-debug{175}.apk b/debug/TaxiApp_v3.3.3-beta26.3.6-debug{175}.apk new file mode 100644 index 0000000..fdd8b72 Binary files /dev/null and b/debug/TaxiApp_v3.3.3-beta26.3.6-debug{175}.apk differ diff --git a/debug/output.json b/debug/output.json index ad2c80c..8f0406b 100644 --- a/debug/output.json +++ b/debug/output.json @@ -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":{}}] \ No newline at end of file +[{"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":{}}] \ No newline at end of file diff --git a/release/TaxiApp_v3.3.3-beta26.3-release{176}.apk b/release/TaxiApp_v3.3.3-beta26.3-release{176}.apk new file mode 100644 index 0000000..7a04d56 Binary files /dev/null and b/release/TaxiApp_v3.3.3-beta26.3-release{176}.apk differ diff --git a/release/output.json b/release/output.json index 7c42a94..a8ecf7b 100644 --- a/release/output.json +++ b/release/output.json @@ -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":{}}] \ No newline at end of file +[{"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":{}}] \ No newline at end of file