From 1a45fde85863b35ca10374460e79f12f0df52b78 Mon Sep 17 00:00:00 2001 From: xiajiid Date: Sun, 8 Feb 2026 22:50:56 +0800 Subject: [PATCH] Fix photo error reporting and add detailed logging --- .../com/example/app/SimpleCameraActivity.kt | 54 ++++++++++++++++--- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/example/app/SimpleCameraActivity.kt b/app/src/main/java/com/example/app/SimpleCameraActivity.kt index 2251ef3..601800a 100644 --- a/app/src/main/java/com/example/app/SimpleCameraActivity.kt +++ b/app/src/main/java/com/example/app/SimpleCameraActivity.kt @@ -42,6 +42,11 @@ class SimpleCameraActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_simple_camera) + + // 记录应用启动信息 + Log.d(TAG, "SimpleCameraActivity 启动") + Log.d(TAG, "Android SDK: ${Build.VERSION.SDK_INT}") + Log.d(TAG, "设备型号: ${Build.MODEL}") // 初始化视图 viewFinder = findViewById(R.id.viewFinder) @@ -52,15 +57,20 @@ class SimpleCameraActivity : AppCompatActivity() { // 请求权限 if (allPermissionsGranted()) { + Log.d(TAG, "权限已授予,启动相机") startCamera() } else { + Log.d(TAG, "请求相机权限") ActivityCompat.requestPermissions( this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS ) } // 设置拍照按钮点击监听器 - captureButton.setOnClickListener { takePhoto() } + captureButton.setOnClickListener { + Log.d(TAG, "拍照按钮被点击") + takePhoto() + } } override fun onDestroy() { @@ -139,18 +149,46 @@ class SimpleCameraActivity : AppCompatActivity() { object : ImageCapture.OnImageSavedCallback { override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) { val savedUri = outputFileResults.savedUri - val msg = if (savedUri != null) { - "照片已保存: ${savedUri.lastPathSegment}" + if (savedUri != null) { + val msg = "照片已保存: ${savedUri.lastPathSegment}" + Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() + Log.d(TAG, msg) + + // 验证文件是否真的存在 + try { + val cursor = contentResolver.query(savedUri, null, null, null, null) + if (cursor != null && cursor.moveToFirst()) { + Log.d(TAG, "文件验证成功: ${savedUri}") + } else { + Log.w(TAG, "文件验证失败,但onImageSaved被调用: ${savedUri}") + } + cursor?.close() + } catch (e: Exception) { + Log.e(TAG, "文件验证异常: ${e.message}") + } } else { - "照片保存成功" + Log.w(TAG, "onImageSaved被调用但savedUri为null") + Toast.makeText(baseContext, "照片保存完成", Toast.LENGTH_SHORT).show() } - Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() - Log.d(TAG, msg) } override fun onError(exception: ImageCaptureException) { - Log.e(TAG, "拍照失败: ${exception.message}", exception) - Toast.makeText(baseContext, "拍照失败: ${exception.message}", Toast.LENGTH_LONG).show() + val errorMsg = "拍照失败: ${exception.message}" + Log.e(TAG, errorMsg, exception) + + // 检查错误类型 + when (exception.imageCaptureError) { + ImageCapture.ERROR_CAMERA_CLOSED -> + Toast.makeText(baseContext, "相机已关闭", Toast.LENGTH_LONG).show() + ImageCapture.ERROR_FILE_IO -> + Toast.makeText(baseContext, "文件保存失败", Toast.LENGTH_LONG).show() + ImageCapture.ERROR_INVALID_CAMERA -> + Toast.makeText(baseContext, "无效的相机", Toast.LENGTH_LONG).show() + ImageCapture.ERROR_UNKNOWN -> + Toast.makeText(baseContext, "未知错误", Toast.LENGTH_LONG).show() + else -> + Toast.makeText(baseContext, "拍照失败: ${exception.message}", Toast.LENGTH_LONG).show() + } } } )