我必须在我的应用程序和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)
答案 0 :(得分:2)
Android设备所基于的许多平台将打开的音频输入流的数量限制为1,这会在您关闭第一个之前尝试创建另一个时导致异常。
您可以使用AudioRecord录制原始PCM,并将这些数据用于将其写入文件(如果您的意思是“注册我的脚本”)并将其作为可视化工具的输入。缺点是如果你想保存压缩的音频(例如mp3),你需要自己在应用程序中处理编码。