From 60ecdf140b17e56384619999a02e8215159ab67c Mon Sep 17 00:00:00 2001 From: maxinyu Date: Wed, 3 Jun 2026 17:17:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E7=BB=84=E4=BB=B6=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .kotlin/errors/errors-1780384685236.log | 48 +++ .kotlin/errors/errors-1780384852520.log | 48 +++ .kotlin/errors/errors-1780384887923.log | 48 +++ .kotlin/errors/errors-1780384964383.log | 48 +++ .kotlin/errors/errors-1780385942943.log | 48 +++ app/build.gradle.kts | 1 + .../liveVideo/AlarmLogActivity.kt | 302 +++++++++++++++--- .../liveVideo/LiveVideoActivity.kt | 16 +- .../defenseapplication/utils/ApiService.kt | 2 - app/src/main/res/drawable/custom_seekbar.xml | 23 ++ app/src/main/res/drawable/custom_thumb.xml | 6 + app/src/main/res/drawable/full_size.png | Bin 0 -> 389 bytes app/src/main/res/drawable/mute.png | Bin 735 -> 406 bytes app/src/main/res/drawable/un_mute.png | Bin 0 -> 526 bytes app/src/main/res/drawable/zt.png | Bin 0 -> 1725 bytes .../main/res/layout/alarm_log_activity.xml | 98 +++++- .../main/res/layout/live_video_activity.xml | 2 +- 17 files changed, 626 insertions(+), 64 deletions(-) create mode 100644 .kotlin/errors/errors-1780384685236.log create mode 100644 .kotlin/errors/errors-1780384852520.log create mode 100644 .kotlin/errors/errors-1780384887923.log create mode 100644 .kotlin/errors/errors-1780384964383.log create mode 100644 .kotlin/errors/errors-1780385942943.log create mode 100644 app/src/main/res/drawable/custom_seekbar.xml create mode 100644 app/src/main/res/drawable/custom_thumb.xml create mode 100644 app/src/main/res/drawable/full_size.png create mode 100644 app/src/main/res/drawable/un_mute.png create mode 100644 app/src/main/res/drawable/zt.png diff --git a/.kotlin/errors/errors-1780384685236.log b/.kotlin/errors/errors-1780384685236.log new file mode 100644 index 0000000..4281fd0 --- /dev/null +++ b/.kotlin/errors/errors-1780384685236.log @@ -0,0 +1,48 @@ +kotlin version: 2.2.10 +error message: java.nio.file.AccessDeniedException: C:\Users\Administrator\AppData\Local\kotlin\daemon\kotlin-daemon-client-tsmarker13521342049877521529.tmp + +error message: Daemon compilation failed: Could not connect to Kotlin compile daemon +java.lang.RuntimeException: Could not connect to Kotlin compile daemon + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:214) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) + at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:74) + at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61) + at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58) + at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) + at org.gradle.internal.Factories$1.create(Factories.java:30) + at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:269) + at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:42) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:267) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:259) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) + + diff --git a/.kotlin/errors/errors-1780384852520.log b/.kotlin/errors/errors-1780384852520.log new file mode 100644 index 0000000..239a219 --- /dev/null +++ b/.kotlin/errors/errors-1780384852520.log @@ -0,0 +1,48 @@ +kotlin version: 2.2.10 +error message: java.nio.file.AccessDeniedException: C:\Users\Administrator\AppData\Local\kotlin\daemon\kotlin-daemon-client-tsmarker7858488327127427935.tmp + +error message: Daemon compilation failed: Could not connect to Kotlin compile daemon +java.lang.RuntimeException: Could not connect to Kotlin compile daemon + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:214) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) + at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:74) + at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61) + at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58) + at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) + at org.gradle.internal.Factories$1.create(Factories.java:30) + at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:269) + at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:42) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:267) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:259) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) + + diff --git a/.kotlin/errors/errors-1780384887923.log b/.kotlin/errors/errors-1780384887923.log new file mode 100644 index 0000000..5d53fcf --- /dev/null +++ b/.kotlin/errors/errors-1780384887923.log @@ -0,0 +1,48 @@ +kotlin version: 2.2.10 +error message: java.nio.file.AccessDeniedException: C:\Users\Administrator\AppData\Local\kotlin\daemon\kotlin-daemon-client-tsmarker4123933203426760146.tmp + +error message: Daemon compilation failed: Could not connect to Kotlin compile daemon +java.lang.RuntimeException: Could not connect to Kotlin compile daemon + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:214) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) + at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:74) + at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61) + at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58) + at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) + at org.gradle.internal.Factories$1.create(Factories.java:30) + at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:269) + at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:42) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:267) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:259) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) + + diff --git a/.kotlin/errors/errors-1780384964383.log b/.kotlin/errors/errors-1780384964383.log new file mode 100644 index 0000000..5aa5546 --- /dev/null +++ b/.kotlin/errors/errors-1780384964383.log @@ -0,0 +1,48 @@ +kotlin version: 2.2.10 +error message: java.nio.file.AccessDeniedException: C:\Users\Administrator\AppData\Local\kotlin\daemon\kotlin-daemon-client-tsmarker7296770195837935349.tmp + +error message: Daemon compilation failed: Could not connect to Kotlin compile daemon +java.lang.RuntimeException: Could not connect to Kotlin compile daemon + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:214) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) + at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:74) + at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61) + at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58) + at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) + at org.gradle.internal.Factories$1.create(Factories.java:30) + at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:269) + at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:42) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:267) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:259) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) + + diff --git a/.kotlin/errors/errors-1780385942943.log b/.kotlin/errors/errors-1780385942943.log new file mode 100644 index 0000000..ac5f4e9 --- /dev/null +++ b/.kotlin/errors/errors-1780385942943.log @@ -0,0 +1,48 @@ +kotlin version: 2.2.10 +error message: java.nio.file.AccessDeniedException: C:\Users\Administrator\AppData\Local\kotlin\daemon\kotlin-daemon-client-tsmarker14985441017732479130.tmp + +error message: Daemon compilation failed: Could not connect to Kotlin compile daemon +java.lang.RuntimeException: Could not connect to Kotlin compile daemon + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork.kt:214) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemonOrFallbackImpl(GradleKotlinCompilerWork.kt:159) + at org.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.run(GradleKotlinCompilerWork.kt:111) + at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction.execute(GradleCompilerRunnerWithWorkers.kt:74) + at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61) + at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44) + at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209) + at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66) + at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166) + at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59) + at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53) + at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41) + at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58) + at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169) + at org.gradle.internal.Factories$1.create(Factories.java:30) + at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:269) + at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:42) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:267) + at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:259) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127) + at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164) + at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133) + at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) + at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) + at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) + at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) + at java.base/java.lang.Thread.run(Thread.java:1583) + + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 66e4918..8ec58f4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -104,4 +104,5 @@ dependencies { //基于exoPlayer 自定义播放器 JPlayer支持功能 implementation("com.ycjiang:VideoPlayModule-Lite:2.3.61") + } \ No newline at end of file diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt index 1690dbe..8bd59b6 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt @@ -6,7 +6,10 @@ import android.os.Bundle import android.util.Log import android.view.View import android.view.ViewGroup +import android.view.WindowManager import android.widget.LinearLayout +import android.widget.SeekBar +import android.widget.TextView import android.widget.Toast import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity @@ -16,6 +19,7 @@ import chuangyuan.ycj.videolibrary.listener.VideoInfoListener import chuangyuan.ycj.videolibrary.video.ExoUserPlayer import chuangyuan.ycj.videolibrary.video.VideoPlayerManager import com.google.android.exoplayer2.ui.PlayerView +import com.google.android.exoplayer2.SimpleExoPlayer import com.example.defenseapplication.R import com.example.defenseapplication.adapter.AlarmLogAdapter import com.example.defenseapplication.bean.DeviceAlarmBean @@ -24,6 +28,8 @@ import com.example.defenseapplication.databinding.AlarmLogActivityBinding import com.example.defenseapplication.utils.RetrofitNetwork import com.gyf.immersionbar.ImmersionBar import kotlinx.coroutines.launch +import android.os.Handler +import android.os.Looper import java.text.SimpleDateFormat import java.util.* import com.bigkoo.pickerview.builder.TimePickerBuilder @@ -38,23 +44,38 @@ class AlarmLogActivity : AppCompatActivity() { private val originalAlarmList = mutableListOf() private lateinit var exoPlayerManager: ExoUserPlayer private var isMuted = false - private var isVoiceEnabled = false - private var isLightOn = false + private var isPlaying = false private var deviceId: String? = null private var isLoading = false private var fromLiveVideo = false + private var isFullScreen = false + private var isControlsVisible = false + private val hideDelay = 5000L // 5秒自动隐藏 + private val hideHandler = Handler(Looper.getMainLooper()) + private val hideRunnable = Runnable { + hideControls() + } private var passedVideoUrl: String? = null private var passedSelectedId: String? = null private var passedCreateTime: String? = null + private var totalDuration: Long = 0 + private val progressHandler = Handler(Looper.getMainLooper()) + private val progressRunnable = object : Runnable { + override fun run() { + updateProgress() + progressHandler.postDelayed(this, 1000) + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = AlarmLogActivityBinding.inflate(layoutInflater) setContentView(binding.root) - ImmersionBar.with(this) - .statusBarDarkFont(true) - .transparentStatusBar() - .init() + + window.setFlags( + WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN + ) deviceId = intent.getStringExtra("device_id") fromLiveVideo = intent.getBooleanExtra("from_live_video", false) @@ -68,14 +89,14 @@ class AlarmLogActivity : AppCompatActivity() { fetchAlarmList() initListener() - onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - if (exoPlayerManager.onBackPressed()) { - return - } - finish() - } - }) +// onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { +// override fun handleOnBackPressed() { +// if (exoPlayerManager.onBackPressed()) { +// return +// } +// finish() +// } +// }) } private fun dpToPx(dp: Int): Int { @@ -97,6 +118,9 @@ class AlarmLogActivity : AppCompatActivity() { .addVideoInfoListener(object : VideoInfoListener { override fun onPlayStart(p0: Long) { Log.d("AlarmLogActivity", "视频开始播放") + startProgressUpdate() + showControls() + resetHideTimer() } override fun onLoadingChanged() { @@ -108,9 +132,24 @@ class AlarmLogActivity : AppCompatActivity() { override fun onPlayEnd() { Log.d("AlarmLogActivity", "播放结束") + stopProgressUpdate() + hideControls() } override fun isPlaying(p0: Boolean) { + isPlaying = p0 + if (p0) { + startProgressUpdate() + // 视频开始播放时,如果控制栏可见,启动自动隐藏计时器 + if (isControlsVisible) { + resetHideTimer() + } + } else { + stopProgressUpdate() + // 视频暂停时,取消自动隐藏计时器,保持控制栏显示 + hideHandler.removeCallbacks(hideRunnable) + showControls() + } } fun onRepeatModeChanged(p0: Int) { @@ -121,25 +160,11 @@ class AlarmLogActivity : AppCompatActivity() { exoPlayerManager.startPlayer() setupControllerVisibilityListener() + updateProgress() } private fun setupControllerVisibilityListener() { - binding.exoPlayContextId.post { - val playerView = findPlayerView(binding.exoPlayContextId) - playerView?.setControllerVisibilityListener { visibility -> - if (visibility == View.VISIBLE) { - binding.ivBack.visibility = View.VISIBLE - binding.muteBar.visibility = View.VISIBLE - binding.ivDownload.visibility = View.VISIBLE - binding.ivDelete.visibility = View.VISIBLE - } else { - binding.ivBack.visibility = View.GONE - binding.muteBar.visibility = View.GONE - binding.ivDownload.visibility = View.GONE - binding.ivDelete.visibility = View.GONE - } - } - } + // 移除原来的控制器监听器,改为自定义控制逻辑 } private fun findPlayerView(view: View): PlayerView? { @@ -169,16 +194,19 @@ class AlarmLogActivity : AppCompatActivity() { binding.alarmListRecyclerView.layoutManager = LinearLayoutManager(this) binding.alarmListRecyclerView.adapter = adapter } - + private fun playVideo(videoUrl: String) { exoPlayerManager.onDestroy() - + exoPlayerManager = VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_GESTURE, binding.exoPlayContextId) .setPlayUri(videoUrl) .setPosition(0) .addVideoInfoListener(object : VideoInfoListener { override fun onPlayStart(p0: Long) { Log.d("AlarmLogActivity", "视频开始播放") + startProgressUpdate() + showControls() + resetHideTimer() } override fun onLoadingChanged() { @@ -190,25 +218,51 @@ class AlarmLogActivity : AppCompatActivity() { override fun onPlayEnd() { Log.d("AlarmLogActivity", "播放结束") + stopProgressUpdate() + hideControls() } override fun isPlaying(p0: Boolean) { + isPlaying = p0 + if (p0) { + startProgressUpdate() + // 视频开始播放时,如果控制栏可见,启动自动隐藏计时器 + if (isControlsVisible) { + resetHideTimer() + } + } else { + stopProgressUpdate() + // 视频暂停时,取消自动隐藏计时器,保持控制栏显示 + hideHandler.removeCallbacks(hideRunnable) + showControls() + } } fun onRepeatModeChanged(p0: Int) { } }) .create() - + exoPlayerManager.startPlayer() + + // 保持当前的静音状态 + if (isMuted) { + try { + val method = exoPlayerManager.javaClass.getMethod("getPlayer") + val player = method.invoke(exoPlayerManager) as? SimpleExoPlayer + player?.volume = 0f + } catch (e: Exception) { + e.printStackTrace() + } + } } private fun fetchAlarmList() { val currentDeviceId = deviceId ?: return - + Log.d("AlarmLogActivity", "=== 开始请求设备告警日志 ===") Log.d("AlarmLogActivity", "请求参数 - deviceId: $currentDeviceId") - + isLoading = true lifecycleScope.launch { try { @@ -218,16 +272,16 @@ class AlarmLogActivity : AppCompatActivity() { pageNum = "1", pageSize = "10" ) - + Log.d("AlarmLogActivity", "请求完成") Log.d("AlarmLogActivity", "总条数: ${response.total}, 当前页数据条数: ${response.rows.size}") - + val newData = response.rows originalAlarmList.clear() originalAlarmList.addAll(newData) filterAlarmListByDate(calendar) Log.d("AlarmLogActivity", "已获取 ${newData.size} 条数据") - + } catch (e: Exception) { Log.e("AlarmLogActivity", "请求异常: ${e.message}", e) } finally { @@ -236,11 +290,21 @@ class AlarmLogActivity : AppCompatActivity() { } } } - + + private fun showEmptyView() { + binding.alarmListRecyclerView.visibility = View.GONE + binding.emptyLayout.visibility = View.VISIBLE + } + + private fun hideEmptyView() { + binding.alarmListRecyclerView.visibility = View.VISIBLE + binding.emptyLayout.visibility = View.GONE + } + private fun filterAlarmListByDate(selectedDate: Calendar) { val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()) val selectedDateStr = dateFormat.format(selectedDate.time) - + alarmList.clear() originalAlarmList.forEach { item -> val itemDateStr = item.createTime.substring(0, 10) @@ -250,6 +314,12 @@ class AlarmLogActivity : AppCompatActivity() { } adapter?.notifyDataSetChanged() Log.d("AlarmLogActivity", "日期筛选完成,筛选后条数: ${alarmList.size}") + + if (alarmList.isEmpty()) { + showEmptyView() + } else { + hideEmptyView() + } } private fun updateDateDisplay() { @@ -258,8 +328,51 @@ class AlarmLogActivity : AppCompatActivity() { binding.tvDate.text = "${month}月${day}日" } + private fun showControls() { + isControlsVisible = true + binding.functionBar.visibility = View.VISIBLE + binding.muteBar.visibility = View.VISIBLE + binding.playBar.visibility = View.VISIBLE + binding.progressBar.visibility = View.VISIBLE + // 只有在视频播放时才启动自动隐藏计时器 + if (isPlaying) { + resetHideTimer() + } + } + + private fun hideControls() { + isControlsVisible = false + binding.functionBar.visibility = View.GONE + binding.muteBar.visibility = View.GONE + binding.playBar.visibility = View.GONE + binding.progressBar.visibility = View.GONE + } + + private fun toggleControls() { + if (isControlsVisible) { + hideControls() + } else { + showControls() + } + } + + private fun resetHideTimer() { + hideHandler.removeCallbacks(hideRunnable) + // 只有在视频播放时才启动自动隐藏计时器 + if (isPlaying) { + hideHandler.postDelayed(hideRunnable, hideDelay) + } + } + private fun initListener() { + // 点击视频区域切换控制栏显示/隐藏 + binding.exoPlayContextId.setOnClickListener { + toggleControls() + } + + // 控制栏上的按钮点击时重置隐藏计时器 binding.ivBack.setOnClickListener { + resetHideTimer() finish() } @@ -268,26 +381,66 @@ class AlarmLogActivity : AppCompatActivity() { } binding.ivMute.setOnClickListener { + resetHideTimer() toggleMute() } binding.ivDownload.setOnClickListener { + resetHideTimer() downloadVideo() } binding.ivDelete.setOnClickListener { + resetHideTimer() deleteVideo() } + + binding.ivFullScreen.setOnClickListener { + resetHideTimer() + toggleFullScreen() + } + + binding.ivPlay.setOnClickListener { + resetHideTimer() + togglePlay() + } + + binding.seekBar.setOnSeekBarChangeListener(object : android.widget.SeekBar.OnSeekBarChangeListener { + override fun onProgressChanged(seekBar: android.widget.SeekBar?, progress: Int, fromUser: Boolean) { + if (fromUser) { + resetHideTimer() + exoPlayerManager.seekTo(progress.toLong() * 1000) + } + } + + override fun onStartTrackingTouch(seekBar: android.widget.SeekBar?) { + resetHideTimer() + } + + override fun onStopTrackingTouch(seekBar: android.widget.SeekBar?) { + } + }) } private fun toggleMute() { isMuted = !isMuted - if (isMuted) { - binding.ivMute.setImageResource(R.drawable.mute) - Toast.makeText(this, R.string.sound_off, Toast.LENGTH_SHORT).show() - } else { - binding.ivMute.setImageResource(R.drawable.voice) - Toast.makeText(this, R.string.sound_on, Toast.LENGTH_SHORT).show() + try { + // 通过反射获取底层的 ExoPlayer 实例 + val method = exoPlayerManager.javaClass.getMethod("getPlayer") + val player = method.invoke(exoPlayerManager) as? SimpleExoPlayer + + if (isMuted) { + binding.ivMute.setImageResource(R.drawable.mute) + player?.volume = 0f + Toast.makeText(this, R.string.sound_off, Toast.LENGTH_SHORT).show() + } else { + binding.ivMute.setImageResource(R.drawable.un_mute) + player?.volume = 1f + Toast.makeText(this, R.string.sound_on, Toast.LENGTH_SHORT).show() + } + } catch (e: Exception) { + e.printStackTrace() + Toast.makeText(this, "音量控制失败", Toast.LENGTH_SHORT).show() } } @@ -299,6 +452,63 @@ class AlarmLogActivity : AppCompatActivity() { Toast.makeText(this, R.string.delete, Toast.LENGTH_SHORT).show() } + private fun updateProgress() { + val currentPosition = exoPlayerManager.getCurrentPosition() + totalDuration = exoPlayerManager.getDuration() + + binding.tvCurrentTime.text = formatTime(currentPosition) + binding.tvTotalTime.text = formatTime(totalDuration) + + if (totalDuration > 0) { + val progress = (currentPosition * 100 / totalDuration).toInt() + binding.seekBar.progress = progress + } + } + + private fun formatTime(milliseconds: Long): String { + val seconds = (milliseconds / 1000).toInt() + val hours = seconds / 3600 + val minutes = (seconds % 3600) / 60 + val secs = seconds % 60 + + return if (hours > 0) { + String.format("%02d:%02d:%02d", hours, minutes, secs) + } else { + String.format("%02d:%02d", minutes, secs) + } + } + + private fun startProgressUpdate() { + stopProgressUpdate() + progressHandler.post(progressRunnable) + } + + private fun stopProgressUpdate() { + progressHandler.removeCallbacks(progressRunnable) + } + + private fun toggleFullScreen() { + isFullScreen = !isFullScreen + if (isFullScreen) { + binding.ivFullScreen.setImageResource(R.drawable.full_screen) + requestedOrientation = android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE + } else { + binding.ivFullScreen.setImageResource(R.drawable.full_size) + requestedOrientation = android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT + } + } + + private fun togglePlay() { + isPlaying = !isPlaying + if (isPlaying) { + binding.ivPlay.setImageResource(R.drawable.zt) + exoPlayerManager.startPlayer() + } else { + binding.ivPlay.setImageResource(R.drawable.start) + exoPlayerManager.onPause() + } + } + override fun onResume() { super.onResume() exoPlayerManager.onResume() diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt index e29ccdc..cf740a1 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt @@ -83,14 +83,14 @@ class LiveVideoActivity : BaseActivity() { initAlarmRecyclerView() initListener() fetchAlarmList() - onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { - override fun handleOnBackPressed() { - if (exoPlayerManager.onBackPressed()) { - return - } - finish() - } - }) +// onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) { +// override fun handleOnBackPressed() { +// if (exoPlayerManager.onBackPressed()) { +// return +// } +// finish() +// } +// }) } private fun initVideoPlayer() { diff --git a/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt b/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt index 7cde3ca..915ce41 100644 --- a/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt +++ b/app/src/main/java/com/example/defenseapplication/utils/ApiService.kt @@ -230,8 +230,6 @@ interface ApiService { @Query("deviceId") deviceId: String, @Query("pageNum") pageNum: String="1", @Query("pageSize") pageSize: String="10", - @Query("startTime") startTime: String? = null, - @Query("endTime") endTime: String? = null ): DeviceAlarmResponse diff --git a/app/src/main/res/drawable/custom_seekbar.xml b/app/src/main/res/drawable/custom_seekbar.xml new file mode 100644 index 0000000..552942a --- /dev/null +++ b/app/src/main/res/drawable/custom_seekbar.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/custom_thumb.xml b/app/src/main/res/drawable/custom_thumb.xml new file mode 100644 index 0000000..e844bcb --- /dev/null +++ b/app/src/main/res/drawable/custom_thumb.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/full_size.png b/app/src/main/res/drawable/full_size.png new file mode 100644 index 0000000000000000000000000000000000000000..a8122eadd10e3690131d9b577d44073638333df6 GIT binary patch literal 389 zcmV;00eb$4P)R3$eFWu(MNJv9l0sK@dd6#~IG;3ni1<$O++By7#_J6P`3iA9>fUcs=q*8glzwnyj z(uRlvsE3mRy4VlEwfY$L6!1dx4X*Wz;j_nmEg@jwRPuzSPTg=Xa`jqn?7TWOmQuM^J51zj%{#D*ylh|NpPe jDw_ZR00v1!K~w_(uyTzmsq?lP00000NkvXXu0mjf(_5$d literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/mute.png b/app/src/main/res/drawable/mute.png index a9a43da5066f916233866ee83b1d18e7bb0a286c..e2a00c883eb0e48758119d7bb4f520b15055e05a 100644 GIT binary patch literal 406 zcmV;H0crk;P)Px#1am@3R0s$N2z&@+hyVZqKuJVFRA_^$sKhK0e zo*=Sg$4nalXEN+`zWhq*!Uu(Qn={?I8g@F@HWWT|3{WX_W0uMu0ZiNITSN0U`o_>j z8QDX&Y4$*HGF<)x@Dy+bUfJkW^x`0F~85)aNY% za5gm2;}l9;%CpV>ldqe&FmF9!eJ-OMK$j0PDj4-xt9yXERJtm2kprKNb5o~x%KM(1 zvGyC9w=&;S_R!Ryn3AUc$d{Bo)emcyrKNw-7l!$7^sMU}KmY&$07*qoM6N<$f}PW* A5dZ)H literal 735 zcmV<50wDc~P)< zOGp+`6vyvaQArUIK@en6&?+Jbq3A&oQ7vjw5cD8uRYXPwQPDdJ+7v+#uys+J+C*(b z6h(Y3bmI#*A}GE<@PRu1{)f5aeBX?ZZ{bQgzjMw#=iYPfcjwMn z!gZ}uumh|(b|q_$Vq?i{K=vz?!Fm{k_fSf4UzDM{Ed>K`jGT5}j{k=yTd*dn1|(OJ zxd2rx+6jB%E{qd%`ubAzPOH& zp~)}P&K-`d%WAMLN{&RfFNw}lXRbM)NoMW*B=JMwWh;*6_h3ylFejmU@wJN*cBi~<)OBK6$D&_r51+i` zv=mf>i3*tG6*poGzY0!4C0qmjD&3a&fzo^haea>_uwJy0kikzdNj0#jb62ryv>z*3 zi@HZqe*qY}jZ&cZ1Y`0AUB)Kk8<=W95yc)eQO}?cdjxd-E@A7)@4-s8NkKQ5P`DgE z+8|OY7P-zpP@TDsMaA`oRxsf_+=A^;LlbS_DZV5=Zw>OvX+To9C0V?gm}6HVXlDl) zcfl(-3;Jb$v2#j(1AQfRi?nkqo?J;2eG>G~M4xVb_|6g2jZ03;@$(yK@h%pniu+aM zCPCk+dLNt5<}_eoKMc*cpwL`SgF+WCX8sHS00960F7Va#00006NklPx#1am@3R0s$N2z&@+hyVZqxJg7oRA_yxE8m z@6vmqNj5>kI6w@eNmAzkfR?JZ+KL+St<*vj4EQ~K)Ku)K(k$aI)qwjo0hOL933J2) zaH0^WMG~gO18_HTjeDV+EujV}9)N>1&b4s7Uc<6ivuGdtq*1!Xm zAp>miA_ZF90KLQ>sdZlhx7|`1GWbJ@9^fa-Gd)s=;1}4t7;Vi<2>^BIK2<^uGc4wK zc^|i=Rxe*8<0aPJt6JabH#AMg4NaZ8q2VoM7nJ>%Tw6+RNZpoFks#-${v6XdlQDg) z;w8*+uyt5OyqD1K(IR8|aF;QCyv~^Zz`>aQ#Kf5X$j5kZ^>b-08yo+HZ&T=J(vww$ QHvj+t07*qoM6N<$f_75pi~s-t literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/zt.png b/app/src/main/res/drawable/zt.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c209df6d2b274bd30124dbdcda50e654fe78f8 GIT binary patch literal 1725 zcmZuyX;c$e6rLGJn1InCEFO{Su!$&GY6X!+GDsjXB48bB;r6`t+=PutFhXgu2cFU2LNjC4=Oh@FQK`citsx8%scZt9Z(Ig*Od3l)z; z39`Nu!E#C0AU2@ry(uOlNE=bmx>uHb)>G&2?=7c9`*?AaQ07Hf^hO@GV7v$mz4-wr zvMw*0dQ>Q?V;CG@7B;Mc{XFLt-3}POAiX3>Oj1Inxnryu${ZDFuGice7Fue@#>R5{V^@3m zeVkh5G&VS}@A|9Z6T0ZQLb8W9a@niyM7j9l>D6A6EWwkZd$ub_${m+zOk==kOxW05)=F zcyJ~{&(duCGZH7}atqUE@hIW7keBlgAaqf_EJ%QL8Z3(yyIVSeZo3{?Jg4Q9XQJi_ zg)$SExDtJodDqvf+J&nO<{r889j*ZkF7Narfb0av#`AE9CV#%`IFylY5H&>M#l%@| zUagu#79?EOBtc>c-nTsp;J25*lz^O*Q8&r&2>oj4x#BiX+`W)o-D%5btM_^|Wh1m( z<(A=U5OZ>-zMCFQ<+49~uL=AL6|g01jWmE)KL%6N!xzAYul zf*;#e$tr}-vF#lV0W`(0`ffDb@ME_h6PoNrXzY;XVh;>gwkUlR;J?5r$Lp>6UxG3{ zMXft$E^+(JG}!e=#L9`_Da!S)M5x2ToTvr=3Hiu~PGnEpV*0=dx#mZ#;*dRy>)gMx zb}`(_YW)b@iqG=b@8umt=R)!EDB~dC z>>~l2w;k&-1S_CY>j6N*-`pCa!SP6tj8)bncL z*yWbp^^kLUve0-xLNlgTOToR$2YdbvKD`$EmOz>PfpJA#l&LuR@VGU2$op2d3-B)5 zn4SSj6V4Hz0`gu5;P$J^9!Tu?Y|E6Yd?%DKnbWed9IE(yLVMs5gf=+5a;>`Eos@1H z*Slv1pKTf>D!~W|^Vg(o0Gil-L#7FNNrpc4ldgCb|?i(F|DpAzYKD! zcO-fF$f-$d2LeN}pBP!;`u+s?UAEQGYmuD#yJ=vvJBCMwUf7)r0z_=sq4`D;!&Gd# zQkM_iD)X#+37OluN2dRV(B3W9x@ZhCQh2}seJ z9!!HyLZfx{5VWs3UoZ=0f}@%xKY-o_zK4Usy~Vd4ZZbfbCAEE7#W=yM2^-Zw6+%9w z`GFdJ+{Vg7&?MdSJ={>nXN&MsDa;Sk&mCPwoe&<|?{NpzF+aRza130Mn`vhbu6{gF znv%;mqd!%Z@CFBmZCBne|9MVrLQImZ*H-eP+=RJUQ}c1aY}hn}H9Y4vr~Jf=l=RYu z7MVRhYX0CeQ33}K-t=DrN-3}N;yqEOBqF+7j5kl4puV=5`#ibBXr@3;6+WxDxfvSG|9)~I zG*<92RkpvJI;X5EH&Nisuia7EQkc#qPO&W@%~voeIsk-NHwYkdE+~~Cc~IE#vj6co tTCY<(6CVr_rWM&@ih`xnCh)A&1r_6f|^ABtevv2?a literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/alarm_log_activity.xml b/app/src/main/res/layout/alarm_log_activity.xml index 4d69615..7c0aa6e 100644 --- a/app/src/main/res/layout/alarm_log_activity.xml +++ b/app/src/main/res/layout/alarm_log_activity.xml @@ -2,9 +2,10 @@ @@ -18,11 +19,10 @@ android:layout_width="match_parent" android:layout_height="280dp" android:background="@android:color/transparent" - app:use_controller="true" /> + app:use_controller="false"/> - + + android:orientation="vertical" + android:gravity="center"> + android:src="@drawable/un_mute"/> + + + + + + + + + + + + + + + + + + + + + + + @@ -121,5 +189,21 @@ android:layout_weight="1" android:background="#FFFFFF" /> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/live_video_activity.xml b/app/src/main/res/layout/live_video_activity.xml index a137a28..1f3e639 100644 --- a/app/src/main/res/layout/live_video_activity.xml +++ b/app/src/main/res/layout/live_video_activity.xml @@ -49,7 +49,7 @@ android:layout_width="match_parent" android:layout_height="250dp" android:background="@android:color/transparent" - app:use_controller="true"/> + app:use_controller="false"/>