如何从视图类重复另一个类中的活动

时间:2013-12-10 17:48:57

标签: java android android-activity android-view

我需要在当前视图类的另一个类中重复一个活动。

我开发了一个简单的语音控制迷宫游戏应用程序。我需要从当前的View类开始另一个类(语音类)中的语音识别活动。语音类接受来自用户的语音输入,将其保存在变量中并返回到视图类。基于从语音类获得的输入来改变视图。这必须重复,直到光标到达迷宫中的最终位置。

如何从视图类重复此语音活动?在重新开始活动之前,必须在短时间内显示包含新更改的视图。

这是我必须重复的功能。使用上下文从此函数调用语音活动。

    public boolean voice_input() {
    int result;
    result = 0;
    boolean moved = false;
    try{

          Thread.sleep(1000);
    }
    catch(InterruptedException ex){

    }
    Context context = getContext();
    Intent i = new Intent(context, voice.class);
    ((Activity)context).startActivityForResult(i,requestCode);
    result = v.getVariable();
    switch(result) {
        case 1:
            moved = maze.move(Maze.UP);
            break;
        case 2:
            moved = maze.move(Maze.DOWN);
            break;
        case 3:
            moved = maze.move(Maze.RIGHT);
            break;
        case 4:
            moved = maze.move(Maze.LEFT);
            break;  
    }
    result = 0;
    if(moved) {

        invalidate();

            if(maze.isGameComplete()) {
                showFinishDialog();
            }
    }
    return true;
}

这是语音课中必须重复的活动。

     public void startVoiceRecognitionActivity()
    {      
     match = 0;
     final int REQUEST_CODE = 1234;
     Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
     startActivityForResult(intent, REQUEST_CODE);
    }

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

    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK)
    {
        ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        match = 0;
        if (matches.contains("left")) {
            match = 4;
        }
        if (matches.contains("right")) {
            match = 3;
        }
        if (matches.contains("up")) {
            match = 1;
        }
        if (matches.contains("down")) {
            match = 2;
        }
    }
    super.onActivityResult(requestCode, resultCode, data);
    finish();
}

1 个答案:

答案 0 :(得分:1)

如果我理解正确,解决此问题的最佳方法是将语音识别作为服务运行。查看thisthis