From ae89ad03fd1a061c856459c09e757095acc1b147 Mon Sep 17 00:00:00 2001 From: Eric85710 Date: Mon, 22 Jun 2026 18:19:50 +0800 Subject: [PATCH] dm-146 --- app/build.gradle.kts | 3 +++ .../home/Message/UI/Detail/Message_Messaging.kt | 13 ++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e10b8bc..4133a11 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -104,4 +104,7 @@ dependencies { val media3Version = "1.5.1" // 建議統一宣告版本,避免版本衝突 implementation("androidx.media3:media3-exoplayer:$media3Version") implementation("androidx.media3:media3-ui:$media3Version") + + //video decode + implementation("io.coil-kt:coil-video:2.6.0") } \ No newline at end of file diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt index 6c0ec5e..627adbb 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt @@ -77,6 +77,8 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.filled.Call import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.PlayArrow +import coil.ImageLoader +import coil.decode.VideoFrameDecoder import com.example.login_v3.data.api.api_class.CallLogInfo import com.example.login_v3.home.Message.UI.Detail.Message_Component.CallLogBubble import com.example.login_v3.home.Message.UI.Detail.Message_Component.ImageLightbox @@ -739,9 +741,18 @@ fun MessageRow( AsyncImage( model = finalMediaUrl, contentDescription = "影片預覽", + // 🌟 注入一個支援影片解碼的 ImageLoader + imageLoader = ImageLoader.Builder(LocalContext.current) + .components { + add(VideoFrameDecoder.Factory()) + } + .build(), contentScale = ContentScale.Crop, modifier = Modifier.fillMaxSize(), - alpha = 0.8f // 稍微壓暗,讓播放按鈕更明顯 + alpha = 0.8f, + onError = { errorState -> + android.util.Log.e("ChatVideoThumbError", "原因: ${errorState.result.throwable}") + } ) // 播放圖示容器