显示Alertdialog并使用振动器

时间:2013-10-22 09:36:10

标签: android android-alertdialog android-vibration

我有一个像这样实现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);

解决这个问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

采用上下文对象的构造函数在这里可以正常工作。

声明一个上下文变量

private Context mContext;

然后声明一个带上下文的构造函数

public listener(Context context){
    super();
    mContext = context
}

当您需要上下文时,请使用mContext而不是this

创建侦听器时传递当前上下文

sr.setRecognitionListener(new listener(this));

另外,在Java类名称中,应始终以大写字母开头,因此您的类应该是Listener而不是监听器