Optimize voice search

release
FongMi 1 week ago
parent 9e8315bb65
commit 07c7fc3539
  1. 9
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java
  2. 14
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTextListener.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();
}

@ -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<String> texts = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
if (texts == null) return "";
return String.join("\n", texts).trim();
private String parse(Bundle bundle) {
List<String> 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

Loading…
Cancel
Save