/* * Copyright 2011 Greg Milette and Adam Stroud * * 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 root.gast.speech.voiceaction; import java.util.List; import root.gast.R; import android.content.Context; /** * respond depending on why not understanding occured * * @author Greg Milette <<a * href="mailto:gregorym@gmail.com">gregorym@gmail.com</a>> */ public class WhyNotUnderstoodListener implements OnNotUnderstoodListener { private Context context; private boolean retry; private VoiceActionExecutor executor; public WhyNotUnderstoodListener(Context context, VoiceActionExecutor executor, boolean retry) { this.context = context; this.executor = executor; this.retry = retry; } @Override public void notUnderstood(List<String> heard, int reason) { String prompt; switch (reason) { case OnNotUnderstoodListener.REASON_INACCURATE_RECOGNITION: prompt = context.getResources().getString( R.string.voiceaction_inaccurate); break; case OnNotUnderstoodListener.REASON_NOT_A_COMMAND: String firstMatchingWord = heard.get(0); String promptFormat = context.getResources().getString( R.string.voiceaction_not_command); prompt = String.format(promptFormat, firstMatchingWord); break; case OnNotUnderstoodListener.REASON_UNKNOWN: default: prompt = context.getResources().getString( R.string.voiceaction_unknown); break; } if (retry) { String retryPrompt = context.getResources().getString( R.string.voiceaction_retry); prompt = prompt + retryPrompt; executor.reExecute(prompt); } else { executor.speak(prompt); } } }