diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 7576624..ba6aacd 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -13,6 +13,17 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index dff75fa..6a4c1c4 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -103,6 +103,8 @@ dependencies {
implementation("com.contrarywind:Android-PickerView:4.1.9")
// GSYVideoPlayer
implementation("io.github.carguo:gsyvideoplayer:13.0.0")
+ //下载
+ implementation("io.github.chiclaim:downloader:1.0.2")
}
\ 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 53d3ea3..658e3c4 100644
--- a/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt
+++ b/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt
@@ -3,7 +3,9 @@ package com.example.defenseapplication.liveVideo
import android.content.Context
import android.graphics.Color
import android.media.AudioManager
+import android.media.MediaScannerConnection
import android.os.Bundle
+import android.os.Environment
import android.util.Log
import android.view.View
import android.widget.Toast
@@ -11,6 +13,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.lifecycle.lifecycleScope
+import androidx.media3.exoplayer.offline.Download
import com.example.defenseapplication.R
import com.example.defenseapplication.adapter.AlarmLogAdapter
import com.example.defenseapplication.bean.DeviceAlarmBean
@@ -22,6 +25,7 @@ import com.shuyu.gsyvideoplayer.utils.OrientationUtils
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer
import com.bigkoo.pickerview.builder.TimePickerBuilder
import com.bigkoo.pickerview.listener.OnTimeSelectListener
+import com.chiclaim.android.downloader.Downloader
import com.example.defenseapplication.view.CustomDialogFragment
import com.example.defenseapplication.view.LoadingDialog
import com.example.defenseapplication.view.MyGSYVideoPlayer
@@ -29,8 +33,12 @@ import com.example.defenseapplication.view.showDefenseDialog
import com.gyf.immersionbar.ImmersionBar
import com.shuyu.gsyvideoplayer.GSYVideoManager
import kotlinx.coroutines.launch
+import java.io.File
import java.text.SimpleDateFormat
import java.util.*
+import android.net.Uri
+import com.chiclaim.android.downloader.DownloadRequest
+import com.chiclaim.android.downloader.DownloadListener
//告警记录
class AlarmLogActivity : AppCompatActivity() {
@@ -46,7 +54,6 @@ class AlarmLogActivity : AppCompatActivity() {
private var isMute = false
private lateinit var audioManager: AudioManager
- private var isRightMenuVisible = false
private var currentAlarmItem: DeviceAlarmBean? = null
override fun onCreate(savedInstanceState: Bundle?) {
@@ -234,9 +241,39 @@ class AlarmLogActivity : AppCompatActivity() {
}
binding.ivDownload.setOnClickListener {
- showConfirmDialog(getString(R.string.tip), getString(R.string.download_alarm_video_confirm)) {
- // 下载逻辑
- Toast.makeText(this, getString(R.string.download_start), Toast.LENGTH_SHORT).show()
+
+// val item = currentAlarmItem
+//
+// if (item?.video.isNullOrEmpty()) {
+// Toast.makeText(
+// this,
+// "没有可下载的视频",
+// Toast.LENGTH_SHORT
+// ).show()
+// return@setOnClickListener
+// }
+
+ showConfirmDialog(
+ getString(R.string.tip),
+ getString(R.string.download_alarm_video_confirm)
+ ) {
+
+ //downloadVideo(item!!.video)
+ downloadVideo(
+ "https://media.w3.org/2010/05/sintel/trailer.mp4"
+ )
+
+ Toast.makeText(
+ this,
+ "开始下载",
+ Toast.LENGTH_SHORT
+ ).show()
+
+ Toast.makeText(
+ this,
+ getString(R.string.download_start),
+ Toast.LENGTH_SHORT
+ ).show()
}
}
binding.ivDelete.setOnClickListener {
@@ -307,6 +344,69 @@ class AlarmLogActivity : AppCompatActivity() {
showDefenseDialog(config, onPositiveClick = { onConfirm() })
}
+ private fun downloadVideo(url: String) {
+
+ val dir = File(
+ Environment.getExternalStoragePublicDirectory(
+ Environment.DIRECTORY_MOVIES
+ ),
+ "AlarmVideo"
+ )
+
+ if (!dir.exists()) {
+ dir.mkdirs()
+ }
+
+ val targetFile = File(
+ dir,
+ "${System.currentTimeMillis()}.mp4"
+ )
+
+ val request = DownloadRequest(
+ this,
+ url
+ )
+ .setDestinationUri(Uri.fromFile(targetFile))
+ .registerListener(object : DownloadListener {
+
+ override fun onDownloadStart() {
+ Log.d("DOWNLOAD", "开始下载")
+ }
+
+ override fun onProgressUpdate(percent: Int) {
+ Log.d("DOWNLOAD", "进度:$percent%")
+ }
+ override fun onDownloadComplete(uri: Uri) {
+ MediaScannerConnection.scanFile(
+ this@AlarmLogActivity,
+ arrayOf(targetFile.absolutePath),
+ arrayOf("video/mp4"),
+ null
+ )
+
+ runOnUiThread {
+ Toast.makeText(
+ this@AlarmLogActivity,
+ "下载成功",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+
+ override fun onDownloadFailed(e: Throwable) {
+ runOnUiThread {
+ Toast.makeText(
+ this@AlarmLogActivity,
+ "下载失败:${e.message}",
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ })
+
+ request.startDownload()
+ }
+
private fun deleteAlarmItem(id: String, loadingDialog: LoadingDialog) {
lifecycleScope.launch {
try {
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 46140b5..1918408 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -260,6 +260,12 @@
提示
+ 确定下载该入侵告警视频?
+ 确定删除该入侵告警视频?
+ 确定下载该入侵告警照片?
+ 确定删除该入侵告警照片?
+ 开始下载
+ 删除成功
请稍候...
操作成功
操作失败
@@ -488,4 +494,5 @@
验证失败
密码修改成功
密码修改失败
+ 更新失败
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5da439d..386f106 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -235,13 +235,13 @@
Generate Invite Code
- 提示
- 确定下载该入侵告警视频?
- 确定删除该入侵告警视频?
- 确定下载该入侵告警照片?
- 确定删除该入侵告警照片?
- 开始下载
- 删除成功
+ Tip
+ Confirm to download this intrusion alarm video?
+ Confirm to delete this intrusion alarm video?
+ Confirm to download this intrusion alarm photo?
+ Confirm to delete this intrusion alarm photo?
+ Start Download
+ Deleted successfully
Please wait...
Operation successful
Operation failed