我正在尝试将OGG文件加载到AudioTrack上,以便我可以管理播放速率并播放它。但是,我在"track[voiceIndex] = dis.readByte();"行中得到空指针异常。我想它超出了轨道数组的边界。老实说,我对数据流了解不多,所以我只是复制了这段代码。我很难理解。如有任何帮助,我将不胜感激。
.....
private AudioTrack voice = null;
private InputStream is = null;
private byte[] track = null;
private BufferedInputStream bis = null;
private DataInputStream dis = null;
.......
int playbackRate = 0;
is = getResources().openRawResource(sentences[index].voice);
bis = new BufferedInputStream(is, 8000);
dis = new DataInputStream(bis);
while (dis.available() > 0){
track[voiceIndex] = dis.readByte();
voiceIndex++;
}
voice.write(track, 0, track.length);
playbackRate = voice.getPlaybackRate();
voice.play();
您可以使用MediaExtractor来获取音频数据:link,但它从API级别16可用。在较早的版本中,您可以使用外部库之一来解码音频。