【问题标题】:Record a call through MIC on Samsung devices (Android 7.0)通过三星设备上的 MIC 录制通话 (Android 7.0)
【发布时间】:2018-12-16 13:03:02
【问题描述】:

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

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

【问题讨论】:

标签: java android


【解决方案1】:

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

我有三星 s7。首先,我解锁了本地记录器(在拨号器中)并且它可以工作。 因此,android 7(和三星)可以在没有 Android 内部操作的情况下录制通话。 但是,与此同时,我读到开发人员无法访问更高级别的录音通话。 似乎只有一种方法可以实现我们的目标:修改现有的 Android 版本或在声音到达扬声器之前捕获声音流。 如果我错了,请纠正我。

【讨论】:

【解决方案2】:

通常情况下,我们可以使用 4 种类型来录制电话:DEFAULT、MIC、VOICE_CALL、VOICE_COMMUNICATION。但是以下三种类型就足够了

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多