我想制作一个 Android 应用程序,可以在后台记录传入和传出呼叫作为 kotlin 中的服务,并在一天中的特定时间,它通过 API 将所有录音发送到服务器。我对此进行了研究,发现只是使用
Device Policy Manager
和 Telephoney Manager
但互联网上对此的了解不多。那么您可以帮助我提供任何文章、文档或教程吗?
目前Google还没有给出解决方案。谷歌已在其最新版本的 Android 操作系统中弃用了通话录音功能。早些时候,这是可能的,我尝试过各种方法,但当我尝试录制通话时,我只能听到无声音频。当使用 Google 的电话应用程序时,它只允许该应用程序使用麦克风和其他功能,而不允许任何其他应用程序压制并获取该硬件访问权限。
但实际上有两个技巧可以做到这一点。
该项目有源代码吗?
首先创建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'