Use new callback for search by intent.
Change-Id: I3e3eafa50a93ad55f55bff0bb5b0b6efdda48bbb
This commit is contained in:
@@ -6,8 +6,6 @@
|
|||||||
|
|
||||||
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" />
|
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="19" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:icon="@drawable/ic_launcher"
|
android:icon="@drawable/ic_launcher"
|
||||||
|
|||||||
@@ -15,14 +15,50 @@ package com.example.android.leanback;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Bundle;
|
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
|
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. */
|
/** Called when the activity is first created. */
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState)
|
public void onCreate(Bundle savedInstanceState)
|
||||||
{
|
{
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.search);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,11 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
implements android.support.v17.leanback.app.SearchFragment.SearchResultProvider {
|
implements android.support.v17.leanback.app.SearchFragment.SearchResultProvider {
|
||||||
private static final String TAG = "leanback.SearchFragment";
|
private static final String TAG = "leanback.SearchFragment";
|
||||||
private static final int NUM_ROWS = 3;
|
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 ArrayObjectAdapter mRowsAdapter;
|
||||||
private Handler mHandler = new Handler();
|
private Handler mHandler = new Handler();
|
||||||
|
private String mQuery;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -43,10 +44,7 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
public boolean onQueryTextChange(String newQuery) {
|
public boolean onQueryTextChange(String newQuery) {
|
||||||
Log.i(TAG, String.format("Search Query Text Change %s", newQuery));
|
Log.i(TAG, String.format("Search Query Text Change %s", newQuery));
|
||||||
mRowsAdapter.clear();
|
mRowsAdapter.clear();
|
||||||
if (!TextUtils.isEmpty(newQuery)) {
|
loadQuery(newQuery);
|
||||||
mHandler.removeCallbacks(mDelayedLoad);
|
|
||||||
mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,11 +52,16 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
public boolean onQueryTextSubmit(String query) {
|
public boolean onQueryTextSubmit(String query) {
|
||||||
Log.i(TAG, String.format("Search Query Text Submit %s", query));
|
Log.i(TAG, String.format("Search Query Text Submit %s", query));
|
||||||
mRowsAdapter.clear();
|
mRowsAdapter.clear();
|
||||||
if (!TextUtils.isEmpty(query)) {
|
loadQuery(query);
|
||||||
mHandler.removeCallbacks(mDelayedLoad);
|
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);
|
mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS);
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadRows() {
|
private void loadRows() {
|
||||||
@@ -66,7 +69,7 @@ public class SearchFragment extends android.support.v17.leanback.app.SearchFragm
|
|||||||
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter());
|
ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new StringPresenter());
|
||||||
listRowAdapter.add("Hello world");
|
listRowAdapter.add("Hello world");
|
||||||
listRowAdapter.add("This is a test");
|
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));
|
mRowsAdapter.add(new ListRow(header, listRowAdapter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user