Articles of android audiorecord

Android:AudioRecord类问题:永远不会调用回调

我的Android Java应用程序需要将音频数据记录到RAM中并进行处理。 这就是我使用“AudioRecord”类而不是“MediaRecorder”(仅记录到文件)的原因。 直到现在,我使用繁忙的循环轮询“read()”来表示音频数据。 到目前为止,这一直在起作用,但它过多地占用了CPU。 在两次民意调查之间,我将线程置于睡眠状态以避免100%的CPU使用率。 但是,这并不是一个干净的解决方案,因为无法保证睡眠时间,您必须减去安全时间,以免丢失音频片段。 这不是CPU最佳。 对于并行运行的线程,我需要尽可能多的空闲CPU周期。 现在我使用“OnRecordPositionUpdateListener”实现了录制。 根据SDK Docs,这看起来很有前途,也是正确的方法。 一切似乎都有效(打开音频设备,读取()数据等)但从未调用过Listner。 有人知道为什么吗? 信息:我正在使用真实的设备,而不是在仿真器下。 使用Busy Loop录制基本上可以工作(但不是满意)。 永远不会调用Callback Listener。 这是我的源代码片段: public class myApplication extends Activity { /* audio recording */ private static final int AUDIO_SAMPLE_FREQ = 16000; private static final int AUDIO_BUFFER_BYTESIZE = AUDIO_SAMPLE_FREQ * 2 * 3; // = 3000ms private static final int […]

从音频文件输入中检测人声

我正在尝试实现自动录音function,类似于Talking Tom应用程序。 我使用以下代码从录音机读取输入并分析缓冲区: float totalAbsValue = 0.0f; short sample = 0; numberOfReadBytes = audioRecorder.read( audioBuffer, 0, bufferSizeInBytes); // Analyze Sound. for( int i=0; i<bufferSizeInBytes; i+=2 ) { sample = (short)( (audioBuffer[i]) | audioBuffer[i + 1] << 8 ); totalAbsValue += Math.abs( sample ) / (numberOfReadBytes/2); } // Analyze temp buffer. tempFloatBuffer[tempIndex%3] = totalAbsValue; float temp […]

Android AudioRecord支持的采样率

我正在试图弄清楚运行Android 2.2及更高版本的手机支持哪些采样率。 我们想以低于44.1kHz的速率进行采样,而不必重新采样。 我知道所有手机都支持44100Hz,但是想知道是否有一张桌子显示哪些采样率对特定手机有效。 我已经看过Android的文档( http://developer.android.com/reference/android/media/AudioRecord.html ),但它没有多大帮助。 有没有人find这些采样率的清单?

通话录音 – 使其适用于Nexus 5X(可以使用root或自定义ROM)

我正在尝试在Nexus 5X,Android 7.1(我自己的AOSP版本)上使用AudioRecord和AudioSource.VOICE_DOWNLINK 。 我已经超过了权限阶段 – 将我的APK移动到特权应用程序,对Android源中的AudioRecord进行了调整,以停止抛出有关此源的exception。 现在我在通话期间得到空录音缓冲区。 我知道有很多通话录音应用程序,它们可以在其他设备上运行。 我也看到某些应用程序可以对已植根的N5执行某些操作并使其正常工作。 我希望在Nexus 5X上实现相同的目标 – 任何调整对我来说都可以,包括更改Android版本,修改Qualcomm驱动程序,设备配置文件等等 – 基本上可以在自定义ROM中实现。 我已经尝试过使用平台代码 – 硬件/ qcom / audio / hal / voice.c,特别是函数voice_check_and_set_incall_rec_usecase ,但到目前为止还没有意义。 还检查了device / lge / bullhead / mixer_paths.xml,发现有一个与呼叫记录相关的部分: 但我也无法理解它或它是如何得到帮助的。

增加录制Android AudioRecord的音量

我正在使用AudioRecord和跛脚logging麦克风input到一个MP3样品12秒。 audio是预期的录音机,但我意识到音量太低。 有没有办法增加录音的音量?

如何在Android Wear上录制audio

有一些方法来loggingAndroid Wear上的audio? 我使用AudioRecord API,它崩溃的应用程序。 难道我做错了什么? short[] audioData = new short[minBufferSize]; AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 11025, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize); audioRecord.startRecording(); while(recording){ int numberOfShort = audioRecord.read(audioData, 0, minBufferSize); for(int i = 0; i < numberOfShort; i++){ dataOutputStream.writeShort(audioData[i]); } } audioRecord.stop();

为audioRecord实现getMaxAmplitude

我在我的应用程序中使用audiorecord而不是mediarecorder它工作正常,但我有一个逻辑,这极大地取决于使用audiorecord真正很难获得的maxamplitude在这里是我正在使用时读取缓冲区 private void writeAudioDataToFile(){ byte data[] = new byte[bufferSize]; String filename = getTempFilename(); FileOutputStream os = null; try { os = new FileOutputStream(filename); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } int read = 0; max=0; if(null != os){ while(isRecording){ read = recorder.read(buffer, 0, bufferSize); int ab = (buffer[0] & 0xff) […]

AudioRecord和AudioTrack延迟

我试图开发一个应用程序,如android的iRig,所以第一步是捕捉麦克风input,并在同一时间播放它。 我有它,但问题是,我得到一些延迟,使这种无法使用,如果我开始处理缓冲区,我怕它会得到完全无法使用。 我使用这样的audiorecord和audiotrack: new Thread(new Runnable() { public void run() { while(mRunning){ mRecorder.read(mBuffer, 0, mBufferSize); //Todo: Apply filters here into the buffer and then play it modified mPlayer.write(mBuffer, 0, mBufferSize); //Log.v("MY AMP","ARA"); } 而通过这种方式: // ==================== INITIALIZE ========================= // public void initialize(){ mBufferSize = AudioRecord.getMinBufferSize(mHz, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); mBufferSize2 = AudioTrack.getMinBufferSize(mHz, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); mBuffer = new […]

当其他应用在Android中使用时,无法访问麦克风

我正在使用以下URL中的代码,以便从AudioRecord的麦克风获取声音数据: http : //www.dreamincode.net/forums/topic/303235-visualizing-sound-from-the-microphone/ 我看到的问题是,如果另一个应用程序也使用麦克风,我得到一个错误(状态-3)从AudioRecord。 如果我杀了使用麦克风的其他应用程序,一切都按预期工作。 是否有一个优雅的解决scheme,让我的应用程序访问麦克风,即使其他应用程序已经在使用它? 谢谢。

增加录制audio的音量输出

我正在尝试在Android中创build通话录音应用程序。 我正在使用扬声器logging上行和下行audio。 我面临的唯一问题是音量太低。 我已经使用AudioManager增加了设备的音量到最大,它不能超越。 我第一次使用MediaRecorder,但由于它有限的function,并提供压缩audio,我已经尝试与AudioRecorder。 我还没有想出如何增加audio。 我也检查过Github上的项目,但是没用。 我已经search了最近两周的计算器,但找不到任何东西。 我很确定这是可能的,因为许多其他的应用程序正在这样做。 例如自动呼叫logging器这样做。 我明白,我必须做一些与audio缓冲区,但我不太确定需要做什么。 你能指导我吗? 更新: – 对不起,我忘记提及我已经在使用Gain。 我的代码几乎类似于RehearsalAssistant (实际上我从那里得到它)。 增益不能超过10dB,并且不会增加audio音量。 我想要的是我应该能够听到audio,而不用把耳朵放在我的代码中缺less的扬声器上。 在SoundDesign SE 这里,我已经提出了一个关于音量/响度function的类似问题。 它提到增益和响度是相关的,但它没有设置实际的响度水平。 我不知道事情是如何工作的,但是我决定得到大量的输出。