Как отличить текстовый поиск от голосового?

Я разрабатываю приложение для Android и хочу различать в поисковой активности (которая получает намерение), вводил ли пользователь текст с клавиатуры или с помощью функции распознавания голоса в SearchView (AppCompat). Как я могу различить эти два?


person developing_android    schedule 17.03.2016    source источник


Ответы (2)


В моем приложении я определяю это, проверяя, является ли значение SearchManager.USER_QUERY нулевым. Если это так, это означает, что пользователь не вводил текст для начала поиска, а это означает, что он использовал голосовой поиск. Я делаю это так:

@Override
protected void onNewIntent(Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SEARCH)) {

        //if this was a voice search
        if (intent.getStringExtra(SearchManager.USER_QUERY) == null) {
            //do stuff with voice search query...
        } else {
            //perform search with text query
        }

    }
}

Это решение всегда казалось мне хакерским, но это единственный способ, которым я мог это сделать, и он работает безупречно с тех пор, как я его реализовал.

person NoChinDeluxe    schedule 22.04.2016

Чтобы поиск заполнялся голосом, должен ли пользователь нажимать кнопку, чтобы говорить?

person pooja    schedule 17.03.2016
comment
Да. Пользователь щелкает значок микрофона на панели инструментов (AppCompat) вместо ввода текста, после чего открывается системное диалоговое окно распознавания голоса. - person developing_android; 17.03.2016
comment
Поэтому, когда вы начинаете поисковое действие, вы можете включить в него намерение.putExtra(EXTRA_MESSAGE, сообщение); startActivity(намерение); в качестве идентификатора действия, которое запускает действие поиска. - person pooja; 18.03.2016
comment
И в поисковой активности проверьте это так Intentintent = getIntent(); Строковое сообщение = намерение.getStringExtra(MyActivity.EXTRA_MESSAGE); И вы можете сравнить строку. Это не обязательно должно быть строковое значение, это может быть другой тип данных — как вам удобно. - person pooja; 18.03.2016