diff --git a/.gradle/8.13/executionHistory/executionHistory.bin b/.gradle/8.13/executionHistory/executionHistory.bin index d721741..371388b 100644 Binary files a/.gradle/8.13/executionHistory/executionHistory.bin and b/.gradle/8.13/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.13/executionHistory/executionHistory.lock b/.gradle/8.13/executionHistory/executionHistory.lock index 785e621..bb197ff 100644 Binary files a/.gradle/8.13/executionHistory/executionHistory.lock and b/.gradle/8.13/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.13/fileHashes/fileHashes.bin b/.gradle/8.13/fileHashes/fileHashes.bin index 8c433b7..e434c2a 100644 Binary files a/.gradle/8.13/fileHashes/fileHashes.bin and b/.gradle/8.13/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.13/fileHashes/fileHashes.lock b/.gradle/8.13/fileHashes/fileHashes.lock index 54a9ba9..94d2689 100644 Binary files a/.gradle/8.13/fileHashes/fileHashes.lock and b/.gradle/8.13/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.13/fileHashes/resourceHashesCache.bin b/.gradle/8.13/fileHashes/resourceHashesCache.bin index 964f711..5bf0aab 100644 Binary files a/.gradle/8.13/fileHashes/resourceHashesCache.bin and b/.gradle/8.13/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 3b03661..e6b902e 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 157400b..32de4c7 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/app/build.gradle b/app/build.gradle index 75e9a97..5bc9936 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -84,6 +84,7 @@ dependencies { implementation libs.androidx.compose.material3 implementation libs.material implementation libs.appcompat + implementation libs.luban testImplementation libs.junit androidTestImplementation libs.androidx.junit androidTestImplementation libs.androidx.espresso.core @@ -159,4 +160,4 @@ dependencies { //圆形视图库 implementation 'com.makeramen:roundedimageview:2.3.0' -} \ No newline at end of file +} diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt index 85434fe..b0b7d3a 100644 --- a/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt +++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/customer/CustomerActivity.kt @@ -12,11 +12,8 @@ import android.os.Handler import android.os.Looper import android.provider.MediaStore import android.text.Editable -import android.text.Spannable -import android.text.SpannableString import android.text.TextUtils import android.text.TextWatcher -import android.text.style.ImageSpan import android.view.KeyEvent import android.view.LayoutInflater import android.view.View @@ -46,6 +43,7 @@ import com.ck.ckcollar.app.ui.base.CKBaseActivity import com.ck.ckcollar.app.ui.dialog.CKAlertDialog import com.ck.ckcollar.app.utils.CKUtils import com.ck.ckcollar.app.utils.Const +import com.ck.ckcollar.app.utils.LubanCompressUtil import com.ck.ckcollar.app.utils.networkone.ICallback import com.ck.ckcollar.app.utils.networkone.TTHttpClient import com.ck.ckcollar.app.utils.networkone.model.TTRequestData @@ -518,32 +516,22 @@ class CustomerActivity : CKBaseActivity() { var model = Gson().fromJson(data, UploadModel::class.java) url = model.urls + handler.post { + sendMessage(UUID.randomUUID().toString(), "", false) + } } override fun onFailed(code: String, msg: String) { hiddenProgeassDialog() + lock = true + path = "" + url = "" toast(msg) } }) } - fun addImage(path: String) { - try { - var bitmap = TTUtils.getBitmap(path, 300, 300) - var imageSpan = ImageSpan(bitmap!!); - var spannableString = SpannableString("$$$$$"); - spannableString.setSpan( - imageSpan, 0, 5, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE - ); - binding.editMessage.text?.insert(0, spannableString); - } catch (e: Exception) { - e.printStackTrace(); - } - - } - fun getList() { TTHttpClient.get(this, "会话消息列表", TTRequestParam(), object : ICallback { override fun onSuccess(data: String) { @@ -573,17 +561,40 @@ class CustomerActivity : CKBaseActivity() { if (requestCode == 55 && resultCode == RESULT_OK) { path = PreferencesUtils.getString(this@CustomerActivity, Const.IMAGE_PATH, "")!! - - addImage(path!!) - uploadImage() + sendSelectedImage() } else if (requestCode == 56 && resultCode == RESULT_OK) { path = TTUtils.getImageUrl(this, data!!.getData()); - addImage(path) - uploadImage() + sendSelectedImage() } } + private fun sendSelectedImage() { + if (TextUtils.isEmpty(path)) return + + LubanCompressUtil.getCompressFile( + this, + File(path), + object : LubanCompressUtil.CompressCallback { + override fun success(file: File) { + if (isFinishing || isDestroyed) return + path = file.absolutePath + lock = false + binding.contentBottom.visibility = View.GONE + binding.editMessage.setText("") + uploadImage() + } + + override fun fail(failMsg: String) { + if (isFinishing || isDestroyed) return + lock = true + path = "" + toast(failMsg) + } + } + ) + } + override fun onDestroy() { super.onDestroy() diff --git a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt index fb8094a..bf40281 100644 --- a/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt +++ b/app/src/main/java/com/ck/ckcollar/app/ui/act/home/fragment/HealthFragment.kt @@ -101,7 +101,19 @@ class HealthFragment: CKBaseFragment() { binding.textDate.text = getString(R.string.pet_advisor2) - binding.textDate2.text = "("+customerStatusModel.serviceStartTime +","+customerStatusModel.serviceEndTime+")" + val serviceTimes = listOfNotNull( + customerStatusModel.serviceStartTime?.takeIf { it.isNotBlank() }, + customerStatusModel.serviceEndTime?.takeIf { it.isNotBlank() } + ) + binding.textDate2.text = when (serviceTimes.size) { + 0 -> getString(R.string.pet_advisor_time_default) + 1 -> serviceTimes.first() + else -> getString( + R.string.pet_advisor_time_format, + serviceTimes[0], + serviceTimes[1] + ) + } } override fun onFailed(code: String, msg: String) { @@ -189,4 +201,4 @@ class HealthFragment: CKBaseFragment() { } } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ba60dd4..2b84902 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -36,7 +36,7 @@ diff --git a/app/src/main/res/layout/fragment_health.xml b/app/src/main/res/layout/fragment_health.xml index 3c6d66e..02c3b3e 100644 --- a/app/src/main/res/layout/fragment_health.xml +++ b/app/src/main/res/layout/fragment_health.xml @@ -17,7 +17,8 @@ > + android:layout_height="wrap_content"/> + @@ -33,7 +34,7 @@ android:layout_height="wrap_content" android:scaleType="fitXY" android:src="@mipmap/image_health_top" - > + /> - + android:layout_height="96dp" + android:layout_marginTop="8dp"> + + + android:paddingRight="96dp" + android:orientation="vertical"> + android:gravity="center_vertical" + android:orientation="horizontal"> + + android:text="@string/pet_advisor2" + android:textStyle="bold" /> + android:textSize="12sp" + app:autoSizeMaxTextSize="12sp" + app:autoSizeMinTextSize="9sp" + app:autoSizeStepGranularity="1sp" + app:autoSizeTextType="uniform" /> + android:text="@string/pet_advisor_desc" /> - + android:id="@+id/imageCustomerService" + android:layout_width="75dp" + android:layout_height="75dp" + android:layout_gravity="top|end" + android:layout_marginEnd="15dp" + android:scaleType="fitCenter" + android:src="@mipmap/image_health_kf"/> + + /> + /> + /> + android:layout_height="0dp"/> + /> + /> + /> @@ -207,7 +227,7 @@ android:textColor="@color/textColor" android:text="@string/pet_knowledge_popularization" android:layout_marginTop="30dp" - > + /> + /> @@ -225,4 +245,4 @@ - \ 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 a4390df..9f041d6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -122,6 +122,8 @@ 宠物顾问(早 9:00-晚 21:00) 宠物顾问 + 08:00-12:00/14:00-21:00 + %1$s/%2$s 1分钟快速响应,贴心守护爱宠健康 AI文字问诊 通用 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b5dbf21..5200233 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,6 +10,7 @@ activityCompose = "1.8.0" composeBom = "2024.09.00" material = "1.9.0" +luban = "1.1.8" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -27,6 +28,7 @@ androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui- androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } +luban = { group = "com.github.Curzibn", name = "Luban", version.ref = "luban" } appcompat = { group = "androidx.appcompat", name = "appcompat", version = "1.6.1" } [plugins]