我想在通话期间录制来电和拨出线路的语音。我尝试了许多解决方案,否则可以在Moto Phones以外的设备上工作(在我的情况下,我已经尝试过Moto E(第二代),Moto G5和Moto C)。 我试过这两个库:
03-07 10:56:57.307 293-9261 /? E / AudioRecord:无法获取记录源4的音频输入,采样率8000,格式0x1,通道掩码0x10,会话3494,标志0 03-07 10:56:57.308 293-9261 /? E / StagefrightRecorder:音频源未初始化 03-07 10:56:57.309 7290-7290 / com.callrecorder.android E / MediaRecorder:开始失败:-2147483648 03-07 10:56:57.314 7290-7290 / com.callrecorder.android E /呼叫记录器:无法设置记录器。 java.lang.RuntimeException:启动失败。 在android.media.MediaRecorder.start(Native方法) 在com.callrecorder.android.RecordService.startRecording(RecordService.java:194) 在com.callrecorder.android.RecordService.onStartCommand(RecordService.java:92) 在android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3028) 在android.app.ActivityThread.-wrap17(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1452) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:148) 在android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:728) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
根据官方Android文档
从VOICE_CALL源捕获需要CAPTURE_AUDIO_OUTPUT权限。此权限保留供系统组件使用,不可用于第三方应用程序。
所以,我试图将AudioSource更改为AudioSource.VOICE_COMMUNICATION
,而不会崩溃。但是无法记录传入的声音。它只记录传出的声音。我和AudioSource.DEFAULT
尝试过相同但又没有运气。它的行为与AudioSource.VOICE_COMMUNICATION
这个库在NDK级别有一些调整。但是,与AudioSource.VOICE_COMMUNICATION
根据MOTO的官方论坛this讨论主题,摩托罗拉官员表示,他们不支持内部的VOICE CALL录音,但某些第三方应用程序可能会这样做。哪个是对的。 Play商店中的Automatic Call Recorder应用程序为此提供了工作解决方案。 我无法找到它做了什么样的修改,这给了它一个有效的解决方案。 任何帮助将不胜感激