int iMinBufSize = AudioTrack.getMinBufferSize(44000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
aAudioTrack01 = new AudioTrack(AudioManager.STREAM_MUSIC, 44000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
iMinBufSize,
AudioTrack.MODE_STREAM);
aAudioTrack01.play();
byte data[] = new byte[iMinBufSize];
然后通过文件读取context.openFileInput把mp3读到data中
aAudioTrack01.write(data, 0, data.length);出来的声音是噪音,话说是否audiotrack只能读取录制的音乐么或者有什么其他方法能够把声音通过单声道播放,或是需要通过驱动手动修改么
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
aAudioTrack01 = new AudioTrack(AudioManager.STREAM_MUSIC, 44000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
iMinBufSize,
AudioTrack.MODE_STREAM);
aAudioTrack01.play();
byte data[] = new byte[iMinBufSize];
然后通过文件读取context.openFileInput把mp3读到data中
aAudioTrack01.write(data, 0, data.length);出来的声音是噪音,话说是否audiotrack只能读取录制的音乐么或者有什么其他方法能够把声音通过单声道播放,或是需要通过驱动手动修改么
soundpool应该能控制声道
采样率要除2
同时采样率应该是从mp3中得到,不应该写死。
可参考mp3的数据格式中的帧头结构,得到采样率
http://blog.163.com/waft_xu/blog/static/438152942008139330707/
int iMinBufSize = AudioTrack.getMinBufferSize(44000/2,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
aAudioTrack01 = new AudioTrack(AudioManager.STREAM_MUSIC, 44000/2,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
iMinBufSize,
AudioTrack.MODE_STREAM);
采样率要除2
同时采样率应该是从mp3中得到,不应该写死。
可参考mp3的数据格式中的帧头结构,得到采样率
http://blog.163.com/waft_xu/blog/static/438152942008139330707/
int iMinBufSize = AudioTrack.getMinBufferSize(44000/2,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT);
aAudioTrack01 = new AudioTrack(AudioManager.STREAM_MUSIC, 44000/2,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
iMinBufSize,
AudioTrack.MODE_STREAM);