gpt4 book ai didi

Android 通话录音 来电未录音

转载 作者:IT老高 更新时间:2023-10-28 23:00:29 29 4
gpt4 key购买 nike

我正在使用自动通话记录器应用程序,我可以使用 MediaRecorder.AudioSource.VOICE_CALL 在 android 6 以下记录语音通话,从 android 6 开始,无法使用 VOICE_CALL 录制语音通话。我设法使用 MediaRecorder.AudioSource.MIC 进行录制,但这里传入的语音没有被录制,我想在正常模式下录制语音通话,而不是在扬声器开启模式下录制。请帮助我。 (我试过小米红米4a(android 6),不行)。

 myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
myRecorder.setMaxDuration(60 * 60 * 1000);
AudioManager audiomanager =
(AudioManager)getSystemService(AUDIO_SERVICE);
audiomanager.setMode(2);

编辑:权限没有问题。

更新:任何人都知道如何强制另一个流到 MIC 音频源。这需要原生安卓代码。请帮我解决这个问题 Refer this question for more details on routing audio

最佳答案

您需要使用 ndk。以下是需要完成的功能示例。

加载 libmedia.so 和 libutils.so

int load(JNIEnv *env, jobject thiz) {
void *handleLibMedia;
void *handleLibUtils;
int result = -1;
lspr func = NULL;

pthread_t newthread = (pthread_t) thiz;

handleLibMedia = dlopen("libmedia.so", RTLD_NOW | RTLD_GLOBAL);
if (handleLibMedia != NULL) {
func = dlsym(handleLibMedia, "_ZN7android11AudioSystem13setParametersEiRKNS_7String8E");
if (func != NULL) {
result = 0;
}
audioSetParameters = (lasp) func;
} else {
result = -1;
}

handleLibUtils = dlopen("libutils.so", RTLD_NOW | RTLD_GLOBAL);
if (handleLibUtils != NULL) {
fstr = dlsym(handleLibUtils, "_ZN7android7String8C2EPKc");
if (fstr == NULL) {
result = -1;
}
} else {
result = -1;
}

cmd = CM_D;

int resultTh = pthread_create(&newthread, NULL, taskAudioSetParam, NULL);

return result;}

函数集参数

int setParam(jint i, jint as) {
pthread_mutex_lock(&mt);

audioSession = (int) (as + 1);

kvp = "input_source=4";
kvps = toString8(kvp);

cmd = (int) i;

pthread_cond_signal(&cnd);
pthread_mutex_unlock(&mt);

return 0;}

任务音频设置参数

void *taskAudioSetParam(void *threadid) {
while (1) {
pthread_mutex_lock(&mt);
if (cmd == CM_D) {
pthread_cond_wait(&cnd, &mt);
} else if (audioSetParameters != NULL) {
audioSetParameters(audioSession, kvps);
}
pthread_mutex_unlock(&mt);
}
}

有一个库和一个使用示例https://github.com/ViktorDegtyarev/CallRecLib

关于Android 通话录音 来电未录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45231232/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com