我在這裏找到了stackoverflow.com a great example,實際上可以播放聲音。 一切正常,但我想知道在PCM一代會發生什麼。 下面是代碼:生成聲音 - PCM(Android - Java)
int idx = 0;
for (final double dVal : sample) {
final short val = (short) ((dVal * 32767));
generatedSnd[idx++] = (byte) (val & 0x00ff);
generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8);
}
其中樣品是保持與在此情況下,所有需要的參數計算出的正弦(頻率,赫茲,等等等等)雙陣列,並且generatedSnd是一個字節數組。 我所知道的一切都是val & 0xff將int轉換爲一個字節,但是這裏究竟做了什麼?爲什麼有這種轉變>>> 8?
只是猜測...它在第一個字節保存最低的8位,然後在第二個字節保存高8位(從9到16)?這是對的嗎?那麼dVal * 32676是什麼意思? –