diff --git a/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt new file mode 100644 index 0000000..c374978 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt @@ -0,0 +1,15 @@ +package com.casic.smarttube.callback + +import java.io.File + +interface OnImageCompressListener { + /** + * Fired when a compression returns successfully, override to handle in your own code + */ + fun onSuccess(file: File) + + /** + * Fired when a compression fails to complete, override to handle in your own code + */ + fun onError(e: Throwable) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt new file mode 100644 index 0000000..c374978 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt @@ -0,0 +1,15 @@ +package com.casic.smarttube.callback + +import java.io.File + +interface OnImageCompressListener { + /** + * Fired when a compression returns successfully, override to handle in your own code + */ + fun onSuccess(file: File) + + /** + * Fired when a compression fails to complete, override to handle in your own code + */ + fun onError(e: Throwable) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 0305fad..113ef03 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -3,14 +3,19 @@ import android.content.Context import android.graphics.Color import com.casic.smarttube.R +import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import top.zibin.luban.Luban +import top.zibin.luban.OnCompressListener +import java.io.File import java.text.SimpleDateFormat import java.util.* @@ -95,4 +100,27 @@ val timestamp = this.dateToTimestamp() val dateFormat = SimpleDateFormat("MM-dd HH:mm", Locale.CHINA) return dateFormat.format(Date(timestamp)) +} + +fun String.compressImage(context: Context, listener: OnImageCompressListener) { + Luban.with(context) + .load(this) + .ignoreBy(100) + .setTargetDir(context.createCompressImageDir().toString()) + .filter { + !(it.isBlank() || it.lowercase(Locale.getDefault()).endsWith(".gif")) + } + .setCompressListener(object : OnCompressListener { + override fun onStart() { + + } + + override fun onSuccess(file: File) { + listener.onSuccess(file) + } + + override fun onError(e: Throwable) { + listener.onError(e) + } + }).launch() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt new file mode 100644 index 0000000..c374978 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt @@ -0,0 +1,15 @@ +package com.casic.smarttube.callback + +import java.io.File + +interface OnImageCompressListener { + /** + * Fired when a compression returns successfully, override to handle in your own code + */ + fun onSuccess(file: File) + + /** + * Fired when a compression fails to complete, override to handle in your own code + */ + fun onError(e: Throwable) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 0305fad..113ef03 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -3,14 +3,19 @@ import android.content.Context import android.graphics.Color import com.casic.smarttube.R +import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import top.zibin.luban.Luban +import top.zibin.luban.OnCompressListener +import java.io.File import java.text.SimpleDateFormat import java.util.* @@ -95,4 +100,27 @@ val timestamp = this.dateToTimestamp() val dateFormat = SimpleDateFormat("MM-dd HH:mm", Locale.CHINA) return dateFormat.format(Date(timestamp)) +} + +fun String.compressImage(context: Context, listener: OnImageCompressListener) { + Luban.with(context) + .load(this) + .ignoreBy(100) + .setTargetDir(context.createCompressImageDir().toString()) + .filter { + !(it.isBlank() || it.lowercase(Locale.getDefault()).endsWith(".gif")) + } + .setCompressListener(object : OnCompressListener { + override fun onStart() { + + } + + override fun onSuccess(file: File) { + listener.onSuccess(file) + } + + override fun onError(e: Throwable) { + listener.onError(e) + } + }).launch() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 593993c..11673fe 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -6,12 +6,15 @@ import android.os.Handler import android.text.Editable import android.text.TextWatcher +import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider import cn.bertsir.zbar.QrManager import com.amap.api.location.AMapLocation import com.casic.smarttube.R +import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.extensions.combineImagePath +import com.casic.smarttube.extensions.compressImage import com.casic.smarttube.utils.DialogHelper import com.casic.smarttube.utils.GlideLoadEngine import com.casic.smarttube.utils.LocationHelper @@ -31,6 +34,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_add_device.* import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File class AddDeviceActivity : KotlinBaseActivity() { @@ -299,16 +303,16 @@ // Log.d(kTag, "绝对路径:" + result.realPath) // Log.d(kTag, "原图路径:" + result.originalPath) // Log.d(kTag, "沙盒路径:" + result.sandboxPath) -// result.realPath.compressImage(this, object : OnImageCompressListener { -// override fun onSuccess(file: File) { -// Log.d(kTag, "onSuccess: " + file.absolutePath) -// //上传图片 -// uploadImageViewModel.uploadImage(file) -// } -// -// override fun onError(e: Throwable) { -// e.printStackTrace() -// } -// }) + result.realPath.compressImage(this, object : OnImageCompressListener { + override fun onSuccess(file: File) { + Log.d(kTag, "onSuccess: " + file.absolutePath) + //上传图片 + uploadImageViewModel.uploadImage(file) + } + + override fun onError(e: Throwable) { + e.printStackTrace() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt new file mode 100644 index 0000000..c374978 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/callback/OnImageCompressListener.kt @@ -0,0 +1,15 @@ +package com.casic.smarttube.callback + +import java.io.File + +interface OnImageCompressListener { + /** + * Fired when a compression returns successfully, override to handle in your own code + */ + fun onSuccess(file: File) + + /** + * Fired when a compression fails to complete, override to handle in your own code + */ + fun onError(e: Throwable) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/extensions/String.kt b/app/src/main/java/com/casic/smarttube/extensions/String.kt index 0305fad..113ef03 100644 --- a/app/src/main/java/com/casic/smarttube/extensions/String.kt +++ b/app/src/main/java/com/casic/smarttube/extensions/String.kt @@ -3,14 +3,19 @@ import android.content.Context import android.graphics.Color import com.casic.smarttube.R +import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.model.ErrorMessageModel import com.casic.smarttube.utils.LocaleConstant import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.extensions.dateToTimestamp import com.pengxh.kt.lite.utils.SaveKeyValues import org.json.JSONObject +import top.zibin.luban.Luban +import top.zibin.luban.OnCompressListener +import java.io.File import java.text.SimpleDateFormat import java.util.* @@ -95,4 +100,27 @@ val timestamp = this.dateToTimestamp() val dateFormat = SimpleDateFormat("MM-dd HH:mm", Locale.CHINA) return dateFormat.format(Date(timestamp)) +} + +fun String.compressImage(context: Context, listener: OnImageCompressListener) { + Luban.with(context) + .load(this) + .ignoreBy(100) + .setTargetDir(context.createCompressImageDir().toString()) + .filter { + !(it.isBlank() || it.lowercase(Locale.getDefault()).endsWith(".gif")) + } + .setCompressListener(object : OnCompressListener { + override fun onStart() { + + } + + override fun onSuccess(file: File) { + listener.onSuccess(file) + } + + override fun onError(e: Throwable) { + listener.onError(e) + } + }).launch() } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 593993c..11673fe 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -6,12 +6,15 @@ import android.os.Handler import android.text.Editable import android.text.TextWatcher +import android.util.Log import android.view.View import androidx.lifecycle.ViewModelProvider import cn.bertsir.zbar.QrManager import com.amap.api.location.AMapLocation import com.casic.smarttube.R +import com.casic.smarttube.callback.OnImageCompressListener import com.casic.smarttube.extensions.combineImagePath +import com.casic.smarttube.extensions.compressImage import com.casic.smarttube.utils.DialogHelper import com.casic.smarttube.utils.GlideLoadEngine import com.casic.smarttube.utils.LocationHelper @@ -31,6 +34,7 @@ import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_add_device.* import kotlinx.android.synthetic.main.include_base_title.* +import java.io.File class AddDeviceActivity : KotlinBaseActivity() { @@ -299,16 +303,16 @@ // Log.d(kTag, "绝对路径:" + result.realPath) // Log.d(kTag, "原图路径:" + result.originalPath) // Log.d(kTag, "沙盒路径:" + result.sandboxPath) -// result.realPath.compressImage(this, object : OnImageCompressListener { -// override fun onSuccess(file: File) { -// Log.d(kTag, "onSuccess: " + file.absolutePath) -// //上传图片 -// uploadImageViewModel.uploadImage(file) -// } -// -// override fun onError(e: Throwable) { -// e.printStackTrace() -// } -// }) + result.realPath.compressImage(this, object : OnImageCompressListener { + override fun onSuccess(file: File) { + Log.d(kTag, "onSuccess: " + file.absolutePath) + //上传图片 + uploadImageViewModel.uploadImage(file) + } + + override fun onError(e: Throwable) { + e.printStackTrace() + } + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/vm/UploadImageViewModel.kt b/app/src/main/java/com/casic/smarttube/vm/UploadImageViewModel.kt index 49d1775..badeda3 100644 --- a/app/src/main/java/com/casic/smarttube/vm/UploadImageViewModel.kt +++ b/app/src/main/java/com/casic/smarttube/vm/UploadImageViewModel.kt @@ -20,6 +20,7 @@ val resultModel = MutableLiveData() fun uploadImage(image: File) = launch({ + loadState.value = LoadState.Loading val response = RetrofitServiceManager.uploadImage(image) val responseCode = response.separateResponseCode() if (responseCode == 200) {