方式一(TextToSpeech)
文字转语音方式
package com.gjc.ihelp.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.widget.Button;
import com.gjc.ihelp.R;
import com.gjc.ihelp.Utils.ToastUtil;
import java.util.Locale;
public class VoiceAnnouncementsActivity extends AppCompatActivity {
private Button btn;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voice_announcements);
btn = findViewById(R.id.btn);
initTTS();
btn.setOnClickListener(v -> {
startTTS("喝O泡果奶,把清凉抱抱,我要O泡,我要O泡,O泡果奶要要要");
});
}
private void initTTS(){
tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status != TextToSpeech.SUCCESS){
ToastUtil.show(VoiceAnnouncementsActivity.this,"数据丢失或不支持");
}
}
});
}
private void startTTS(String str) {
tts.setPitch(1.0f);
tts.setSpeechRate(1.0f);
tts.setLanguage(Locale.CHINA);
tts.speak(str, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
protected void onStop() {
super.onStop();
tts.stop();
tts.shutdown();
}
}
方式二(MediaPlayer)
获取assets目录下资源进行播报
package com.gjc.ihelp.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Button;
import com.gjc.ihelp.R;
import java.io.IOException;
public class VoiceAnnouncementsActivity extends AppCompatActivity {
private Button btn;
private MediaPlayer mediaPlayer;
private AssetFileDescriptor assetFileDescriptor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voice_announcements);
btn = findViewById(R.id.btn);
btn.setOnClickListener(v -> {
playBackgroundMusic("music/" + "wake.mp3");
});
}
private void playBackgroundMusic(String path) {
if (TextUtils.isEmpty(path)) {
return;
}
try {
mediaPlayer = new MediaPlayer();
assetFileDescriptor = this.getAssets().openFd(path);
mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
mediaPlayer.setVolume(1.0f, 1.0f);
mediaPlayer.prepare();
mediaPlayer.seekTo(0);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mediaPlayer.reset();
mediaPlayer.release();
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (assetFileDescriptor != null){
assetFileDescriptor.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
创建assets方式
MediaPlayer常用方法
start();
stop();
seekTo(int msec);
setVolume(float leftVolume, float rightVolume);
getDuration();
getVideoHeight();
getVideoWidth();
getCurrentPosition( );
isLooping();
isPlaying();
setLooping(boolean looping);
pause();
prepare();
prepareAsync();
release();
reset();