Java 将原始字节数据转换为音频

Java 将原始字节数据转换为音频,java,android,Java,Android,在我的应用程序中,我想将原始字节数据更改为音频。因此,首先我接收数据并将其添加到字节数组列表中,然后我想将整个数组列表更改为音频。由于数据是通过音频插孔生成的,如果您能告诉我哪种音频格式合适(wav、3gp等),我将不胜感激?此外,我在将此数据保存到文件中时遇到问题。这是我的密码。在FileOutStream.write(audiod.toArray())的行中,它给出了一个错误,并要求我将audiod的类型更改为byte private static ArrayList<Byte>

在我的应用程序中,我想将原始字节数据更改为音频。因此,首先我接收数据并将其添加到字节数组列表中,然后我想将整个数组列表更改为音频。由于数据是通过音频插孔生成的,如果您能告诉我哪种音频格式合适(wav、3gp等),我将不胜感激?此外,我在将此数据保存到文件中时遇到问题。这是我的密码。在FileOutStream.write(audiod.toArray())的行中,它给出了一个错误,并要求我将audiod的类型更改为byte

private static ArrayList<Byte> audiod = new ArrayList<Byte>();
audioFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myaudio.wav";

if (dg == 1) {
    //audiod.append(data[i]);
    for (int i = 0; data != null && i < data.length; i++) {
        audiod.add(data[i]);
    }
    if (stt.equalsIgnoreCase(("r"))) {
        dg = 0;
        recordButton.setEnabled(true);
        File file = new File(audioFilePath);
        try {
            FileOutputStream fileOuputStream = new FileOutputStream(audioFilePath);
            fileOuputStream.write( audiod.toArray());
            fileOuputStream.close();
            System.out.println("Done");
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}
private static ArrayList audiod=new ArrayList();
audioFilePath=Environment.getExternalStorageDirectory().getAbsolutePath()+“/myaudio.wav”;
如果(dg==1){
//音频附加(数据[i]);
对于(int i=0;data!=null&&i
audiod.toArray()
将为您提供一个
字节[]
,但是您需要一个
字节[]
。在Java中,基本数据类型有所谓的包装类。
Byte
是保存
Byte
值的对象

为什么要使用
字节列表
?它需要的内存比简单的
字节[]
要多得多(
数据


数据格式(wav、3gp等)取决于您获取数据的方式。

如您所见,我想向Audiod添加数据,但我不确定Audiod的大小。如果我将音频定义为字节,是否有任何方法可以将数据[I](即字节)添加到其中?…我会将数据直接写入文件,或者如果您确实需要将其保存在内存中,则可以使用
ByteArrayOutputStream
()。它会根据需要增加底层字节数组。