Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Sersav
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 5
#1

Снова про распознавание речи - Программирование Android

02.02.2014, 10:57. Просмотров 1283. Ответов 5
Метки нет (Все метки)

Доброго времени суток.
Помогите, пожалуйста, разобраться начинающему)))
Идея такая - при нажатии Button у пользователя запрашивается число, и в дальнейшем ответ обрабатывается.
Использую такой код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MainActivity extends Activity implements OnClickListener {
 
    protected static final int REQUEST_OK = 1;
        private int rec=0;
        // и прочее и прочее
        //.......
public void onClick(View v) {
    Log.e("Test", "click");
    getAnswer();
    Log.e("Test",  "rec = " + rec);
       // здесь дальнейшая обработка значения rec
}
 
private void getAnswer() {
    Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
        try {
            startActivityForResult(i, REQUEST_OK);
            } catch (Exception e) {
        Toast.makeText(this, "Error initializing speech to text engine.", Toast.LENGTH_LONG).show();
        }
}
 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
       super.onActivityResult(requestCode, resultCode, data);
           if (requestCode==REQUEST_OK  && resultCode==RESULT_OK) {
            ArrayList <String> thingsYouSaid = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            ]rec =  Integer.parseInt(thingsYouSaid.get(0)); 
               }  
   }   
}
Проблема в том, что getAnswer(), не дожидаясь присвоения значения переменной rec, заканчивает работу, а rec=... срабатывает позже. Соответственно, при первом клике rec=0, затем при втором уже возвращается предыдущее значение и так далее.
Попытки использовать Thread.sleep ничего не дают. Перенести обработку rec в onActivityResult не могу, так как нужно запрашивать число несколько раз из разных мест программы. Как сделать правильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2014, 10:57     Снова про распознавание речи
Посмотрите здесь:

Без интернета не работает распознавание речи в своем приложении - Программирование Android
Android 4.1.2. Без интернета не работает распознавание речи в своем приложении, хотя есть оффлайн-пакет и со стандартной клавиатуры...

Распознавание речи и клавиатура - время ожидания - необычное поведение - Программирование Android
Столкнулся с необычной проблемой. Использую распознавание речи.. То есть при нажатии кнопки открывается окно диктования и после...

Снова про установку шрифта - Программирование Android
Поискал на форуме, но так и не нашел ответа на один вопрос - каким образом можно программно изменить для конкретного приложения выбор...

Синтезатор речи - Программирование Android
люди подскажите как сделать синтезатор речи? какие нужны библиотеки.

Динамический вывод распознавания речи - Программирование Android
Как можно сделать динамический вывод голоса в текст? То есть во время разговора оно заполняет TextView, а не после окончания. Использую...

Приложение сворачивается при распознании речи - Программирование Android
Ребят, такая проблема, сделал распознавание голоса через гугл, но когда во время распознавания нажму на главный активити, который находится...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пытливый
1275 / 601 / 143
Регистрация: 29.05.2013
Сообщений: 2,560
02.02.2014, 11:04     Снова про распознавание речи #2
Несколько не моя тема, но вот тут по ссылке посмотрите порядок работы с распознаванием речи:
http://www.pandacoder.com/android_speech_recognition/
Sersav
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 5
02.02.2014, 11:43  [ТС]     Снова про распознавание речи #3
По ссылке результат распознавания тоже используется лишь в самой onActivityResult, не возвращая его в вызывающую активити
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
02.02.2014, 14:07     Снова про распознавание речи #4
Цитата Сообщение от Sersav Посмотреть сообщение
Перенести обработку rec в onActivityResult не могу, так как нужно запрашивать число несколько раз из разных мест программы.
Это единственный вариант решения вашей проблемы. Я так понимаю, что главная проблема заключается в том, что в методе onActivityResult вам непонятно из какого места кода была запущена распознавалка. Когда вы запускаете активити вызовом метода startActivityForResult, передавайте в качестве второго параметра (вместо REQUEST_OK) некоторое число которое будет уникальным для каждого места вызова этого метода. В методе onActivityResult нужно организовать проверку параметра requestCode который будет таким, какое значение вы передали в метод startActivityForResult когда запускали активити из разных мест.
Sersav
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 5
02.02.2014, 15:28  [ТС]     Снова про распознавание речи #5
Я не точно описал. getAnswer используется в цикле, я в примере для наглядности упростил код. Соответственно, начало цикла будет в onClick, а окончание - в onActivityResult ? Пока плохо представляю, как это реализовать, но попробую цикл while сменить на конструкцию if-then-else.
В идеале хотелось бы простой аналог древнего input'a - rec=getAnswer(); запросил у юзера данные - получил ответ, только ввод голосом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 21:41     Снова про распознавание речи
Еще ссылки по теме:

Какой программой пользоваться для записи Аудио речи - Программирование Android
Всем привет начал писать маленкый англо-русский разговорник около 500 слов когда нажимаю на выбранное слово должно по английскому и...

Распознавание - Программирование Android
Не нашел подходящего раздела, и думаю тут написать. Видел в инете в ролике, как сделана система авторизации по QR коду, человек подходит...

распознавание лиц - Программирование Android
наткнулся случайно вот на эту статью на stackoverflow очень заинтересовал данный вопрос, а именно распознавание лиц. у кого есть какая...

Распознавание текста с фотографии - Программирование Android
как можно распознать текст на фотографии с камеры. алгоритм, готовая реализация, чего нибудь почитать и т.д. где искать

Распознавание текста с камеры - Программирование Android
Добрый день. Подскажите пожалуйста, есть ли библиотеки, которые позволяют определять с фото текст или цифры? К примеру сфотографировать...

Распознавание рукописного ввода - Программирование Android
Где можно почитать, как работает распознавание рукописных символов в андроид-приложениях? Есть ли реализация в свободном доступе? Шаблоны...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Sersav
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 5
03.02.2014, 21:41  [ТС]     Снова про распознавание речи #6
Всем спасибо. Действительно, удалось перенести обработку результата распознавания в onActivityResult. Хотя, по-моему, это скакание из метода в метод ухудшает читаемость кода.
Yandex
Объявления
03.02.2014, 21:41     Снова про распознавание речи
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru