diff options
Diffstat (limited to 'samples/SupportLeanbackDemos')
3 files changed, 49 insertions, 11 deletions
diff --git a/samples/SupportLeanbackDemos/AndroidManifest.xml b/samples/SupportLeanbackDemos/AndroidManifest.xml index b02e3bfde..95f7a2c0e 100644 --- a/samples/SupportLeanbackDemos/AndroidManifest.xml +++ b/samples/SupportLeanbackDemos/AndroidManifest.xml @@ -6,8 +6,6 @@ <uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" /> - <uses-permission android:name="android.permission.RECORD_AUDIO" /> - <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchActivity.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchActivity.java index 437bd7267..0f7fc3f6d 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchActivity.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchActivity.java @@ -14,15 +14,52 @@ package com.example.android.leanback; import android.app.Activity; +import android.content.Intent; import android.os.Bundle; +import android.support.v17.leanback.app.SearchFragment; +import android.support.v17.leanback.widget.SpeechRecognitionCallback; +import android.util.Log; public class SearchActivity extends Activity { + private static final String TAG = "SearchActivity"; + private static boolean DEBUG = true; + + /** If using internal speech recognizer, you must have RECORD_AUDIO permission */ + private static boolean USE_INTERNAL_SPEECH_RECOGNIZER = false; + private static final int REQUEST_SPEECH = 1; + + private SearchFragment mFragment; + private SpeechRecognitionCallback mSpeechRecognitionCallback; + /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search); + + mFragment = (SearchFragment) getFragmentManager().findFragmentById(R.id.search_fragment); + + if (!USE_INTERNAL_SPEECH_RECOGNIZER) { + mSpeechRecognitionCallback = new SpeechRecognitionCallback() { + @Override + public void recognizeSpeech() { + if (DEBUG) Log.v(TAG, "recognizeSpeech"); + startActivityForResult(mFragment.getRecognizerIntent(), REQUEST_SPEECH); + } + }; + mFragment.setSpeechRecognitionCallback(mSpeechRecognitionCallback); + } + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (DEBUG) Log.v(TAG, "onActivityResult requestCode=" + requestCode + + " resultCode=" + resultCode + + " data=" + data); + if (requestCode == REQUEST_SPEECH && resultCode == RESULT_OK) { + mFragment.setSearchQuery(data, true); + } } } diff --git a/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java b/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java index 7d277cf4f..ff063c5a7 100644 --- a/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java +++ b/samples/SupportLeanbackDemos/src/com/example/android/leanback/SearchFragment.java @@ -17,10 +17,11 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm implements android.support.v17.leanback.app.SearchFragment.SearchResultProvider { private static final String TAG = "leanback.SearchFragment"; private static final int NUM_ROWS = 3; - private static final int SEARCH_DELAY_MS = 300; + private static final int SEARCH_DELAY_MS = 1000; private ArrayObjectAdapter mRowsAdapter; private Handler mHandler = new Handler(); + private String mQuery; @Override public void onCreate(Bundle savedInstanceState) { @@ -43,10 +44,7 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm public boolean onQueryTextChange(String newQuery) { Log.i(TAG, String.format("Search Query Text Change %s", newQuery)); mRowsAdapter.clear(); - if (!TextUtils.isEmpty(newQuery)) { - mHandler.removeCallbacks(mDelayedLoad); - mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS); - } + loadQuery(newQuery); return true; } @@ -54,11 +52,16 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm public boolean onQueryTextSubmit(String query) { Log.i(TAG, String.format("Search Query Text Submit %s", query)); mRowsAdapter.clear(); - if (!TextUtils.isEmpty(query)) { - mHandler.removeCallbacks(mDelayedLoad); + loadQuery(query); + return true; + } + + private void loadQuery(String query) { + mQuery = query; + mHandler.removeCallbacks(mDelayedLoad); + if (!TextUtils.isEmpty(query) && !query.equals("nil")) { mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS); } - return true; } private void loadRows() { @@ -66,7 +69,7 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter()); listRowAdapter.add("Hello world"); listRowAdapter.add("This is a test"); - HeaderItem header = new HeaderItem(i, "Row " + i, null); + HeaderItem header = new HeaderItem(i, mQuery + " results row " + i, null); mRowsAdapter.add(new ListRow(header, listRowAdapter)); } } |