android - AudioRecord 和 MediaRecorder Android 并行

标签 android time mediarecorder audiorecord android-audiorecord

我必须同时在我的应用程序和audiorecord MediaRecorder中使用。一个注册我的脚本,另一个用于显示声音输入和输入信号的幅度。当我同时使用但独立使用时,我的应用程序崩溃了,但它工作正常。那么你有一个我可以同时使用的解决方案吗???

Trace logCat :
10-16 22:02:08.675: E/MediaRecorder(9007): start failed: -1
10-16 22:02:08.675: W/System.err(9007): java.lang.RuntimeException: start failed.
10-16 22:02:08.675: W/System.err(9007):     at android.media.MediaRecorder.start(Native Method)
10-16 22:02:08.675: W/System.err(9007):     at com.ax.audio_recorder.viewlvlmicro.SoundMeter.start(SoundMeter.java:40)
10-16 22:02:08.675: W/System.err(9007):     at com.ax.audio_record.MainActivity.start(MainActivity.java:177)
10-16 22:02:08.675: W/System.err(9007):     at com.ax.audio_record.MainActivity.access$0(MainActivity.java:173)
10-16 22:02:08.680: W/System.err(9007):     at com.ax.audio_record.MainActivity$3.onClick(MainActivity.java:154)
10-16 22:02:08.680: W/System.err(9007):     at android.view.View.performClick(View.java:2538)
10-16 22:02:08.680: W/System.err(9007):     at android.view.View$PerformClick.run(View.java:9152)
10-16 22:02:08.680: W/System.err(9007):     at android.os.Handler.handleCallback(Handler.java:587)
10-16 22:02:08.680: W/System.err(9007):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-16 22:02:08.680: W/System.err(9007):     at android.os.Looper.loop(Looper.java:130)
10-16 22:02:08.680: W/System.err(9007):     at android.app.ActivityThread.main(ActivityThread.java:3691)
10-16 22:02:08.680: W/System.err(9007):     at java.lang.reflect.Method.invokeNative(Native Method)
10-16 22:02:08.680: W/System.err(9007):     at java.lang.reflect.Method.invoke(Method.java:507)
10-16 22:02:08.680: W/System.err(9007):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
10-16 22:02:08.680: W/System.err(9007):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
10-16 22:02:08.680: W/System.err(9007):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

Android 设备所基于的许多平台将打开的音频输入流的数量限制为 1,当您尝试在关闭第一个输入流之前创建另一个输入流时,这会导致异常。

您可以使用 AudioRecord 录制原始 PCM,并使用该数据将其写入文件(如果这就是您所说的“注册我的脚本”的意思)以及作为可视化工具的输入。缺点是,如果您想保存压缩的音频(例如 mp3),您需要在应用程序中自行处理编码。

关于android - AudioRecord 和 MediaRecorder Android 并行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934157/

相关文章:

android - 在不写入文件的情况下将视频录制到字节数组

android - 从数据库中获取数据并将其设置在 edittext 上

android - 为什么无法在 android 中包含 iostream?

MySQL - 更新日期时间

java - 如何知道现在时间是否在两个小时之间?

javascript - MediaRecorder 替代方案

android - 如何在Android的camera2 API中复用MediaRecorder的Surface?

java - 分离android应用程序的功能和设计

android - 如何在不从 url 下载的情况下播放 mp3?

ios - 如何在iOS中找到线程状态?