/*
* 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);
}
}
}