Android通话记录下行链接已静音

时间:2018-08-08 03:55:49

标签: android media voice acs recorder

我正在尝试使用Android录制上行和下行语音。不论法律和所有方面,我都已经知道,所以请不要发表与法律有关的评论。

下面的代码可以正常工作,除了当我使麦克风静音时,它不会记录下行语音。

我正在使用Android 8.1。我曾尝试在同一台设备上使用名为ACR的第三方应用程序,它运行良好,尽管我被静音了,但它仍会记录下行语音。

 val audioManager = applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager

 val maximumVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL)

 audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, maximumVolume, 0)

 val audioSource = MediaRecorder.AudioSource.MIC

 val mediaRecorder = MediaRecorder()

 mediaRecorder.apply {
            setAudioSource(audioSource)
            setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
            setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
            setAudioChannels(audioChannels)
            setAudioSamplingRate(audioSamplingRate)
            setAudioEncodingBitRate(audioEncodingBitRate)
            setOutputFile(path)
            prepare()
            start()

1 个答案:

答案 0 :(得分:0)

这不是问题。您将MediaRecorder设置为使用MIC作为输入,因此,如果将麦克风静音,则显然输入信号丢失/静音。当您使用“下行”字时,我希望看到其他输入源为VOICECALL或DOWNLINK,而不是MIC。尝试使用MIC录制语音呼叫是错误的,因为:(1)您必须设置扬声器的最大音量并通过它重定向语音呼叫(2)在从MIC录制语音呼叫的同时,呼叫者会听到所有发生的声音您的设备以及您对他人说的所有话(3)这种方法记录了很多噪音和回声。正确的方法是从VOICECALL进行录制,但是大多数新设备(使用较新的Android版本)禁止从该来源进行录制,并且仅允许在System Apps中进行录制。 ACR通过调用隐藏的API方法来使用变通方法,但是由于Android更新,该方法可能随时停止停止工作。