This commit is contained in:
2025-12-19 11:10:56 +08:00
parent ab3109f36a
commit af56fb4aeb
9 changed files with 71 additions and 57 deletions
@@ -69,39 +69,43 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
}
open fun registerDataChange() {
lifecycleScope.launch {
viewModel.showLoading.collect {
Timber.d("registerDataChange 用户 showLoading = $it")
if (it) {
showWaitingDialog("")
} else {
hideWaitingDialog()
}
}
}
// lifecycleScope.launch {
// viewModel.showLoading.collect {
// Timber.d("registerDataChange 用户 showLoading = $it")
// if (it) {
// showWaitingDialog("")
// } else {
// hideWaitingDialog()
// }
// }
// }
}
/**
* 显示等待提示框
*/
fun showWaitingDialog(tip: String?): Dialog? {
hideWaitingDialog()
val view = View.inflate(this, R.layout.dialog_waiting, null)
if (!TextUtils.isEmpty(tip)) (view.findViewById<View?>(R.id.tvTip) as TextView).text = tip
mDialogWaiting = CustomDialog(this, view, R.style.MyDialog).apply {
setCancelable(true)
setCanceledOnTouchOutside(true)
show()
fun showWaitingDialog(tip: String?){
runOnUiThread {
hideWaitingDialog()
val view = View.inflate(this, R.layout.dialog_waiting, null)
if (!TextUtils.isEmpty(tip)) (view.findViewById<View?>(R.id.tvTip) as TextView).text =
tip
mDialogWaiting = CustomDialog(this, view, R.style.MyDialog).apply {
setCancelable(true)
setCanceledOnTouchOutside(true)
show()
}
}
return mDialogWaiting
}
/**
* 隐藏等待提示框
*/
fun hideWaitingDialog() {
mDialogWaiting?.dismiss()
mDialogWaiting = null
runOnUiThread {
mDialogWaiting?.dismiss()
mDialogWaiting = null
}
}
fun showWaitingDialog2(tip: String?) {
@@ -103,6 +103,7 @@ class CollectFragment : BaseFragment<FragmentCollectBinding>() {
val index = foodCollectionList.indexOfFirst { it.imageFile == null }
if (index == -1) {
ToastUtils.showToast("每次只允许保存${MAX_COUNT}条数据")
settingActivity?.hideWaitingDialog()
rerurn@cameraCallback
}
ImageUtil.uriToBitmap(requireActivity(), uri)?.let { bitmap ->
@@ -117,6 +118,7 @@ class CollectFragment : BaseFragment<FragmentCollectBinding>() {
} catch (e: Exception) {
e.printStackTrace()
ToastUtils.showToast("操作失败")
settingActivity?.hideWaitingDialog()
return@let
}
val file = BitmapSaver.saveToAppFilesDir(
@@ -134,10 +136,12 @@ class CollectFragment : BaseFragment<FragmentCollectBinding>() {
if (bitmap.isRecycled.not()) {
bitmap.recycle()
}
settingActivity?.hideWaitingDialog()
}
} catch (e: Exception) {
e.printStackTrace()
ToastUtils.showToast("程序异常")
settingActivity?.hideWaitingDialog()
ToastUtils.showToast("程序异常${e.message}")
}
}
@@ -148,7 +152,11 @@ class CollectFragment : BaseFragment<FragmentCollectBinding>() {
ToastUtils.showToast("每次只允许保存${MAX_COUNT}条数据")
return
}
cameraUtils.takePhoto(cameraCallback)
settingActivity?.showWaitingDialog("拍照中……")
cameraUtils.takePhoto(cameraCallback) { errMsg ->
ToastUtils.showToast(errMsg)
settingActivity?.hideWaitingDialog()
}
}
override fun initialize() {
@@ -11,16 +11,18 @@ class CameraUtils(private var activity: ComponentActivity) {
private var cameraController: LifecycleCameraController? = null
private var photoCaptureHelper: PhotoCaptureHelper? = null
private var failCallback: ((msg: String) -> Unit)? = null
// private var isCameraReady = false
fun takePhoto(callback: (Uri) -> Unit) {
fun takePhoto(succCallback: (Uri) -> Unit, failCallback: (msg: String) -> Unit = { }) {
this.failCallback = failCallback
cameraController?.let {
if (photoCaptureHelper == null) {
initCaptureHelper()
}
}
photoCaptureHelper?.let {
it.addSuccessCallback(callback)
it.addSuccessCallback(succCallback)
it.bindCameraCallback {
bind()
}
@@ -35,6 +37,7 @@ class CameraUtils(private var activity: ComponentActivity) {
onSuccess = {},
onError = { msg ->
//toast(msg)
failCallback?.invoke(msg)
}
)
}
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp" />
<corners android:radius="8dp" />
<solid android:color="@color/black" />
</shape>
+22 -28
View File
@@ -1,32 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/dialog_waiting"
android:gravity="center_vertical"
android:paddingHorizontal="20dp"
android:paddingVertical="15dp">
<RelativeLayout
<ProgressBar
android:layout_width="39dp"
android:layout_height="39dp"
android:indeterminateTint="@color/teal_200"
android:indeterminateTintMode="src_atop" />
<TextView
android:id="@+id/tvTip"
android:layout_width="wrap_content"
android:layout_height="80dp"
android:paddingHorizontal="20dp"
android:background="@drawable/dialog_waiting">
android:layout_height="wrap_content"
android:text="请稍后……"
android:gravity="center_vertical"
android:layout_marginStart="10dp"
android:textColor="@color/white"
android:textSize="26sp" />
<TextView
android:id="@+id/tvTip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textColor="@color/white"
android:text="请稍后……"
android:textSize="22sp" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginRight="30dp"
android:layout_toLeftOf="@id/tvTip"
android:indeterminateTint="@color/teal_200"
android:indeterminateTintMode="src_atop" />
</RelativeLayout>
</FrameLayout>
</LinearLayout>
@@ -134,7 +134,7 @@
android:layout_marginTop="55dp"
android:text="请正视屏幕进行面部识别..."
android:textColor="#ff5e7585"
android:textSize="24sp"
android:textSize="22sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
@@ -76,7 +76,7 @@
android:layout_marginBottom="56dp"
android:text="请正视屏幕进行面部识别..."
android:textColor="@color/white"
android:textSize="24sp"
android:textSize="22sp"
android:visibility="gone" />
<ImageView
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@@ -32,6 +33,9 @@ public class ToastUtils {
* @param text the text
*/
public static void showToast(String text) {
if (TextUtils.isEmpty(text)) {
return;
}
runOnMainThread(()->{
Context context = App.getContext();
if (toast == null) {
@@ -89,7 +89,8 @@ public class ConfigUtil {
*/
// private static final String DEFAULT_PREVIEW_SIZE = "1280x720";
// private static final String DEFAULT_PREVIEW_SIZE = "1080x720";
private static final String DEFAULT_PREVIEW_SIZE = "720x1080";
// private static final String DEFAULT_PREVIEW_SIZE = "720x1080";
private static final String DEFAULT_PREVIEW_SIZE = "720x1280";
// private static final String DEFAULT_PREVIEW_SIZE = "608x456";
// private static final String DEFAULT_PREVIEW_SIZE = "1024x768";
// private static final String DEFAULT_PREVIEW_SIZE = "800x600";