Fixed Bug P3 Add Hotlist Status UpdateNo update yet.Description[Deleted User] created issue #1Oct 3, 2020 10:25AMComponent used: SearchSupportFragmentVersion used: androidx.leanback:leanback:1.1.0-alpha05Devices/Android versions reproduced on: API 21+The Crash happens in onPause in SearchSupportFragment@Override public void onPause() { releaseRecognizer(); mIsPaused = true; super.onPause(); }particularly in releaseRecognizer();Why's this happening?When onResume is called the speechRecognizer is initialized but there's never a check whether the SpeechRecognizer is available, meaninghttps://developer.android.com/reference/android/speech/SpeechRecognizer#isRecognitionAvailable(android.content.Context)Inside the onResume function @Override public void onResume() { super.onResume(); mIsPaused = false; if (mSpeechRecognitionCallback == null && null == mSpeechRecognizer) { mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer( getContext()); mSearchBar.setSpeechRecognizer(mSpeechRecognizer); } if (mPendingStartRecognitionWhenPaused) { mPendingStartRecognitionWhenPaused = false; mSearchBar.startRecognition(); } else { // Ensure search bar state consistency when using external recognizer mSearchBar.stopRecognition(); } }There should be a check whether if(SpeechRecognizer.isRecognitionAvailable(requireContext()){initializeSpeechRecognizer(); // copy the function body in onResume}Where does this break?Especially on Amazon TV devices since they lack this speech recognizer.Issue summaryCommentsAll comments Oldest first da...@google.com <da...@google.com> Dec 3, 2020 06:20PMReassigned to sa...@google.com.ap...@google.com <ap...@google.com> #2Dec 15, 2020 07:35AMSDK Revision 5sa...@google.com <sa...@google.com> Dec 15, 2020 10:02AMMarked as fixed.Add comment Comment
Description
Version used: androidx.leanback:leanback:1.1.0-alpha05
Devices/Android versions reproduced on: API 21+
The Crash happens in onPause in SearchSupportFragment
@Override
public void onPause() {
releaseRecognizer();
mIsPaused = true;
super.onPause();
}
particularly in releaseRecognizer();
Why's this happening?
When onResume is called the speechRecognizer is initialized but there's never a check whether the SpeechRecognizer is available, meaning
Inside the onResume function
@Override
public void onResume() {
super.onResume();
mIsPaused = false;
if (mSpeechRecognitionCallback == null && null == mSpeechRecognizer) {
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(
getContext());
mSearchBar.setSpeechRecognizer(mSpeechRecognizer);
}
if (mPendingStartRecognitionWhenPaused) {
mPendingStartRecognitionWhenPaused = false;
mSearchBar.startRecognition();
} else {
// Ensure search bar state consistency when using external recognizer
mSearchBar.stopRecognition();
}
}
There should be a check whether
if(SpeechRecognizer.isRecognitionAvailable(requireContext())
{
initializeSpeechRecognizer(); // copy the function body in onResume
}
Where does this break?
Especially on Amazon TV devices since they lack this speech recognizer.