2011-07-08 21 views
0

AudioTrackにOGGファイルをロードしようとしているので、再生レートを管理して再生できます。しかし、 "track [voiceIndex] = dis.readByte();"という行でnullポインタ例外が発生しています。私はそれがトラックアレイの境界から外れていると思う。私は正直なところデータストリームについてあまり知らないので、ちょうどこのコードをコピーしました。私はそれを理解するのに苦労している。どんな助けでも感謝します、ありがとう。OGG Audio to AudioTrack

..... 
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(); 
+0

代わりに、再生レートを変更する代わりにSoundPoolを使用できますか? – lespommes

+0

さあ誰か? – lespommes

答えて

0

あなたは、音声データ取得するためにMediaExtractorを使用することができます:linkを、それはあなたがオーディオをデコードする外部ライブラリのいずれかを使用することができますerlierのバージョンではAPIレベル16から利用可能です。

関連する問題