【问题标题】:How To Record Calls In Android Devices Using Kotlin?如何使用 Kotlin 在 Android 设备中记录通话?
【发布时间】:2022-08-22 20:37:27
【问题描述】:

我想制作一个 Android 应用程序,它可以在后台记录传入和传出呼叫作为 kotlin 中的服务,并在一天中的特定时间通过 API 将所有记录发送到服务器。我对此进行了研究,发现只是使用Device Policy ManagerTelephoney Manager,但在互联网上并没有太多关于它的内容。那么你能帮我写任何文章、文档或教程吗?

  • 仅供参考——这样的应用程序在某些地方可能是非法的。在美国,19 个(我认为)州要求您通知对方电话可能会被录音。
  • 你好@iamdhavalparmar 你找到任何解决方案了吗?
  • 不@Abdullqadir 我已经对此发表了评论。

标签: android android-studio kotlin call-recording


【解决方案1】:

谷歌目前还没有解决方案。 Google 已弃用在其最新版本的 Android 操作系统中记录通话的功能。早些时候有可能,我尝试了各种方法,但是当我尝试录制通话时,我才得到无声的音频。当使用谷歌的电话应用程序时,它只允许该应用程序使用麦克风和其他东西,它不会允许任何其他应用程序压倒并获得该硬件访问权限。

但实际上有两个技巧可以做到这一点。

  1. 构建您自己的电话应用程序(例如 Truecaller)并管理来自该应用程序的每个呼叫和其他事情,您可以访问在您的设备上管理呼叫,您还可以访问记录呼叫。
  2. 如果您的工作特定于三星、OnePlus 等任何一个移动示例,那么您可以使用任何 Truecaller 或 Google 的电话应用程序,将通话记录存储在文件存储中,然后您可以创建服务上传每天晚上 12 点左右从该特定文件位置进行通话录音。

【讨论】:

    【解决方案2】:

    首先创建 MyCallRecordReceiver 类

        class MyCallRecordReceiver(callRecord: CallRecord) : CallRecordReceiver(callRecord) {
    
    
        override fun onIncomingCallReceived(context: Context, number: String?, start: Date) {
            super.onIncomingCallReceived(context, number, start)
        }
    }
    

    然后在 MainActivity

    class MainActivity : AppCompatActivity() {
    
    companion object {
        private val TAG = MainActivity::class.java.simpleName
    }
    
    private lateinit var callRecord: CallRecord
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
      
        callRecord = CallRecord.Builder(this)
            .setLogEnable(true)
            .setRecordFileName("CallRecorderTestFile")
            .setRecordDirName("CallRecorderTest")
            .setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION)
            .setShowSeed(true)
            .build()
    
    }
    
    fun StartCallRecordClick(view: View) {
        LogUtils.i(TAG, "StartCallRecordClick")
        callRecord.startCallReceiver()
    
    }
    
    fun StopCallRecordClick(view: View) {
        LogUtils.i(TAG, "StopCallRecordClick")
        callRecord.stopCallReceiver()
    
    }
    }
    

    此外,将其作为依赖项添加到应用的 build.gradle 文件中

        allprojects {
      repositories {
        maven { url 'https://jitpack.io' }  
      }
    }
    

    和这个

    compile 'com.github.aykuttasil:CallRecorder:1.5.3'
    

    【讨论】:

    • 权限呢,manifest文件中需要什么权限?
    • 我编辑帖子。在gradle中添加依赖
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多