Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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 当从字节变为短字节再变回字节时,录音机质量下降_Java_Android_Audio_Audio Recording - Fatal编程技术网

Java 当从字节变为短字节再变回字节时,录音机质量下降

Java 当从字节变为短字节再变回字节时,录音机质量下降,java,android,audio,audio-recording,Java,Android,Audio,Audio Recording,我正在使用AudioRecorder类为android编写一个录音应用程序。 该代码将音频原始数据记录在字节数组中,然后将其保存到WAV文件中,直到现在一切正常。 我的问题是: 我需要将每个2字节更改为一个短字节,这样我就可以处理音频数据,然后将其更改回字节,这样我就可以写入输出流文件。目前还没有关于音频数据的工作,只是从字节到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节 //16 bit per sam

我正在使用AudioRecorder类为android编写一个录音应用程序。 该代码将音频原始数据记录在字节数组中,然后将其保存到WAV文件中,直到现在一切正常。 我的问题是: 我需要将每个2字节更改为一个短字节,这样我就可以处理音频数据,然后将其更改回字节,这样我就可以写入输出流文件。目前还没有关于音频数据的工作,只是从字节到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节再到短字节

//16 bit per sample to get correct value of sample convert to short
private short[] ByteToShort (byte[] test)
{
    short[] Sh  = new short[Alldata.size()/2];

    for(int ii=0;ii<Alldata.size()/2;ii++)
    {
        //Sh[ii] = (short) ((short)Alldata.get(2*ii)  | ((short)Alldata.get(2*ii+1))<<8);
        Sh[ii] = (short) ((short)test[2*ii]  | ((short)test[2*ii+1])<<8);

    }
    return Sh;
}
//change back to bytes for input/output streamfiles 
byte[] ShortToByte(short[] data)
{
    byte[] dataByte = new byte[(int) (data.length*2)];
    for(int ii=0;ii<data.length;ii++)
    {
        dataByte[2*ii] = (byte)(data[ii] & 0x00ff);
        dataByte[2*ii+1] = (byte)((data[ii] & 0xff00) >> 8);
    }

    return dataByte;
}
//每个样本16位,以获得正确的样本值转换为short
专用短[]ByteToShort(字节[]测试)
{
short[]Sh=新的short[Alldata.size()/2];

对于(int ii=0;ii您必须考虑到
字节
是有符号的

Sh[ii] = (short) (test[2 * ii] & 0xFF | (test[2 * ii + 1] & 0xFF) << 8);
Sh[ii]=(短)(测试[2*ii]&0xFF |(测试[2*ii+1]&0xFF)