如何将CMU pocketsphinx android demo分成活动

时间:2016-09-14 03:21:27

标签: android speech-recognition pocketsphinx

我目前正在开发适用于Android的CMU pocketpshinx,并希望将菜单窗口与其他窗口分离为活动。我对编码很新,并且遇到了困难。我认为我的代码是正确的,我只是不知道在哪里放置它。任何帮助都会很棒!

这是我的新活动代码(我不确定将它放在PocketSphinxActivity Java文件中的位置):

Intent i = new Intent("edu.cmu.pocketsphinx.demo.BloodPressure");
startActivity(i)
Intent j = new Intent("edu.cmu.pocketsphinx.demo.HeartRate");
startActivity(j)
Intent k = new Intent("edu.cmu.pocketsphinx.demo.PatientInfo");
startActivity(k)

1 个答案:

答案 0 :(得分:0)

您必须将代码放在onPartialResult()方法中。对于针对不同语音命令执行的不同操作,您可以根据需要在代码中使用if-elseswitch

我假设您提供的用于启动不同新活动的代码是正常的,BloodPressure类将用于监听命令"血压",HeartRate类将运行听取命令"心率"并且PatientInfo类将用于监听命令"患者信息"。我还假设您已经在语法文件和识别系统中进行了正确的配置,以识别部件"血压","心率"和"患者信息"。

然后您的代码可能会使用if-else

public void onPartialResult(Hypothesis arg0) {
        if(arg0 == null){ return; }

        String command = arg0.getHypstr();

        if(command.equals("blood pressure")) {
            recognizer.stop();
            Intent i = new Intent("edu.cmu.pocketsphinx.demo.BloodPressure");
            startActivity(i);
        }
        else if(command.equals("heart rate")) {
            recognizer.stop();
            Intent j = new Intent("edu.cmu.pocketsphinx.demo.HeartRate");
            startActivity(j);
        }
        else if(command.equals("patient info")) {
            recognizer.stop();
            Intent k = new Intent("edu.cmu.pocketsphinx.demo.PatientInfo");
            startActivity(k);
        }
}    

希望这有帮助