Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓语音识别赢得';I don’我不在另一个班工作_Java_Android_Adapter_Speech Recognition_Text To Speech - Fatal编程技术网

Java 安卓语音识别赢得';I don’我不在另一个班工作

Java 安卓语音识别赢得';I don’我不在另一个班工作,java,android,adapter,speech-recognition,text-to-speech,Java,Android,Adapter,Speech Recognition,Text To Speech,我是Android开发的初学者。我试图创建的是一个应用程序,它与您交谈,然后等待您的回答,这样它的文本到语音工作,然后它激活语音识别,用我的代码,文本到语音工作,然后它调用语音识别。然后显示错误消息,执行捕获块。 问题是我必须在单独的类中添加语音识别,然后在Adapter not Main活动中添加语音识别的对象。语音识别不起作用,因为Android语音识别的所有教程都在主活动中添加了代码,而我在适配器中调用类来做这件事,这是问题吗 更新startActivityForResult()方法不起作

我是Android开发的初学者。我试图创建的是一个应用程序,它与您交谈,然后等待您的回答,这样它的文本到语音工作,然后它激活语音识别,用我的代码,文本到语音工作,然后它调用语音识别。然后显示错误消息,执行捕获块。
问题是我必须在单独的类中添加语音识别,然后在Adapter not Main活动中添加语音识别的对象。语音识别不起作用,因为Android语音识别的所有教程都在主活动中添加了代码,而我在适配器中调用类来做这件事,这是问题吗

更新startActivityForResult()方法不起作用

public class SpeechRecog extends Activity   {

    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1001;
    String textResult ;

    public void Start (Intent i , Context c){
        i  = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
        i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
        i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Are You Done ,  yet? ");

        try{
            startActivityForResult(i,VOICE_RECOGNITION_REQUEST_CODE); 
        } catch(Exception e) {
            Toast.makeText(c, "SpeechRecogntion is not avalible on your device ", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if ((requestCode == VOICE_RECOGNITION_REQUEST_CODE)&& (resultCode== RESULT_OK)) {
            textResult= data.getStringExtra(RecognizerIntent.EXTRA_RESULTS);

            if (checkResult())
                Toast.makeText(getApplicationContext(), "You are done ", Toast.LENGTH_LONG).show();
            else
                Toast.makeText(getApplicationContext(), "You are not done ", Toast.LENGTH_LONG).show();
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

    private boolean checkResult() {
        if (textResult.equals("done")||(textResult.equals("yes")))
            return true ; 

        return false;
    }
}
这是演讲类的代码

public class SpeechRecog extends Activity   {

    private static final int VOICE_RECOGNITION_REQUEST_CODE = 1001;
    String textResult ;

    public void Start (Intent i , Context c){
        i  = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
        i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1);
        i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Are You Done ,  yet? ");

        try{
            startActivityForResult(i,VOICE_RECOGNITION_REQUEST_CODE); 
        } catch(Exception e) {
            Toast.makeText(c, "SpeechRecogntion is not avalible on your device ", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if ((requestCode == VOICE_RECOGNITION_REQUEST_CODE)&& (resultCode== RESULT_OK)) {
            textResult= data.getStringExtra(RecognizerIntent.EXTRA_RESULTS);

            if (checkResult())
                Toast.makeText(getApplicationContext(), "You are done ", Toast.LENGTH_LONG).show();
            else
                Toast.makeText(getApplicationContext(), "You are not done ", Toast.LENGTH_LONG).show();
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

    private boolean checkResult() {
        if (textResult.equals("done")||(textResult.equals("yes")))
            return true ; 

        return false;
    }
}
这是Adapter类中的对象

private SpeechRecog mySP; 
private Intent mySpIntetn ;

    public ListAdapterClass(Context context) {
        mytts = new TxtToSpeechClass(context); 
        mySP = new SpeechRecog();
    }
这就是我的问题所在,Adapter类中的clicklistener

Lh.btn.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) 
    {
        if (Lh.btn.getText().equals("Play"))
        {
            Lh.btn.setText("Pause"); //change the btn status so user know how to stop it 

            List<Items> hResults=db.getAllItems(Lh.idList + 1);    

            for (int i = 0; i < hResults.size(); i++) 
            {
                Items item = hResults.get(i);
                String s = item.getItemname();  
                mytts.Talk(s,1);

                mySP.Start(mySpIntetn , context ); //the code in here wont work is there something I'm missing here 

                Toast.makeText(context,s, Toast.LENGTH_SHORT).show();
            }

            mytts.Talk("Congrats  ",1);// 1 means Queue_add

        } else {
            Lh.btn.setText("Play");
            mytts.Talk("See you later", 0); // 0 means Queue_Flush
        }
    }
);
Lh.btn.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v)
{
if(Lh.btn.getText().equals(“Play”))
{
Lh.btn.setText(“暂停”);//更改btn状态,以便用户知道如何停止它
List hResults=db.getAllItems(Lh.idList+1);
对于(int i=0;i
mySpIntetn
是私有的。请尝试在适配器类中将其更改为public。

什么不起作用?语音识别不起作用..startActivityForResult()对于语音识别显示错误,您能检查一下吗?LogCat怎么说?致命异常:位于com.example.vozapplication.SpeechRecog.Start(SpeechRecog.java:24)E/AndroidRuntime(413)的main java.lang.NullPointerException位于android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:101):在com.example.vozapplication.ListAdapterClass$1.onClick(ListAdapterClass.java:117)SpeechRecog(活动)。startActivityForResult(意图,int,Bundle)行:3446 SpeechRecog(活动)。startActivityForResult(意图,int)行:3407 SpeechRecog.Start(意图,上下文)第24行SpeechRecog.java中的第24行是什么?NPE堆栈跟踪似乎与您共享的代码不匹配。我正在使用GetApplicationContext(),现在我将其传递给Start()方法。这使我的应用程序工作,但SR仍然不工作。startActivityForResult(I,语音识别\请求\代码)中存在问题;它总是显示我输入Try catch的错误消息