微信通话怎么录音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信通话怎么录音相关的知识,希望对你有一定的参考价值。

微信语音通话录音具体如下:
1、打开手机微信,并且打开与好友聊天语言通话,然后打开语音通话界面扬声器。
2、然后返回手机桌面,打开手机录音机,点击录音按钮开始录音,然后点击微信语音通话悬浮窗进入。
3、当微信语音通话完后,从手机顶部下拉出手机菜单栏,然后点击录音机进入。
4、进入录音机界面后,点击录音机暂停按钮,最后点击按钮边的√图标即可保存录音。
打开微信,在与好友的聊天对话框依次点击加号图标-视频通话-语音通话,然后返回手机桌面,打开录音机,点击红色圆圈开始录音,结束聊天后,下拉出通知栏选择录音机的消息通知,点击对勾保存录音即可。
参考技术A

微信通话录音方法:

工具/原料:华为p50、Harmonyos2.0.0、微信3.3.0.93。

方法/步骤:

1、打开语音聊天


打开微信好友聊天窗口后,点击右下角加号选择语音聊天切换页面。

2、打开快捷工具栏

打开语音聊天窗口后,手指轻按屏幕上方向下拖出快捷工具窗口。

3、开启屏幕录制


打开快捷工具之后,点击屏幕录制开始录制,并扩大通话音量即可。

android 10 (2019) 可以恢复语音通话录音吗?

【中文标题】android 10 (2019) 可以恢复语音通话录音吗?【英文标题】:Is voice call recording back with android 10 (2019)? 【发布时间】:2020-01-09 08:03:00 【问题描述】:

我对 Android 中的通话录音非常感兴趣。但正如你已经知道的那样,android 正式关闭了 android 9 中的语音通话记录。但就在 Android 10 发布之后(2019 年 9 月 3 日),在浏览他们的新发行说明时,我看到了以下页面,看起来很有希望通话录音。 https://developer.android.com/guide/topics/media/sharing-audio-input。 这里可以看到关于语音通话录音的以下内容。

语音通话+普通应用 如果 AudioManager.getMode() 返回的音频模式为 MODE_IN_CALL 或 MODE_IN_COMMUNICATION,则语音通话处于活动状态。

Android 根据以下规则共享输入音频:

通话始终接收音频。 如果应用程序是无障碍服务,则该应用程序可以捕获音频。 如果该应用是具有 CAPTURE_AUDIO_OUTPUT 权限的特权(预安装)应用,则该应用可以捕获语音通话。

要捕获语音呼叫的上行链路 (TX)、下行链路 (RX) 或两者,应用必须指定音频源 MediaRecorder.AudioSource.VOICE_UPLINK 或 MediaRecorder.AudioSource.VOICE_DOWNLINK,和/或设备 AudioDeviceInfo.TYPE_TELEPHONY。

因此,在阅读完本文后,我尝试在无障碍服务中捕获音频。这是我的代码。 无障碍服务

    public class MyAccessibilityService extends AccessibilityService 
FrameLayout mLayout;
public MyAccessibilityService() 


@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) 



@Override
public void onInterrupt() 



@Override
protected void onServiceConnected() 

    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    mLayout = new FrameLayout(this);
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
    lp.format = PixelFormat.TRANSLUCENT;
    lp.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
    lp.gravity = Gravity.TOP;
    LayoutInflater inflater = LayoutInflater.from(this);
    inflater.inflate(R.layout.action_bar, mLayout);
    wm.addView(mLayout, lp);


    configureStartRecording();
    configureStopRecording();


private void configureStartRecording() 
    Button startRecordingButton = mLayout.findViewById(R.id.btnStartRecording);
    startRecordingButton.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            CustomMediaRecorder recorder = CustomMediaRecorder.getInstance();
            File audiofile = null;
            String out = new SimpleDateFormat("dd-MM-yyyy hh-mm-ss").format(new Date());
            File sampleDir = new File(getExternalFilesDir(null), "/TestRecordingDasa1");
            if (!sampleDir.exists()) 
                sampleDir.mkdirs();
            
            String file_name = "Record";
            try 
                audiofile = File.createTempFile(file_name, ".amr", sampleDir);
             catch (IOException e) 
                e.printStackTrace();
            

            recorder.getRecorder().setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
            recorder.getRecorder().setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
            recorder.getRecorder().setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            recorder.getRecorder().setOutputFile(audiofile.getAbsolutePath());
            try 
                recorder.getRecorder().prepare();
             catch (IllegalStateException e) 
                e.printStackTrace();
             catch (IOException e) 
                e.printStackTrace();
            
            recorder.start(getApplicationContext());

            Log.i(MainActivity.LOG_PREFIX, String.format("Recording started. Saving to path: '%s'", audiofile.getAbsolutePath()));

        
    );


private void configureStopRecording() 
    Button button = mLayout.findViewById(R.id.btnStopRecording);
    button.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            CustomMediaRecorder recorder = CustomMediaRecorder.getInstance();
            recorder.stop();
        
    );

并且无障碍服务配置有以下配置

    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagDefault"
    android:canPerformGestures="true"
    android:canRetrieveWindowContent="true"

以下是我的观察。 1. 仍然无法设置 MediaRecorder.AudioSource.VOICE_DOWNLINK 和 VOICE_UPLINK 音频源。它会引发异常。 2. 当 MediaRecorder.AudioSource.VOICE_COMMUNICATION 和 MediaRecorder.AudioSource.MIC 在开始通话之前和断开通话之后被记录下麦克风输入。 因此,即使是无障碍服务,我们似乎也没有从调用中获得任何流。我在新更新到 android 10 的像素 3A xl 设备上尝试了这个。 所以在阅读完这篇文章之后,在我失败的试验之后,我有以下问题......

    android 10 的这一新行为真正意味着什么。无障碍服务在这里有什么意义?哪个我试过但已经失败了? 我在配置无障碍服务时是否做错了什么? 如果这种方法不能解决通话录音问题,Android 10 是否也缺少通话录音功能?或者在android 10中有没有其他方法可以做到这一点。因为我只对android 10中的通话录音感兴趣。

简而言之,我只想知道 android 10 是否恢复了语音通话记录...

【问题讨论】:

对于 Play 商店中的应用,Google 限制了无障碍服务的使用。只允许那些旨在帮助残疾人的应用程序。通话录音很可能超出范围。因此,这样的应用程序将通过侧载安装。 我有android 9 PKQ1(小米米9T),通话设置中有通话录音选项。记录一切/自定义/未知数字。 @Robert,是的,那么这句话的真正含义是什么。 “通话总是收到音频。如果它是无障碍服务,该应用程序可以捕获音频。”如您所知,Android 完全阻止了 Android 9 的通话录音。所以只是想澄清一下这种新行为。 @okkko,是的,可以使用系统应用程序。但想知道如何使用非系统应用程序来实现。 可以使用无障碍服务在 android 10 中记录通话。 Cube 通话记录器正在这样做。您是否尝试过在无障碍服务中启用您的服务?您的帖子中缺少该步骤。 【参考方案1】:

首先感谢您的代码。我尝试使用相同的代码,我使用了MediaRecorder.AudioSource.VOICE_RECOGNITION,我在三星 S10、Oneplus 7 和 Real Me 中都进行了通话录音。

【讨论】:

能否提供完整的源代码。因为它不适合我。提前致谢。

以上是关于微信通话怎么录音的主要内容,如果未能解决你的问题,请参考以下文章

微信录音功能怎么弄?

怎么保存电话录音

电话录音怎么保存起来

录音怎么保存到手机

微信jssdk怎么获取录音时间

企业微信在哪里挂语音电话啊