Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将PCM 16位音频转换为PCM 8位_Java_Android_Audio_Audio Recording - Fatal编程技术网

Java 将PCM 16位音频转换为PCM 8位

Java 将PCM 16位音频转换为PCM 8位,java,android,audio,audio-recording,Java,Android,Audio,Audio Recording,我想在我的android录制应用程序中实现同时使用PCM 16位和PCM 8位进行录制的可能性。我在将字节[]PCM 16位转换为8位时遇到问题,我尝试了不同的方法,但录制的大小保持不变(对于PCM 8位,大小应为PCM 16位的一半)。以下是这两种方法: 第一个: if(encoding == AudioFormat.ENCODING_PCM_8BIT){ int i,j; int tempint; int

我想在我的android录制应用程序中实现同时使用PCM 16位和PCM 8位进行录制的可能性。我在将字节[]PCM 16位转换为8位时遇到问题,我尝试了不同的方法,
但录制的大小保持不变(对于PCM 8位,大小应为PCM 16位的一半)
。以下是这两种方法:

第一个:

        if(encoding == AudioFormat.ENCODING_PCM_8BIT){
            int i,j;
            int tempint;
            int len = data.length;
            for (i=1, j=0; i<len; i+=2, j++){
               tempint = ((int) data[i]) ^ 0x00000080;
               data[j] = (byte) tempint;                    
            }
        }
if(编码==AudioFormat.encoding_PCM_8BIT){
int i,j;
int-tempint;
int len=data.length;
对于(i=1,j=0;i=8);
}
}

如果使用相同的数组存储转换后的数据,那么它的大小当然相同。必须将其写入新数组。

如果使用同一数组存储转换后的数据,则其大小当然相同。你必须把它写到一个新的阵列。你是对的,是我的错误(现在有点累)。请把你的答案贴出来,这样我就可以接受了。谢谢
        if(encoding == AudioFormat.ENCODING_PCM_8BIT){
            int len = data.length;
            for (int i=0, i<len; i++){
                data[i] = (byte)(data[i] >> 8);
            }
        }