powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / как быть
4 сообщений из 4, страница 1 из 1
как быть
    #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
как быть
    #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
как быть
    #39930700
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы сделал чуть иначе: запоминал-бы время последнего изменения и если оно, допустим, больше секунды, то стартовал-бы поиск.

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

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


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