From 07c7fc3539feaaa2a0373ea8ff9df06fb9c1cf25 Mon Sep 17 00:00:00 2001 From: FongMi Date: Wed, 15 Apr 2026 23:25:25 +0800 Subject: [PATCH] Optimize voice search --- .../android/tv/ui/activity/SearchActivity.java | 9 ++++++++- .../android/tv/ui/custom/CustomTextListener.java | 14 +++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index 0d9c13346..abe57c94c 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -93,8 +93,8 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL mBinding.mic.setListener(this, new CustomTextListener() { @Override public void onResults(String result) { + if (!result.isEmpty()) setKeyword(result); mBinding.keyword.requestFocus(); - setKeyword(result); } }); } @@ -298,9 +298,16 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL return true; } + @Override + protected void onPause() { + super.onPause(); + mBinding.mic.setFocusable(false); + } + @Override protected void onResume() { super.onResume(); + mBinding.mic.setFocusable(true); mBinding.keyword.requestFocus(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTextListener.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTextListener.java index a36e776c5..3beea9a72 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTextListener.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTextListener.java @@ -6,6 +6,7 @@ import android.speech.SpeechRecognizer; import android.text.Editable; import android.text.TextWatcher; +import java.util.Collections; import java.util.List; public abstract class CustomTextListener implements TextWatcher, RecognitionListener { @@ -20,11 +21,10 @@ public abstract class CustomTextListener implements TextWatcher, RecognitionList if (done != null) done.run(); } - private String parseResult(Bundle results) { - if (results == null) return ""; - List texts = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); - if (texts == null) return ""; - return String.join("\n", texts).trim(); + private String parse(Bundle bundle) { + List texts = bundle == null ? Collections.emptyList() : bundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); + if (texts == null || texts.isEmpty()) return ""; + return texts.get(0).trim(); } @Override @@ -58,13 +58,13 @@ public abstract class CustomTextListener implements TextWatcher, RecognitionList @Override public void onError(int error) { done(); + onResults(""); } @Override public void onResults(Bundle results) { done(); - String result = parseResult(results); - if (!result.isEmpty()) onResults(result); + onResults(parse(results)); } @Override