Java 如何在android studio中将.wav文件读取为字节数组?

Java 如何在android studio中将.wav文件读取为字节数组?,java,android,tensorflow,Java,Android,Tensorflow,我正在android studio中使用Java编写我的应用程序。我有一个音频文件的文件路径(以.wav格式),将.wav文件读入字节数组的最佳方法是什么? 我使用以下转换方法: public void open_audio_file(Uri filePath){ try{ in = new BufferedInputStream(getContext().getContentResolver().openInputStream(filePath));

我正在android studio中使用Java编写我的应用程序。我有一个音频文件的文件路径(以.wav格式),将.wav文件读入字节数组的最佳方法是什么? 我使用以下转换方法:

public void open_audio_file(Uri filePath){
        try{
            in = new BufferedInputStream(getContext().getContentResolver().openInputStream(filePath));

            int read;
            byte[] buff = new byte[1024];
            while ((read = in.read(buff)) > 0)
            {
                out.write(buff, 0, read);
            }
            out.flush();
        }catch(Exception e){
            throw new RuntimeException(e);
        }
        //Todo : Change the audio file to a float pointer
        audioBytes = out.toByteArray();
        Log.i(LOG_TAG,"The audio file is " + audioBytes.toString());
    }

然而,这个方法产生了很多我的函数无法读取的术语值。例如,dog.wav的输出为[B@d25663f。数组的开头附加了一些术语值


更新1:我尝试使用AudioSystem库,但Android studio不支持该库。

您正在正确读取文件。由于您只是读取字节,因此文件类型实际上与此无关

在数组上调用
toString
时,它不会为您提供整个数组的表示形式,而是提供对象引用。请参阅

如果要查看完整的数组,需要使用
for
循环

for(int i = 0; i < audioBytes.length; i++) {
    System.out.print(audioBytes[i] +" ");
}
for(int i=0;i
或者,您可以使用


请注意,这可能是一个非常大的输出,不太容易阅读。

这是否回答了您的问题?@Jason不是真的,我正在尝试将其转换为字节数组,但是,有一些术语值与输出相关。例如,在转换(dog.wav)[www.beaniebestbuy.com/sounds/dog5.wav]后,第一个值为:[B@d25663f.
[B@d25663f
是数组的
toString()
[B
表示它是字节数组,
d25663f
是数组的(标识)散列码的十六进制形式。我不确定您期望的是什么
audioBytes.toString()
to do.@MarkRotteveel,第一个答案验证了我所做的是正确的。谢谢你的进一步澄清。谢谢你,我对.wav文件格式不太熟悉。看到这些术语值让我很吃惊。谢谢你的澄清。