
我在播放声音的开始和结束时获得了点击(来自SD卡的wav).它必须与轨道缓冲有关,但我不知道解决方案.此外,每当声音播放时,我都会创建一个新的,这是好还是有更好的方法?有很多声音一遍又一遍地播放.这是代码:
public voID PlayAudioTrack(final String filePath, final float f) throws IOException { new Thread(new Runnable() { public voID run() { //play sound here int minSize = AudioTrack.getMinBufferSize( 44100, AudioFormat.CHANNEL_CONfigURATION_STEREO, AudioFormat.ENCoding_PCM_16BIT ); AudioTrack track = new AudioTrack( AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONfigURATION_STEREO, AudioFormat.ENCoding_PCM_16BIT, minSize, AudioTrack.MODE_STREAM); track.setPlaybackRate((int) (44100*f)); if (filePath==null) return; int count = 512 * 1024; //Read the file.. byte[] byteData = null; file file = null; file = new file(filePath); byteData = new byte[(int)count]; fileinputStream in = null; try { in = new fileinputStream( file ); } catch (fileNotFoundException e) { // Todo auto-generated catch block e.printstacktrace(); } int bytesread = 0, ret = 0; int size = (int) file.length(); while (bytesread < size) { try { ret = in.read( byteData,0, count); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); } track.play(); if (ret != -1) { // Write the byte array to the track track.write(byteData,0, ret); bytesread += ret; } else break; } try { in.close(); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); } track.stop(); track.release(); } }).start(); }非常感谢任何帮助
解决方法:
你是不是也可以播放PCM波形文件头?
每个PCM波形文件在文件的开头都有一个小标题,如果你播放它,你会播放标题字节,这可能导致在te开头点击.
总结以上是内存溢出为你收集整理的Android AudioTrack会在声音的开头和结尾点击全部内容,希望文章能够帮你解决Android AudioTrack会在声音的开头和结尾点击所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)