Fix compilation errors: OutputFileOptions constructor, composeImages method name, StaticLayout TextPaint, add missing imports

This commit is contained in:
xiajiid
2026-02-08 16:43:39 +08:00
parent bac12c1808
commit cb1482e6fb
2 changed files with 15 additions and 4 deletions

View File

@@ -30,6 +30,7 @@ import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.google.android.material.snackbar.Snackbar
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.IOException
import java.io.OutputStream
import java.text.SimpleDateFormat
@@ -198,7 +199,13 @@ class CameraActivity : AppCompatActivity() {
val contentResolver = contentResolver
val uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
return ImageCapture.OutputFileOptions.Builder(contentResolver, uri).build()
return if (uri != null) {
ImageCapture.OutputFileOptions.Builder(contentResolver, uri).build()
} else {
// 如果插入失败,创建一个临时文件
val file = File.createTempFile("巡检_$timestamp", ".jpg", cacheDir)
ImageCapture.OutputFileOptions.Builder(file).build()
}
}
private fun showPhotoPreview(uri: Uri) {
@@ -262,8 +269,10 @@ class CameraActivity : AppCompatActivity() {
return
}
// 合成图片
val composedBitmap = compositor.composeImages(bitmaps, "巡检报告", "合成时间: ${Date()}")
// 合成图片到2x2网格
val composedGrid = compositor.composeImagesToGrid(bitmaps, 1200, 1600)
// 添加文字叠加
val composedBitmap = compositor.addTextOverlay(composedGrid, "巡检报告", "合成时间: ${Date()}")
// 保存合成图片
val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())

View File

@@ -3,6 +3,7 @@ package com.example.app
import android.graphics.*
import android.text.StaticLayout
import android.text.Layout
import android.text.TextPaint
import java.io.File
import java.text.SimpleDateFormat
import java.util.*
@@ -115,9 +116,10 @@ class ImageCompositor {
paint: Paint,
maxHeight: Int
) {
val textPaint = TextPaint(paint)
val staticLayout = StaticLayout.Builder
.obtain(text, 0, text.length,
paint, (canvas.width * 0.9).toInt())
textPaint, (canvas.width * 0.9).toInt())
.setMaxLines(5) // 限制最大行数
.setAlignment(Layout.Alignment.ALIGN_CENTER)
.build()