在Samsung设备上通过MIC录制电话(Android 7.0)

时间:2017-04-18 13:18:16

标签: java android

我有一个简单的Android应用程序可以录制一个电话,它可以在Android 6 + Samsung设备上运行(包括MIC源和VOICE_COMMUNICATION)。但是一旦三星设备更新为Nougat(例如S7 / S7 Edge),这些记录呼叫的方法就失败了:( MIC仅记录我的声音而不是对手的声音,而VOICE_COMMUNICATION根本不起作用。

有人可以建议可以在这做什么吗?

2 个答案:

答案 0 :(得分:2)

同样的问题。 仍在寻找答案。

我有一个三星s7。首先,我解锁了原生录音机(在拨号器中),它的工作原理。 因此,android 7(和samsung)可以记录Android内部没有内部动作的调用。 但是,与此同时,我读到开发人员无法从更高级别获得对录音电话的访问权限。 似乎只有一种方法可以实现我们的目标:修改Android的版本或在收听扬声器之前捕获声音流。 如果我错了,请修理我。

答案 1 :(得分:0)

通常用于记录电话呼叫,我们可以使用4种类型:DEFAULT,MIC,VOICE_CALL,VOICE_COMMUNICATION。但是使用下面的 3种类型就足够了

MIC,VOICE_CALL,VOICE_COMMUNICATION

基于支持或不支持其中某些功能的手机的Android版本。

因此,要使您的应用与所有android版本完全兼容,我们应遵循以下规则,在android版本之后更改AudioSource类型:

if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
    callType = "VOICE_CALL";
} else if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    callType = "MIC";
} else {
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
    callType = "VOICE_COMMUNICATION";
}

我在我的应用程序中使用了它,并且在大多数设备上都可以使用。无需添加任何C库。 检查我的示例应用程序,以了解它们如何使用专用的Android版本。

Github:https://github.com/tntkhang/call-recording-master