buffer と呼ばれる ByteBuffer があります。buffer.position() からバッファの最後までのすべてのバイトに続いて、位置 0 から buffer.position()-1 までのすべてのバイトを含む新しいバッファを生成したいと考えています。
基本的に、現在の先頭を最後に移動しながら、現在の位置のバイトをバッファの先頭にシフトしたいと考えています。
説明のために、これが私の ByteBuffer の場合 (P
は現在の位置で、数字0-9
はバイト位置を示します):
|0123456789|
P
...次に、次のような新しい ByteBuffer を作成したいと思います。
|3456789012|
P
これが私がこれまでに試したことです(そして機能していません):
ByteBuffer tmpByteBuffer = buffer.slice();
tmpByteBuffer.limit(buffer.capacity());
そして、ここにエラーがあります(これはAndroidのLogCatからのものです-問題はAndroid固有ではないと思いますが):
12-22 03:49:44.303: ERROR/AndroidRuntime(10399): Uncaught handler: thread Thread-11 exiting due to uncaught exception
12-22 03:49:44.313: ERROR/AndroidRuntime(10399): java.lang.IllegalArgumentException
12-22 03:49:44.313: ERROR/AndroidRuntime(10399): at java.nio.Buffer.limit(Buffer.java:239)
12-22 03:49:44.313: ERROR/AndroidRuntime(10399): at com.chaimp.audiolistener.AudioListener.captureSamples(AudioListener.java:175)
12-22 03:49:44.313: ERROR/AndroidRuntime(10399): at com.chaimp.precisiontuner.PrecisionTuner$1.run(PrecisionTuner.java:28)
12-22 03:49:44.313: ERROR/AndroidRuntime(10399): at java.lang.Thread.run(Thread.java:1096)
誰が私が間違っているのか教えてもらえますか?
そして、これを行うためのより良い方法はありますか?
これについて何か助けてくれてありがとう。