7

我正在做一个在 android 中录制 VOIP 通话的项目,我没有找到任何解决方案,有很多应用程序支持手机上的 VOIP 录音。我找不到任何教程和帮助。Cube Call Recorder是提供此功能的应用程序之一,但我不知道该怎么做。我通过使用 android MediaRecorder开始录制然后启动了 whatsapp 呼叫对其进行了测试,因此其他人无法听到我的声音。通话后,我只检查了我的声音是否保存在录音中。

作为一项研究,我对一些 apk 进行了逆向工程,我发现它们在 apk 中使用了可访问性权限。

<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" />

我不知道我需要了解什么我才能知道 VOIP 呼叫就像BroadcastReceiver一样来来去去。

然后,我将了解如何记录通话。

4

1 回答 1

1

我已经找到了答案

首先授予可访问性权限并拥有此类

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.Intent;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;

public class AccessAudio extends AccessibilityService {
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
Log.d("","gf");
    }

    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();

        AccessibilityServiceInfo accessibilityServiceInfo = new AccessibilityServiceInfo();
        accessibilityServiceInfo.flags = 1;
        accessibilityServiceInfo.eventTypes = -1;
        accessibilityServiceInfo.feedbackType = 16;
        setServiceInfo(accessibilityServiceInfo);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onInterrupt() {

    }
}

之后你可以使用

mediaRecorder = new MediaRecorder();
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_RECOGNITION);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setOutputFile(AudioSavePathInDevice.getPath());
        mediaRecorder.prepare();
        mediaRecorder.start();
于 2020-10-12T20:06:35.847 回答