From 557363c80d746834c28fbcb003948ba695364fba Mon Sep 17 00:00:00 2001 From: dongliang Date: Fri, 8 May 2026 12:07:18 +0930 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20TTS=20=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E8=AF=AD=E9=9F=B3=E6=B5=8B=E8=AF=95=EF=BC=88=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=A8=A1=E5=BC=8F=E8=A7=A6=E5=8F=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设置页快速点击头像6次触发 TTS 测试,验证设备是否支持中文语音合成。 测试结果通过 Toast 和 Logcat 反馈,为后续任务语音播报功能做可行性验证。 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/xiaoqu/watch/ui/home/HomeFragment.kt | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt index 6fed5ca..e01a805 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt @@ -28,6 +28,7 @@ import com.xiaoqu.watch.ui.punch.PunchResult import com.xiaoqu.watch.ui.punch.PunchViewModel import com.xiaoqu.watch.ui.widget.StatusBarView import com.xiaoqu.watch.util.DateUtil +import android.speech.tts.TextToSpeech import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.delay import kotlinx.coroutines.isActive @@ -83,6 +84,9 @@ class HomeFragment : BaseFragment() { private var debugTapCount = 0 private var lastTapTime = 0L + // ===== TTS 语音测试 ===== + private var tts: TextToSpeech? = null + override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentHomeBinding { return FragmentHomeBinding.inflate(inflater, container, false) } @@ -179,6 +183,9 @@ class HomeFragment : BaseFragment() { it.onBackKeyPressed = null it.notificationBanner.onClick = null } + // 释放 TTS 资源 + tts?.shutdown() + tts = null } // ===== 打卡面板 ===== @@ -548,8 +555,48 @@ class HomeFragment : BaseFragment() { if (debugTapCount >= 6) { debugTapCount = 0 - Timber.d("调试模式已开启") - Toast.makeText(requireContext(), "调试模式已开启", Toast.LENGTH_SHORT).show() + Timber.d("TTS 语音测试开始") + testTts() + } + } + + /** + * TTS 语音测试:验证设备是否支持中文语音合成 + * 测试内容:初始化 TTS → 设置中文 → 播放测试语音 + * 结果通过 Logcat 和 Toast 反馈 + */ + private fun testTts() { + tts?.shutdown() + tts = TextToSpeech(requireContext()) { status -> + if (status == TextToSpeech.SUCCESS) { + val result = tts?.setLanguage(java.util.Locale.CHINESE) + when { + result == TextToSpeech.LANG_MISSING_DATA -> { + Timber.w("TTS: 中文语音包缺失") + activity?.runOnUiThread { + Toast.makeText(requireContext(), "TTS: 中文语音包缺失", Toast.LENGTH_LONG).show() + } + } + result == TextToSpeech.LANG_NOT_SUPPORTED -> { + Timber.w("TTS: 不支持中文") + activity?.runOnUiThread { + Toast.makeText(requireContext(), "TTS: 不支持中文", Toast.LENGTH_LONG).show() + } + } + else -> { + Timber.d("TTS: 中文语音可用,开始播放测试") + activity?.runOnUiThread { + Toast.makeText(requireContext(), "TTS 测试播放中...", Toast.LENGTH_SHORT).show() + } + tts?.speak("您有3条新任务待处理", TextToSpeech.QUEUE_FLUSH, null, "tts_test") + } + } + } else { + Timber.e("TTS: 初始化失败, status=$status") + activity?.runOnUiThread { + Toast.makeText(requireContext(), "TTS: 初始化失败", Toast.LENGTH_LONG).show() + } + } } }