выделение строки слов, которые в данный момент говорят (текст в речь) с паузой и возобновлением - PullRequest
0 голосов
/ 13 мая 2019

Я так долго пытался выделить текст, произнесенный текст в речь, и да, я сделал это с помощью этого обратного вызова из класса текст в речь:

 @Override
        public void onRangeStart(String utteranceId, int start,
                                 int end, int frame) {
           runOnUiThread(() -> {
                set_span(start, end);//I use this to highlight
                Log.wtf(TAG, String.valueOf(start + " " + end) + " " + utteranceId);
            });
        }

 public void set_span(int start, int end) {
    SpannableStringBuilder builder =
            new SpannableStringBuilder(main_input.getText().toString());
    builder.setSpan(new ForegroundColorSpan(Color.RED), start, end, 0);
    main_input.setText(builder, EditText.BufferType.SPANNABLE);
    main_input.setSelection(start);
}

однако, если я остановлюсьтекст в речь, когда он говорит, тогда возникает проблема: значение, которое я получаю из onRangeStart, который является началом и концом, возвращается к 0 и вызывает неожиданное поведение при установке диапазона в следующий раз, когда я нажимаю возобновить.

Итак,Я хочу сохранить текущие значения обратного вызова onRangestart, начать и закончить и продолжить охват предыдущей позиции.

...