Search code examples
androidandroid-intentspeech-recognitionspeech-to-text

Android - Kill intent after some period of time


I am new at Android and working on a speech to text app. I am using Google API. I want to allow users can only speak 2 seconds. After 2 seconds pop-up window should close. Can anyone give me some tips?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mic.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            promptSpeechInput();
        }
    });
}

public void promptSpeechInput()
{
    //This intent recognize the speech
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
    i.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say Something");

    try {
        startActivityForResult(i, 100);
    }
    catch (ActivityNotFoundException a)
    {
        Toast.makeText(MainActivity.this,"Your device does not support",Toast.LENGTH_LONG).show();
    }
}

//For receiving speech input
public void onActivityResult(int request_code, int result_code, Intent i)
{
    super.onActivityResult(request_code, result_code, i);

    switch (request_code)
    {
        case 100: if(result_code == RESULT_OK && i != null)
        {
            ArrayList<String> result = i.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            resultTEXT.setText(result.get(0));
        }
            break;
    }
}

Solution

  • You can add this code where you want to start the timer and in method run you have to write the code for closing the pop up

    new java.util.Timer().schedule( 
        new java.util.TimerTask() {
            @Override
            public void run() {
                // your code here
            }
        }, 
        5000 
    );
    

    Here it is 5 seconds (5000 milliseconds) you can change it to whatever time period you required in milliseconds.