/* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.speech; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; import android.speech.RecognitionResult; import android.util.Log; import java.util.List; /** * Utils for Google's network-based speech recognizer, which lets you perform * speech-to-text translation through RecognitionService. IRecognitionService * and IRecognitionListener are the core interfaces; you begin recognition * through IRecognitionService and subscribe to callbacks about when the user * stopped speaking, results come in, errors, etc. through IRecognitionListener. * RecognitionServiceUtil includes default IRecognitionListener and * ServiceConnection implementations to reduce the amount of boilerplate. * * The Service provides no user interface. See RecognitionActivity if you * want the standard voice search UI. * * Below is a small skeleton of how to use the recognizer: * * ServiceConnection conn = new RecognitionServiceUtil.Connection(); * mContext.bindService(RecognitionServiceUtil.sDefaultIntent, * conn, Context.BIND_AUTO_CREATE); * IRecognitionListener listener = new RecognitionServiceWrapper.NullListener() { * public void onResults(List<String> results) { * // Do something with recognition transcripts * } * } * * // Must wait for conn.mService to be populated, then call below * conn.mService.startListening(null, listener); * * {@hide} */ public class RecognitionServiceUtil { public static final Intent sDefaultIntent = new Intent( RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // Recognize request parameters public static final String USE_LOCATION = "useLocation"; public static final String CONTACT_AUTH_TOKEN = "contactAuthToken"; // Bundles public static final String NOISE_LEVEL = "NoiseLevel"; public static final String SIGNAL_NOISE_RATIO = "SignalNoiseRatio"; private RecognitionServiceUtil() {} /** * IRecognitionListener which does nothing in response to recognition * callbacks. You can subclass from this and override only the methods * whose events you want to respond to. */ public static class NullListener extends IRecognitionListener.Stub { public void onReadyForSpeech(Bundle bundle) {} public void onBeginningOfSpeech() {} public void onRmsChanged(float rmsdB) {} public void onBufferReceived(byte[] buf) {} public void onEndOfSpeech() {} public void onError(int error) {} public void onResults(List<RecognitionResult> results, long key) {} } /** * Basic ServiceConnection which just records mService variable. */ public static class Connection implements ServiceConnection { public IRecognitionService mService; public synchronized void onServiceConnected(ComponentName name, IBinder service) { mService = IRecognitionService.Stub.asInterface(service); } public void onServiceDisconnected(ComponentName name) { mService = null; } } }