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