最新消息:关注【已取消】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

AudioTrack播放PCM或WAV格式的语音文件使用示例

Android 太平洋学习网 0浏览 评论

Android的AudioTrack类可以播放pcm或wav格式的语音文件,小编使用AudioTrack制作了一个小功能,包含了播放,暂停,关闭这三个按钮,如果你想使用AudioTrack播放pcm等语音格式的文件,就可以直接将小编的方法复制过去使用了,代码如下:

public class AudioPlayer{
	private String audioUrl;
	private AudioTrack audioTrack;
	private int bufferSize;
	private Thread playVoiceThread = null;
	private boolean isPause;
	public AudioPlayer(String audioUrl) {
		this.audioUrl = audioUrl;
		initAudioPlayer();
	}
        //初始化
	private void initAudioPlayer() {
		bufferSize = audioTrack.getMinBufferSize(16000, AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT);
		audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,16000,AudioFormat.CHANNEL_OUT_MONO,AudioFormat.ENCODING_PCM_16BIT,bufferSize,AudioTrack.MODE_STREAM);
	}

	//开始播放
	public void startPlay(){
		//首次点击播放才会进来,如果多次点击播放,则做任何事情
		if(playVoiceThread == null){
			playVoiceThread = new Thread(new Runnable() {
				@Override
				public void run() {
					try {
						FileInputStream inputStream = new FileInputStream(new File(audioUrl));
						byte[] buffer = new byte[bufferSize];
						int readCount = 0;
						while (inputStream.available() > 0){
							if(isPause){
								continue;
							}
							readCount = inputStream.read(buffer,0,buffer.length);
							if(readCount > 0){
								audioTrack.write(buffer,0,readCount);
								audioTrack.play();
							}
						}
						//播放完自动停止
						stopPlay();
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			});
			playVoiceThread.start();
		}else{ //暂停之后再点播放,则直接继续之前的进度播放
			isPause = false;
		}

	}

	//停止播放 
	public void stopPlay(){
		if(playVoiceThread != null){
			playVoiceThread.interrupt();
			playVoiceThread = null;
		}
		if(audioTrack != null){
			audioTrack.stop();
			audioTrack.release();
			audioTrack = null;
		}
	}

	//暂停播放
	public void pausePlay(){
		//播放线程启动了才允许暂停
		if(playVoiceThread != null){
			isPause = true;
			audioTrack.pause();
		}
	}
}

我们只需要在初始化自定义的AudioPlayer类的时候,传入pcm或wav格式的语音文件的路径即可,代码如下:

AudioPlayer audioPlayer = new AudioPlayer("d://music/xxxx.pcm");

然后直接调用AudioPlayer类的开始录音,暂停录音,关闭录音方法即可,代码如下:

//开始
audioPlayer.startPlay();
//暂停
audioPlayer.pausePlay();
//关闭
audioPlayer.stopPlay();

上面小编对Android AudioTrack类封装得代码,是可以直接复制使用的,而你只需要对应修改一下“16000”, “AudioFormat.CHANNEL_OUT_MONO”,“AudioFormat.ENCODING_PCM_16BIT”这三个参数即可(因为不同的机器可能有不同的比特率等参数)。

小编项目的效果如图所示很丑不好意思

1594717132483358.png

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/android/998.html
"文章很值,打赏犒劳作者一下"
微信号: Javaweb_engineer

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论