大家好:
问题如题,我写了一个Demo想实现无缝连续播放PCM音频,基本思路如下:
1. 初始化几个方法:
int bufsize = AudioTrack.getMinBufferSize(20000,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,//双声道
AudioFormat.ENCODING_PCM_8BIT);
//创建AudioTrack
AudioTrack audioTrack= new AudioTrack(AudioManager.STREAM_MUSIC, 20000,
AudioFormat.CHANNEL_CONFIGURATION_ STEREO,
AudioFormat.ENCODING_PCM_8BIT,
bufsize * 2, AudioTrack.MODE_STREAM);//
trackplayer.play() ;//开始
2.在一个线程里面写数据:
byte[] bytes_pkg = new byte[40];
填充数组略过……就是高低电平,目的是输出方波波形。
while(flag){
audioTrackwrite(bytes_pkg, 0, bytes_pkg.length) ;//往track中写数据
for(int i = 0, i< bytes_pkg.length,i++){
Log.i(TAG, "i =" + i);
}
audioTrack.reflash();
}
3.启动线程。退出时候flag=false;
遇到问题:
示波器看波形不稳定,高电平低电平会跳变。在Log里看到数组的数据混乱。理应是按照数组顺序打印出来的i顺序混乱如0,1,2……30,38,9,2,8,18…….。
尝试解决:在while{}里面加Thread.sleep(20).结果打印出来的结果OK,但是出来的波形间隔很远,一样会跳变,不符合 我想要的要求。
请教:如何使用AudioTrack实现PCM音频的无缝连续播放?
这个问题一定有解,网上已经有人做了Android版的音频控制飞机的程序。
请高手指教!非常感谢!