2016-08-30 10 views
4

С помощью этого кода:Android: как открыть Speech Input с командой голосом из моего приложения

private void promptSpeechInput() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, 
      getString(R.string.speech_prompt)); 
    try { 
     startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); 
    } catch (ActivityNotFoundException a) { 
     Toast.makeText(getApplicationContext(), 
       getString(R.string.speech_not_supported), 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

С Дифференц способами (событие кнопки, жест, жизненный цикл), я могу назвать этот метод, чтобы открыть Speech Input приглашение так же, как я нажал значок микрофона в поле поиска Google. Хорошо, это хорошо.

Но теперь мне нужно вызвать этот метод, используя голос команды. Так же, как в google сейчас, мы говорим «Ok Google» и появляется приглашение «Вход в речевой ввод». Я хочу сделать это внутри своего приложения. Например, я нахожусь в основном действии, и я говорю «слышу меня» и вызывается метод promptSpeechInput.

Как это сделать?

Спасибо за помощь.

ответ

1

С помощью Voice Actions API ваше приложение может зарегистрироваться для system actions, одним из которых является «поиск» (так что вы можете сделать «поиск некоторых вопросов или команд на APP»).

В прошлом некоторые разработчики смогли submit a custom voice action request. После утверждения пользователи могут выполнить определенное действие с вашим приложением через голос. Это уже не вариант.

+0

Спасибо @LychmanIT, я тестировал его, и это работает нормально. Не лучший способ для решения, которое я думал, но я могу это сделать: Я могу включить «Ok Google» на всех экранах. Когда пользователь находится в приложении, он может выполнить поиск с помощью google сейчас, и я могу получить эту команду и вызвать метод. Кажется, это не красивое решение, но пользователь может использовать приложение, используя только голосовую команду. –

+0

Я создал тестовый проект, и у меня есть проблема. Поиск работает отлично, используя английский язык, но я из Бразилии, и поиск не работает даже для YouTube. Итак, я попробую по-другому. –

+0

Да, это похоже на @ Simon_Phoenix 's вариант лучше, чем мой. Удачи :) – LychmanIT

3

Насколько я знаю, вы не можете объявить свои собственные слова о пробуждении - вы застряли в OK Google. Вы можете использовать API голосовых действий, на который ссылается LychmanIT, но это будет работать только с настройками ПОСЛЕ того, как вы укажете OK Google.

CMUSphynx Возможно, стоит изучить. Он позволяет вам определять пользовательские слушатели, но не является решением, санкционированным Google для этого рабочего процесса, поэтому он может быть не подходит для вас, в зависимости от ваших требований. У меня был некоторый успех в прототипировании, хотя это работает очень хорошо.

+0

Спасибо @SimonPhoenix, это, кажется, полезно для меня. Я создам тестовый проект, используя его, и я и я приду, чтобы предупредить вас. –