赞
踩
需求描述:
做一个Android扫码验证入场的程序:
如果验证通过,则播放一段“验证通过,请放行”的语音,
如果验证不通过,则播放其他的语音提示。
实现步骤:
1.要播放语音提示,先要有语音文件。可以使用百度的在线语音合成。在线语音合成_高度拟人的语音合成服务-百度AI开放平台t
通过分析网页请求,可以看到返回的语音是一段base64的字符串。
其中data部分就是我们需要的语音,由于在json中/被转义,多了“\”符号,所以我们需要收动将 “\”替换为空。
将处理完的base64字符串存好,留着备用。
2.Android播放base64音频。
- public void playMedia(String voiceBase64) {
- try {
- MediaPlayer mediaPlayer = new MediaPlayer();
- try {
- mediaPlayer.setDataSource(voiceBase64);
- mediaPlayer.prepareAsync();
- mediaPlayer.setVolume(100f, 100f);
- mediaPlayer.setLooping(false);
- } catch (IllegalArgumentException e) {
- Toast.makeText(getApplicationContext(), "You might not set the DataSource correctly!", Toast.LENGTH_LONG).show();
- } catch (SecurityException e) {
- Toast.makeText(getApplicationContext(), "You might not set the DataSource correctly!", Toast.LENGTH_LONG).show();
- } catch (IllegalStateException e) {
- Toast.makeText(getApplicationContext(), "You might not set the DataSource correctly!", Toast.LENGTH_LONG).show();
- } catch (IOException e) {
- e.printStackTrace();
- }
- mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
- @Override
- public void onPrepared(MediaPlayer player) {
- player.start();
- }
- });
- mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- mp.stop();
- mp.release();
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
- }

调用方式很简单,传入base64音频即可。
findViewById(R.id.btnPass).setOnClickListener(view -> playMedia(Voice.Pass));
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。