- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发像 Shazam 这样的 Android 应用程序。我搜索了 Shazam 在 Google 上的工作方式,我找到了 this to read .如您所见,它首先录制歌曲。但是我在录制代码时遇到了问题,因为 Android Studio 显示该代码带有红色下划线的错误。
这是我的代码:
private AudioFormat getFormat() {
float sampleRate = 44100;
int sampleSizeInBits = 16;
int channels = 1; //mono
boolean signed = true; //Indicates whether the data is signed or unsigned
boolean bigEndian = true; //Indicates whether the audio data is stored in big-endian or little-endian order
return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed, bigEndian);
}
用于格式化录音。当我将该代码复制到主要 Activity 中时,它显示如下错误:
当我将光标悬停在 on 错误上时,它说“AudioFormat 在 android.media.AudioFormat 中不公开。无法从外部包访问”。我该如何解决?我关注的链接中的代码是否错误?我一直在搜索 Android 的教程代码来开发类似 Shazam 应用程序的东西。
我知道为什么因为 Cheong 的回答所以我这样使用
private AudioFormat getFormat() {
float sampleRate = 44100;
int sampleSizeInBits = 16;
int channels = 1; //mono
boolean signed = true; //Indicates whether the data is signed or unsigned
boolean bigEndian = true; //Indicates whether the audio data is stored in big-endian or little-endian order
return new AudioFormat.Builder().setSampleRate(Math.round(sampleRate)).build();
}
但是正如您在代码中看到的那样,我只能找到 setSampleRate() 来设置采样率。我找不到其他方法来设置 sampleSizeInBits、channels、signed 和 bigEndian。我不知道如何设置它们。如何设置其余变量?
最佳答案
如果你看the documentation for AudioFormat ,您可能会注意到它有一个“生成器类”。
class AudioFormat.Builder
Builder class for AudioFormat objects.
Builder class for AudioFormat objects. Use this class to configure and create an AudioFormat instance. By setting format characteristics such as audio encoding, channel mask or sample rate, you indicate which of those are to vary from the default behavior on this device wherever this audio format is used. See AudioFormat for a complete description of the different parameters that can be used to configure an AudioFormat instance.
这是 build()
方法。
这是应用程序设计中的一种“模式”,如果你不是设计模式的学生,它有点抽象/难以理解,但是here's a relevant article无论如何。
关于android - AudioFormat 在 android.media.AudioFormat 中不公开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39630215/
我正在尝试开发像 Shazam 这样的 Android 应用程序。我搜索了 Shazam 在 Google 上的工作方式,我找到了 this to read .如您所见,它首先录制歌曲。但是我在录制代
我有一个 AudioInputStream 音频输入,对象本身的编码为 ULAW System.out.println( audioInput.getFormat().getEncoding() );
手册does not answer this question :它说“新编码类型的名称”。 这只是一个像文件名一样的任意名称吗?或者这是一些预定义的名称,例如在 Charset.forName()
我这里有一个 WAV 文件:http://uppit.com/slpmuzpywxhs/202.wav 我需要构造一个Java AudioFormat使用以下参数基于该声音文件的属性的对象: floa
我正在尝试播放服务器通过 UDP 返回给我的音频流。服务器使用DPCM对音频进行编码,因此每个字节包含两个音频样本。当我使用 8 位/样本播放音频时,一切正常,但是当我尝试使用 16 位执行 Audi
这是我第一次尝试使用 Java Sound,我想要实现的是获取源行和目标行格式,以便我可以收听数据并通过创建包含详细信息的正确 AudioFormat 对象将其记录到文件中获得了,但是当尝试通过 Ja
我正在尝试连接我的调音台 -> remoteio -> 动态处理器 这是我的音频格式 //描述格式 memset( &audioFormat, 0, sizeof(AudioStreamBasicDe
根据 Android 开发者文档,AudioFormat 类将使用 AudioFormat.Builder 类实例化,但我无法这样做,因为 AudioFormat.Builder 无法解析为类型? A
我在 linux 操作系统上运行我的代码时出现以下异常。这段代码在 windows 操作系统上运行良好。下面是异常和使用的代码。 java.lang.IllegalArgumentException:
我曾尝试编写播放声音文件的程序,但到目前为止还没有成功。我无法理解代码的某些部分: InputStream is = new FileInputStream("sound file"); Aud
我是一名优秀的程序员,十分优秀!