diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed8b745..362cb59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,7 @@
-
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed8b745..362cb59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,7 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index 7d024b9..30fe8b7 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -13,10 +13,12 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
- Manifest.permission.READ_MEDIA_IMAGES,
- Manifest.permission.MANAGE_EXTERNAL_STORAGE
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_MEDIA_IMAGES
)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
arrayOf(
@@ -26,8 +28,10 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.MANAGE_EXTERNAL_STORAGE
)
} else {
@@ -38,8 +42,8 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed8b745..362cb59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,7 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index 7d024b9..30fe8b7 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -13,10 +13,12 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
- Manifest.permission.READ_MEDIA_IMAGES,
- Manifest.permission.MANAGE_EXTERNAL_STORAGE
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_MEDIA_IMAGES
)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
arrayOf(
@@ -26,8 +28,10 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.MANAGE_EXTERNAL_STORAGE
)
} else {
@@ -38,8 +42,8 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
index dc0d996..be2c225 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
@@ -1,7 +1,11 @@
package com.casic.br.operationsite.view
import android.content.Context
+import android.graphics.Color
+import android.media.MediaScannerConnection
+import android.net.Uri
import android.os.Bundle
+import android.provider.MediaStore
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -14,11 +18,18 @@
import com.casic.br.operationsite.extensions.initImmersionBar
import com.luck.picture.lib.photoview.PhotoView
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.FileDownloadManager
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import java.io.File
class BigImageActivity : KotlinBaseActivity() {
+ private val kTag = "BigImageActivity"
+
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
@@ -38,7 +49,7 @@
}
override fun initEvent() {
- val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
+ val index = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY)
if (urls == null || urls.size == 0) {
return
@@ -74,17 +85,85 @@
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view =
- LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false)
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(data[position]).into(photoView)
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView = view.findViewById(R.id.photoView)
+
+ val path = data[position]
+ /**
+ * DisclosureActivity -> http://111.198.10.15:22006/static/2024-06/b237b332b00c4ce99585c61f860f30b7.jpeg
+ * EnvironmentActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628110803.jpg
+ * SuppliesActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111403.jpg
+ * GuardiansActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111506.jpg
+ * */
+
+ Glide.with(context).load(path).into(photoView)
photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
container.addView(view)
//点击大图取消预览
photoView.setOnClickListener { finish() }
+
+ photoView.setOnLongClickListener {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitle(arrayListOf("保存"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> updateSystemAlbum(path)
+ }
+ }
+
+
+ }).build().show()
+ true
+ }
return view
}
+ private fun updateSystemAlbum(imagePath: String) {
+ if (imagePath.startsWith("http") || imagePath.startsWith("https")) {
+ //需要将图片保存在本地
+ FileDownloadManager.Builder().setDownloadFileSource(imagePath)
+ .setFileSuffix("jpg").setFileSaveDirectory(createDownloadFileDir())
+ .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener {
+ override fun onDownloadEnd(file: File) {
+ scanFile(file)
+ }
+
+ override fun onFailure(throwable: Throwable) {
+
+ }
+
+ override fun onProgressChanged(progress: Int) {
+
+ }
+ }).build().start()
+ } else {
+ scanFile(File(imagePath))
+ }
+ }
+
+ private fun scanFile(file: File) {
+ MediaStore.Images.Media.insertImage(
+ contentResolver,
+ file.absolutePath, file.name, resources.getString(R.string.app_name)
+ )
+
+ MediaScannerConnection.scanFile(context, arrayOf(file.absolutePath), null,
+ object : MediaScannerConnection.MediaScannerConnectionClient {
+ override fun onMediaScannerConnected() {
+
+ }
+
+ override fun onScanCompleted(path: String?, uri: Uri?) {
+ "保存到相册成功".show(context)
+ }
+ })
+ }
+
override fun destroyItem(container: ViewGroup, position: Int, any: Any) {
container.removeView(any as View)
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed8b745..362cb59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,7 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index 7d024b9..30fe8b7 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -13,10 +13,12 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
- Manifest.permission.READ_MEDIA_IMAGES,
- Manifest.permission.MANAGE_EXTERNAL_STORAGE
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_MEDIA_IMAGES
)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
arrayOf(
@@ -26,8 +28,10 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.MANAGE_EXTERNAL_STORAGE
)
} else {
@@ -38,8 +42,8 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
index dc0d996..be2c225 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
@@ -1,7 +1,11 @@
package com.casic.br.operationsite.view
import android.content.Context
+import android.graphics.Color
+import android.media.MediaScannerConnection
+import android.net.Uri
import android.os.Bundle
+import android.provider.MediaStore
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -14,11 +18,18 @@
import com.casic.br.operationsite.extensions.initImmersionBar
import com.luck.picture.lib.photoview.PhotoView
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.FileDownloadManager
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import java.io.File
class BigImageActivity : KotlinBaseActivity() {
+ private val kTag = "BigImageActivity"
+
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
@@ -38,7 +49,7 @@
}
override fun initEvent() {
- val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
+ val index = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY)
if (urls == null || urls.size == 0) {
return
@@ -74,17 +85,85 @@
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view =
- LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false)
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(data[position]).into(photoView)
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView = view.findViewById(R.id.photoView)
+
+ val path = data[position]
+ /**
+ * DisclosureActivity -> http://111.198.10.15:22006/static/2024-06/b237b332b00c4ce99585c61f860f30b7.jpeg
+ * EnvironmentActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628110803.jpg
+ * SuppliesActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111403.jpg
+ * GuardiansActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111506.jpg
+ * */
+
+ Glide.with(context).load(path).into(photoView)
photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
container.addView(view)
//点击大图取消预览
photoView.setOnClickListener { finish() }
+
+ photoView.setOnLongClickListener {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitle(arrayListOf("保存"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> updateSystemAlbum(path)
+ }
+ }
+
+
+ }).build().show()
+ true
+ }
return view
}
+ private fun updateSystemAlbum(imagePath: String) {
+ if (imagePath.startsWith("http") || imagePath.startsWith("https")) {
+ //需要将图片保存在本地
+ FileDownloadManager.Builder().setDownloadFileSource(imagePath)
+ .setFileSuffix("jpg").setFileSaveDirectory(createDownloadFileDir())
+ .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener {
+ override fun onDownloadEnd(file: File) {
+ scanFile(file)
+ }
+
+ override fun onFailure(throwable: Throwable) {
+
+ }
+
+ override fun onProgressChanged(progress: Int) {
+
+ }
+ }).build().start()
+ } else {
+ scanFile(File(imagePath))
+ }
+ }
+
+ private fun scanFile(file: File) {
+ MediaStore.Images.Media.insertImage(
+ contentResolver,
+ file.absolutePath, file.name, resources.getString(R.string.app_name)
+ )
+
+ MediaScannerConnection.scanFile(context, arrayOf(file.absolutePath), null,
+ object : MediaScannerConnection.MediaScannerConnectionClient {
+ override fun onMediaScannerConnected() {
+
+ }
+
+ override fun onScanCompleted(path: String?, uri: Uri?) {
+ "保存到相册成功".show(context)
+ }
+ })
+ }
+
override fun destroyItem(container: ViewGroup, position: Int, any: Any) {
container.removeView(any as View)
}
diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
index 9ffb5f9..e6812f7 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
@@ -72,7 +72,7 @@
val bitmapArray = Base64.decode(base64, Base64.DEFAULT)
val bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.size)
binding.blowerImageView.setImageBitmap(bitmap)
- imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.png"
+ imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.jpg"
bitmap.saveImage(imagePath)
} catch (e: Exception) {
e.printStackTrace()
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed8b745..362cb59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,7 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index 7d024b9..30fe8b7 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -13,10 +13,12 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
- Manifest.permission.READ_MEDIA_IMAGES,
- Manifest.permission.MANAGE_EXTERNAL_STORAGE
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_MEDIA_IMAGES
)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
arrayOf(
@@ -26,8 +28,10 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.MANAGE_EXTERNAL_STORAGE
)
} else {
@@ -38,8 +42,8 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
index dc0d996..be2c225 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
@@ -1,7 +1,11 @@
package com.casic.br.operationsite.view
import android.content.Context
+import android.graphics.Color
+import android.media.MediaScannerConnection
+import android.net.Uri
import android.os.Bundle
+import android.provider.MediaStore
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -14,11 +18,18 @@
import com.casic.br.operationsite.extensions.initImmersionBar
import com.luck.picture.lib.photoview.PhotoView
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.FileDownloadManager
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import java.io.File
class BigImageActivity : KotlinBaseActivity() {
+ private val kTag = "BigImageActivity"
+
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
@@ -38,7 +49,7 @@
}
override fun initEvent() {
- val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
+ val index = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY)
if (urls == null || urls.size == 0) {
return
@@ -74,17 +85,85 @@
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view =
- LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false)
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(data[position]).into(photoView)
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView = view.findViewById(R.id.photoView)
+
+ val path = data[position]
+ /**
+ * DisclosureActivity -> http://111.198.10.15:22006/static/2024-06/b237b332b00c4ce99585c61f860f30b7.jpeg
+ * EnvironmentActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628110803.jpg
+ * SuppliesActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111403.jpg
+ * GuardiansActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111506.jpg
+ * */
+
+ Glide.with(context).load(path).into(photoView)
photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
container.addView(view)
//点击大图取消预览
photoView.setOnClickListener { finish() }
+
+ photoView.setOnLongClickListener {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitle(arrayListOf("保存"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> updateSystemAlbum(path)
+ }
+ }
+
+
+ }).build().show()
+ true
+ }
return view
}
+ private fun updateSystemAlbum(imagePath: String) {
+ if (imagePath.startsWith("http") || imagePath.startsWith("https")) {
+ //需要将图片保存在本地
+ FileDownloadManager.Builder().setDownloadFileSource(imagePath)
+ .setFileSuffix("jpg").setFileSaveDirectory(createDownloadFileDir())
+ .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener {
+ override fun onDownloadEnd(file: File) {
+ scanFile(file)
+ }
+
+ override fun onFailure(throwable: Throwable) {
+
+ }
+
+ override fun onProgressChanged(progress: Int) {
+
+ }
+ }).build().start()
+ } else {
+ scanFile(File(imagePath))
+ }
+ }
+
+ private fun scanFile(file: File) {
+ MediaStore.Images.Media.insertImage(
+ contentResolver,
+ file.absolutePath, file.name, resources.getString(R.string.app_name)
+ )
+
+ MediaScannerConnection.scanFile(context, arrayOf(file.absolutePath), null,
+ object : MediaScannerConnection.MediaScannerConnectionClient {
+ override fun onMediaScannerConnected() {
+
+ }
+
+ override fun onScanCompleted(path: String?, uri: Uri?) {
+ "保存到相册成功".show(context)
+ }
+ })
+ }
+
override fun destroyItem(container: ViewGroup, position: Int, any: Any) {
container.removeView(any as View)
}
diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
index 9ffb5f9..e6812f7 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
@@ -72,7 +72,7 @@
val bitmapArray = Base64.decode(base64, Base64.DEFAULT)
val bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.size)
binding.blowerImageView.setImageBitmap(bitmap)
- imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.png"
+ imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.jpg"
bitmap.saveImage(imagePath)
} catch (e: Exception) {
e.printStackTrace()
diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt
index 3c823b2..2b7f2bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt
@@ -184,7 +184,7 @@
Log.d(kTag, "heartRate, bloodOxygen, co, gas, h2s, o2")
Log.d(kTag, "$heartRate, $bloodOxygen, $co, $gas, $h2s, $o2")
- if (gas.toFloat().toInt() >= 20
+ if (gas.toFloat().toInt() >= 5
&& SocketManager.get.nettyClient.connectStatus
) {
Log.d(kTag, "initOnCreate: 发送甲烷浓度超限报警")
@@ -222,7 +222,7 @@
val base64 = (msg.obj as String).split(":")[1]
val bitmapArray = Base64.decode(base64, Base64.DEFAULT)
val bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.size)
- val imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.png"
+ val imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.jpg"
Log.d(kTag, "imagePath: $imagePath")
bitmap.saveImage(imagePath)
if (recyclerViewImages.size == 3) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ed8b745..362cb59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,7 @@
-
+
diff --git a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
index 7d024b9..30fe8b7 100644
--- a/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
+++ b/app/src/main/java/com/casic/br/operationsite/utils/LocaleConstant.kt
@@ -13,10 +13,12 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
- Manifest.permission.READ_MEDIA_IMAGES,
- Manifest.permission.MANAGE_EXTERNAL_STORAGE
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_MEDIA_IMAGES
)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
arrayOf(
@@ -26,8 +28,10 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.MANAGE_EXTERNAL_STORAGE
)
} else {
@@ -38,8 +42,8 @@
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.CHANGE_NETWORK_STATE,
Manifest.permission.WRITE_SETTINGS,
- Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
+ Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
diff --git a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
index dc0d996..be2c225 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/BigImageActivity.kt
@@ -1,7 +1,11 @@
package com.casic.br.operationsite.view
import android.content.Context
+import android.graphics.Color
+import android.media.MediaScannerConnection
+import android.net.Uri
import android.os.Bundle
+import android.provider.MediaStore
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -14,11 +18,18 @@
import com.casic.br.operationsite.extensions.initImmersionBar
import com.luck.picture.lib.photoview.PhotoView
import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.show
import com.pengxh.kt.lite.utils.ActivityStackManager
import com.pengxh.kt.lite.utils.Constant
+import com.pengxh.kt.lite.utils.FileDownloadManager
+import com.pengxh.kt.lite.widget.dialog.BottomActionSheet
+import java.io.File
class BigImageActivity : KotlinBaseActivity() {
+ private val kTag = "BigImageActivity"
+
override fun initViewBinding(): ActivityBigImageBinding {
return ActivityBigImageBinding.inflate(layoutInflater)
}
@@ -38,7 +49,7 @@
}
override fun initEvent() {
- val index: Int = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
+ val index = intent.getIntExtra(Constant.BIG_IMAGE_INTENT_INDEX_KEY, 0)
val urls = intent.getStringArrayListExtra(Constant.BIG_IMAGE_INTENT_DATA_KEY)
if (urls == null || urls.size == 0) {
return
@@ -74,17 +85,85 @@
}
override fun instantiateItem(container: ViewGroup, position: Int): Any {
- val view =
- LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false)
- val photoView: PhotoView = view.findViewById(R.id.photoView)
- Glide.with(context).load(data[position]).into(photoView)
+ val view = LayoutInflater.from(context).inflate(
+ R.layout.item_big_picture, container, false
+ )
+ val photoView = view.findViewById(R.id.photoView)
+
+ val path = data[position]
+ /**
+ * DisclosureActivity -> http://111.198.10.15:22006/static/2024-06/b237b332b00c4ce99585c61f860f30b7.jpeg
+ * EnvironmentActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628110803.jpg
+ * SuppliesActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111403.jpg
+ * GuardiansActivity -> //storage/emulated/0/Android/data/com.casic.br.operationsite.test/files/Pictures/IMG20240628111506.jpg
+ * */
+
+ Glide.with(context).load(path).into(photoView)
photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE
container.addView(view)
//点击大图取消预览
photoView.setOnClickListener { finish() }
+
+ photoView.setOnLongClickListener {
+ BottomActionSheet.Builder()
+ .setContext(context)
+ .setActionItemTitle(arrayListOf("保存"))
+ .setItemTextColor(Color.BLUE)
+ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
+ override fun onActionItemClick(position: Int) {
+ when (position) {
+ 0 -> updateSystemAlbum(path)
+ }
+ }
+
+
+ }).build().show()
+ true
+ }
return view
}
+ private fun updateSystemAlbum(imagePath: String) {
+ if (imagePath.startsWith("http") || imagePath.startsWith("https")) {
+ //需要将图片保存在本地
+ FileDownloadManager.Builder().setDownloadFileSource(imagePath)
+ .setFileSuffix("jpg").setFileSaveDirectory(createDownloadFileDir())
+ .setOnFileDownloadListener(object : FileDownloadManager.OnFileDownloadListener {
+ override fun onDownloadEnd(file: File) {
+ scanFile(file)
+ }
+
+ override fun onFailure(throwable: Throwable) {
+
+ }
+
+ override fun onProgressChanged(progress: Int) {
+
+ }
+ }).build().start()
+ } else {
+ scanFile(File(imagePath))
+ }
+ }
+
+ private fun scanFile(file: File) {
+ MediaStore.Images.Media.insertImage(
+ contentResolver,
+ file.absolutePath, file.name, resources.getString(R.string.app_name)
+ )
+
+ MediaScannerConnection.scanFile(context, arrayOf(file.absolutePath), null,
+ object : MediaScannerConnection.MediaScannerConnectionClient {
+ override fun onMediaScannerConnected() {
+
+ }
+
+ override fun onScanCompleted(path: String?, uri: Uri?) {
+ "保存到相册成功".show(context)
+ }
+ })
+ }
+
override fun destroyItem(container: ViewGroup, position: Int, any: Any) {
container.removeView(any as View)
}
diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
index 9ffb5f9..e6812f7 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/check/EnvironmentActivity.kt
@@ -72,7 +72,7 @@
val bitmapArray = Base64.decode(base64, Base64.DEFAULT)
val bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.size)
binding.blowerImageView.setImageBitmap(bitmap)
- imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.png"
+ imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.jpg"
bitmap.saveImage(imagePath)
} catch (e: Exception) {
e.printStackTrace()
diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt
index 3c823b2..2b7f2bb 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/check/GuardiansActivity.kt
@@ -184,7 +184,7 @@
Log.d(kTag, "heartRate, bloodOxygen, co, gas, h2s, o2")
Log.d(kTag, "$heartRate, $bloodOxygen, $co, $gas, $h2s, $o2")
- if (gas.toFloat().toInt() >= 20
+ if (gas.toFloat().toInt() >= 5
&& SocketManager.get.nettyClient.connectStatus
) {
Log.d(kTag, "initOnCreate: 发送甲烷浓度超限报警")
@@ -222,7 +222,7 @@
val base64 = (msg.obj as String).split(":")[1]
val bitmapArray = Base64.decode(base64, Base64.DEFAULT)
val bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.size)
- val imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.png"
+ val imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.jpg"
Log.d(kTag, "imagePath: $imagePath")
bitmap.saveImage(imagePath)
if (recyclerViewImages.size == 3) {
diff --git a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt
index 70a741f..0aad7ad 100644
--- a/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt
+++ b/app/src/main/java/com/casic/br/operationsite/view/check/SuppliesActivity.kt
@@ -218,7 +218,7 @@
base64Array.add(base64)
val bitmapArray = Base64.decode(base64, Base64.DEFAULT)
val bitmap = BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.size)
- val imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.png"
+ val imagePath = "/${createImageFileDir()}/IMG${timeFormat.format(Date())}.jpg"
Log.d(kTag, "imagePath: $imagePath")
bitmap.saveImage(imagePath)
recyclerViewImages.add(imagePath)