1816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet/* 2816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * Copyright (C) 2014 The Android Open Source Project 3816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * 4816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * in compliance with the License. You may obtain a copy of the License at 6816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * 7816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * http://www.apache.org/licenses/LICENSE-2.0 8816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * 9816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * Unless required by applicable law or agreed to in writing, software distributed under the License 10816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * or implied. See the License for the specific language governing permissions and limitations under 12816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet * the License. 13816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet */ 14816bfc28b79d802b4366684775df74cf40109e6eJerome Poichetpackage com.example.android.leanback; 15816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet 16816bfc28b79d802b4366684775df74cf40109e6eJerome Poichetimport android.app.Activity; 17794383a3ff98ae27e8e64dc5d7919a152cb794cbCraig Stoutimport android.content.Intent; 18816bfc28b79d802b4366684775df74cf40109e6eJerome Poichetimport android.os.Bundle; 1927cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stoutimport android.support.v17.leanback.app.SearchFragment; 2027cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stoutimport android.support.v17.leanback.widget.SpeechRecognitionCallback; 2127cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stoutimport android.util.Log; 22816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet 23816bfc28b79d802b4366684775df74cf40109e6eJerome Poichetpublic class SearchActivity extends Activity 24816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet{ 2527cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout private static final String TAG = "SearchActivity"; 2627cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout private static boolean DEBUG = true; 2727cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout 2827cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout /** If using internal speech recognizer, you must have RECORD_AUDIO permission */ 29b7087e036a48f5a3db28d02ff7f9b97fbbc46c4fDake Gu private static final boolean USE_INTERNAL_SPEECH_RECOGNIZER = true; 3027cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout private static final int REQUEST_SPEECH = 1; 3127cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout 3227cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout private SearchFragment mFragment; 3327cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout private SpeechRecognitionCallback mSpeechRecognitionCallback; 3427cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout 35816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet /** Called when the activity is first created. */ 36816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet @Override 37816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet public void onCreate(Bundle savedInstanceState) 38816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet { 39816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet super.onCreate(savedInstanceState); 40816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet setContentView(R.layout.search); 4127cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout 4227cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout mFragment = (SearchFragment) getFragmentManager().findFragmentById(R.id.search_fragment); 4327cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout 4427cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout if (!USE_INTERNAL_SPEECH_RECOGNIZER) { 4527cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout mSpeechRecognitionCallback = new SpeechRecognitionCallback() { 4627cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout @Override 4727cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout public void recognizeSpeech() { 4827cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout if (DEBUG) Log.v(TAG, "recognizeSpeech"); 4927cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout startActivityForResult(mFragment.getRecognizerIntent(), REQUEST_SPEECH); 5027cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout } 5127cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout }; 5227cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout mFragment.setSpeechRecognitionCallback(mSpeechRecognitionCallback); 5327cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout } 5427cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout } 5527cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout 5627cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout @Override 5727cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout protected void onActivityResult(int requestCode, int resultCode, Intent data) { 5827cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout if (DEBUG) Log.v(TAG, "onActivityResult requestCode=" + requestCode + 5927cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout " resultCode=" + resultCode + 6027cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout " data=" + data); 6127cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout if (requestCode == REQUEST_SPEECH && resultCode == RESULT_OK) { 6227cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout mFragment.setSearchQuery(data, true); 6327cab4ef89f8f6081fe66e9302236befd6842a8fCraig Stout } 64816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet } 6599c0d77dd86ba59f98df716467c715de1bdc9dc9Dake Gu 66816bfc28b79d802b4366684775df74cf40109e6eJerome Poichet} 67