Android 从用户处获取语音并启动特定服务

Android 从用户处获取语音并启动特定服务,android,speech-recognition,voice-recognition,Android,Speech Recognition,Voice Recognition,这就是我要做的,我已经指定了一个触发字,现在我想让我的应用程序做的是监听表单用户,将输入转换成字符串,然后将该字符串与我的触发字字符串进行比较,如果它们匹配,则我的应用程序应将我们带到消息传递服务。我不知道如何将arraylist转换为字符串。请指导我进一步操作。 先谢谢你 这是我的密码: package com.example.ahsan.test; import android.app.Activity; import android.content.ActivityNotFoundEx

这就是我要做的,我已经指定了一个触发字,现在我想让我的应用程序做的是监听表单用户,将输入转换成字符串,然后将该字符串与我的触发字字符串进行比较,如果它们匹配,则我的应用程序应将我们带到消息传递服务。我不知道如何将arraylist转换为字符串。请指导我进一步操作。 先谢谢你 这是我的密码:

 package com.example.ahsan.test;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.widget.Toast;

import java.util.ArrayList;


/**
 * Created by ahsan on 5/21/2016.
 */

public class MainActivity extends Activity {
    private static final int RESULT_SPEECH = 1;
    String trigger="open messaging";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /* showing google speech input dialog*/
        Intent intent = new Intent(
                RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
        try {
            startActivityForResult(intent, RESULT_SPEECH);

        }
        catch (ActivityNotFoundException a) {
            Toast t = Toast.makeText(getApplicationContext(),
                    "Opps! Your device doesn't support Speech to Text",
                    Toast.LENGTH_SHORT);
            t.show();
        }


    }
    /* Receiving speech Input */

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK && null != data) {

            ArrayList<String> text = data
                    .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

        }
    }
}
package com.example.ahsan.test;
导入android.app.Activity;
导入android.content.ActivityNotFoundException;
导入android.content.Intent;
导入android.os.Bundle;
导入android.speech.RecognizerIntent;
导入android.widget.Toast;
导入java.util.ArrayList;
/**
*由ahsan于2016年5月21日创建。
*/
公共类MainActivity扩展了活动{
私有静态最终整数结果_SPEECH=1;
String trigger=“打开消息”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
/*显示谷歌语音输入对话框*/
意图=新意图(
识别者(意图、行动、识别、言语);
intent.putExtra(RecognizerIntent.EXTRA_语言_模型,“en-US”);
试一试{
startActivityForResult(意图、结果和演讲);
}
捕获(ActivityNotFoundException a){
Toast t=Toast.makeText(getApplicationContext(),
“哎呀!您的设备不支持语音转换为文本”,
烤面包片(长/短);
t、 show();
}
}
/*接收语音输入*/
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(resultCode==RESULT\u OK&&null!=数据){
ArrayList文本=数据
.getStringArrayListExtra(识别器意图.额外结果);
}
}
}

我想这就是你的意思吧<下面是数组中的所有字符串:

    for(String s : text){
        if(s.matches(trigger){
        // We have a match!
          break;
        }
     }

你是说如何从字符串数组中获取字符串吗?我想获取一个字符串中录制的语音,以便与初始化的触发字字符串进行比较。我可以在这里寻求进一步的帮助吗?@ahsanarif,除非它很短且相关,您可能需要发布另一个问题?我发布了一个与此相关的问题,我在编写可访问性类时遇到了问题。这是我的问题的链接谢谢你的帮助真的很感谢。