AndroidStudio里使用google TTS引擎播放声音

1.首先下载google TTS安装包,在你的安卓手机上进行安装。

2.将手机的默认文字播放引擎设置为google TTS。以红米手机为例:设置-更多设置-语言与输入法-文字转语音输出

3.在AndroidManifest.xml中申请权限

XML 复制代码
    <queries>
        <intent>
            <action android:name="android.intent.action.TTS_SERVICE" />
        </intent>
    </queries>

(这段代码可放在application标签前面)

4.在代码中播放声音(包括了兼容性验证、音量设定)

java 复制代码
package com.example.train;

import android.os.Bundle;
import android.view.View;
import android.widget.*;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import android.speech.tts.TextToSpeech;
import java.util.Locale;
import android.util.Log;
import android.content.Context;
import android.media.AudioManager;

public class MainActivity extends AppCompatActivity {

    android.widget.Button button = null;
    private TextToSpeech tts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);

            return insets;
        });

        tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                if (status == TextToSpeech.SUCCESS) {
                    int result = tts.setLanguage(Locale.CHINA); // 设置中文
                    if (result == TextToSpeech.LANG_MISSING_DATA
                            || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                        Log.e("TTS", "中文语言包不可用");
                    }
                    else{
                        AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
                        am.setStreamVolume(AudioManager.STREAM_MUSIC, (int)(am.getStreamMaxVolume(AudioManager.STREAM_MUSIC) * 0.8), 0);
                        EditText edit = findViewById(R.id.editTextText);
                        edit.setText("语音初始化成功");
                    }
                }
            }
        });

        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText edit = findViewById(R.id.editTextText);
                //Toast.makeText(MainActivity.this,edit.getText() , Toast.LENGTH_SHORT).show();
                tts.setPitch(1.2f);// 音高调节(0.5-2.0,默认1.0)
                tts.setSpeechRate(0.9f);// 语速调节(0.5-2.0,默认1.0)
                tts.speak(edit.getText(), TextToSpeech.QUEUE_FLUSH, null, null);
            }
        });
    }
}