How to programmatically initiate a Google Now voice search?

后端 未结 3 499
说谎
说谎 2020-12-08 11:18

I want to start a Google Now voice search when the user presses a button. However, I can\'t find the Intent to start the search in the docs.

Does a

相关标签:
3条回答
  • 2020-12-08 11:43

    Call Activity for Voice Input:

    /* Call Activity for Voice Input */
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
    
    try {
        startActivityForResult(intent, 1);
    } catch (ActivityNotFoundException a) {
        Toast.makeText(context, "Oops! Your device doesn't support Speech to Text",Toast.LENGTH_SHORT).show();
    }
    

    Get Input from as String:

    (I have used for set Text in Search View and Search for that Value)

    /* When Mic activity close */
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        switch (requestCode) {
        case 1: {
            if (resultCode == Activity.RESULT_OK && null != data) {
                String yourResult = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).get(0);
            }
            break;
        }
        }
    }
    
    0 讨论(0)
  • 2020-12-08 11:48

    You need to start an Activity with only the Action set to android.intent.action.VOICE_ASSIST and the Google Now Speech recognizer pops up. Try this using the developer tools:

    adb shell am start -a android.intent.action.VOICE_ASSIST
    
    0 讨论(0)
  • 2020-12-08 11:54

    Use ACTION_RECOGNIZE_SPEECH:

    private static final int RECOGNIZER_REQ_CODE = 1234;
    
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    startActivityForResult(intent, RECOGNIZER_REQ_CODE);
    

    Please note that you have to use startActivityForResult() as startActivity() is not supported. See the above linked docs for details.

    0 讨论(0)
提交回复
热议问题