Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / как быть / 4 сообщений из 4, страница 1 из 1
25.02.2020, 14:42
    #39930627
Romantiktj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как быть
Создал два события для ввода в edittext

один набором другой через гугл войс

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


Код: 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.
 editText.addTextChangedListener(new TextWatcher() {

            public void onTextChanged(CharSequence s, int start, int before,
                                      int count) {
                if(!s.equals("") ) {
                    //do your work here
                }
            }



            public void beforeTextChanged(CharSequence s, int start, int count,
                                          int after) {

            }

            public void afterTextChanged(Editable s) {

                search.performClick();

            

            }
        });



то есть при наборе надо поставить какое то условие чтобы void afterTextChanged не срабатывал пока не нажмут на кнопку search, или же другой вариант после того как void afterTextChanged узнает что edittext изменился от войс гугла должен нажать кнопку search.performClick();


Код: 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.
33.
   private void speak() {
        Intent intentvoice = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
       // intentvoice.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intentvoice.putExtra(RecognizerIntent.EXTRA_LANGUAGE,"ru-RU" );
        intentvoice.putExtra(RecognizerIntent.EXTRA_PROMPT,"Говорите");
        try {
            startActivityForResult(intentvoice, REQUEST_CODE_SPECH_INPUT);
        }
        catch (Exception e){
            Toast.makeText(this,""+e.getMessage(),Toast.LENGTH_LONG).show();
        }
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){

        super.onActivityResult(requestCode,resultCode,data);
        switch (requestCode){
            case REQUEST_CODE_SPECH_INPUT:{
                if (resultCode==RESULT_OK && null!=data) {

                    ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);



                    editText.setText(result.get(0));
                }

            }

        }
    }
...
Рейтинг: 0 / 0
25.02.2020, 14:56
    #39930635
Romantiktj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как быть
Romantiktj,
Тема закрыта вопрос решён!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
      public void beforeTextChanged(CharSequence s, int start, int count,
                                          int after) {

            }

            public void afterTextChanged(Editable s) {

                if(googlevoice==1) {search.performClick();googlevoice=0;}


            }
        });
...
Рейтинг: 0 / 0
25.02.2020, 17:01
    #39930700
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как быть
Я-бы сделал чуть иначе: запоминал-бы время последнего изменения и если оно, допустим, больше секунды, то стартовал-бы поиск.

Код: plaintext
1.
2.
3.
Если (последнееИзменение - сейчас < 1сек) то
  последнееИзменение = сейчас
иначе
  ЗапуститьПоиск
...
Рейтинг: 0 / 0
26.02.2020, 06:27
    #39930867
Romantiktj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как быть
wadman,

Хороший совет, я тоже об этом сначала подумал, но боялся потерять эту секунду, и без этого поиск длится 5-6 секунд на хороших платформах. В любом случае спасибо.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / как быть / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]