我在这里找到了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是什么意思? –