我有一个像这样实现RecognitionListener的类:
public class listener implements RecognitionListener
我想展示一个alertdialog并使用振动器,但这是不可能的,因为我需要提供一个我没有的上下文。
我的alertdialog代码是这样的:
new AlertDialog.Builder(this)
.setTitle("dd")
.setMessage("aa")
.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
但是AlertDialog.Builder(这个)需要一个上下文,与我的振动器代码一样的问题:
v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
getSystemService方法不可用。
启动课程的代码:
sr = SpeechRecognizer.createSpeechRecognizer(this);
sr.setRecognitionListener(new listener());
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);
sr.startListening(intent);
解决这个问题的最佳方法是什么?
答案 0 :(得分:1)
采用上下文对象的构造函数在这里可以正常工作。
声明一个上下文变量
private Context mContext;
然后声明一个带上下文的构造函数
public listener(Context context){
super();
mContext = context
}
当您需要上下文时,请使用mContext而不是this
。
创建侦听器时传递当前上下文
sr.setRecognitionListener(new listener(this));
另外,在Java类名称中,应始终以大写字母开头,因此您的类应该是Listener而不是监听器