首页 > 解决方案 > 突出显示 android 中文本到语音阅读器所说的单词的错误

问题描述

我没有得到想要的输出。我的代码随后将整个字符串打印为一个整体,而不是打印 android 文本到语音阅读器所说的部分。请帮我澄清我的错误。请尽快回复,或者任何人有任何关于它的 github repo,然后请提供链接。我对在 android studio 中经常发生这种情况感到非常沮丧。

这是我来自 android studio 的 MainActivity.java 代码....

    package com.example.ttsreader;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.speech.tts.TextToSpeech;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Locale;

import static android.widget.Toast.*;

public class MainActivity extends AppCompatActivity {


    private TextToSpeech textToSpeech;
    private Button btn;
    private EditText editText;
    private TextView txtView;
    String x="";
    String sss;

    private static final String TAG = "UpdateUI";

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            Bundle b = msg.getData();
            String key = b.getString("timeKey");
            tv.setText(key);
        }
    };

    private Runnable separateThread = new Runnable() {
        @Override
        public void run() {
            updateUI();
        }

    };

    private TextView tv;


    private String getTime() {
        Calendar calendar = Calendar.getInstance();
        DateFormat formatTime = DateFormat.getTimeInstance();
        return formatTime.format(calendar.getTime());
    }

    private void updateUI(){
        long endTime = System.currentTimeMillis() + 5 * 1000;
        txtView.setText(x);
    }


    String ss;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = (Button) findViewById(R.id.btn);
        txtView=(TextView)findViewById(R.id.textView3);
        editText = (EditText) findViewById(R.id.et);
        textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                if (status == TextToSpeech.SUCCESS) {
                    int ttsLang = textToSpeech.setLanguage(Locale.UK);

                    if (ttsLang == TextToSpeech.LANG_MISSING_DATA
                            || ttsLang == TextToSpeech.LANG_NOT_SUPPORTED) {
                        Log.e("TTS", "The Language is not supported!");
                    } else {
                        Log.i("TTS", "Language Supported.");
                    }
                    Log.i("TTS", "Initialization success.");
                } else {
                    makeText(getApplicationContext(), "TTS Initialization failed!", LENGTH_SHORT).show();
                }
            }
        });

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

                String data = editText.getText().toString();

                try{
                    String arr[]=data.split("\\s");

                       for(final String s:arr)
                       {
                           x+=" ";
                           x+=s;
                           sss=s;
                           Thread t = new Thread(separateThread);
                           int speechStatus = textToSpeech.speak(sss, TextToSpeech.QUEUE_FLUSH, null);
                           if (speechStatus == TextToSpeech.ERROR) {

                           }
                           t.start();
                           Thread.sleep(300);
                          /* txtView.setText(x);
                           int speechStatus = textToSpeech.speak(s, TextToSpeech.QUEUE_ADD, null);
                           if (speechStatus == TextToSpeech.ERROR) {


                           }*/

                       }
                  }
                catch(Exception e)
                {

                }
            }

        });

    }

   /* public void dospeak(final String s,String data)
    {
        String newString = data.replaceAll(s, "<font color='red'>"+s+"</font>");
        ss=newString;
        //extView.setBackgroundColor(Color.BLUE);



    }
*/
}

标签: javaandroidtext-to-speechjava-threads

解决方案


推荐阅读