当前位置: 首页 > 知识库问答 >
问题:

通话记录器无法在android 4.1.2上工作

刘成礼
2023-03-14

电话录音器在大多数设备上录音,但在samsung grand上不工作。意味着在呼入或呼出时开始录音,并记录来自所选来源(麦克风等)的声音,但其他设备将停止录音(这可能是录音机无法在通话中从该来源获取数据的原因(Android的用户隐私问题))。

为此,我尝试了音频记录和媒体记录,但问题仍未解决。

    private MediaRecorder recorder = null;
    recorder.setAudioSource(1);
    recorder.setOutputFormat(1);
    recorder.setAudioEncoder(1);
    recorder.setOutputFile(path);
    recorder.prepare();
    recorder.start();

我也试过audiorecord,但它对这个问题不起作用。

共有1个答案

公西财
2023-03-14

我将发布一个代码question.This代码在我的应用程序中运行良好

public void onStart(Intent intent,int startId) {

    mSampleFile = null;
    if (mSampleFile == null) {

        String newFolder = "/Recording";

        String extStorageDirectory = Environment
                .getExternalStorageDirectory().toString();

        File myNewFolder = new File(extStorageDirectory + newFolder);

        if (!myNewFolder.exists()) {

            myNewFolder.mkdir();

        }

        try {

            if (myNewFolder != null) {

                mSampleFile = File.createTempFile(SAMPLE_PREFIX,
                        SAMPLE_EXTENSION, myNewFolder);
            }
        } catch (IOException e) {

        }
    }

    if (mSampleFile != null) {
        SharedPreferences mysharedprefs8 = getSharedPreferences(mypref32,
                MODE_MULTI_PROCESS);
        String status = mysharedprefs8.getString("pass", "AMR_NB");

        mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
        if (status.equalsIgnoreCase("AMR")) {
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
        } else if (status.equalsIgnoreCase("MPEG")) {
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        } else if (status.equalsIgnoreCase("3GPP")) {
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        } else {
            mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
        }
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        try {

            mRecorder.setOutputFile(mSampleFile.getAbsolutePath());

        } catch (IllegalStateException e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
        mRecorder.setMaxDuration(600000);
        try {

            mRecorder.prepare();

        } catch (IllegalStateException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        mRecorder.start();
        mRecorder.setOnInfoListener(new OnInfoListener() {

            @Override
            public void onInfo(MediaRecorder mr, int what, int extra) {
                // TODO Auto-generated method stub

                try {
                    mRecorder.stop();
                    mRecorder.reset();
                    mRecorder.release();

                } catch (Exception e) {

                }

            }
        });

    }
 类似资料:
  • 我有通话录音应用程序,可以正常工作,直到5.0的呼入和呼出,但音频录制在android 6.0上不起作用,请帮我解决这个问题。我使用媒体记录器,用于麦克风和VOICE_CALL选项,但结果是一样的?

  • 将<code>MediaRecorder</code>音频源设置为上述任何一个都不起作用。可能是制造商禁用了通话记录。但像ACR记录器这样的应用程序是如何工作的呢? 他们在使用NDK吗?我正在尝试构建一个类似的应用程序,但最终得出的结论是我必须使用NDK。任何建议都将不胜感激。 呼叫记录器-ACR

  • 我得到一个错误,我不明白,不能找到任何帮助完整的信息: 请求的资源上不存在Access-Control-Allow-Origin标头。因此不允许访问Origin的https:*******' 。响应具有HTTP状态代码401。

  • 关于通话记录     可确认通话记录。显示的图标可能因拨打或接听状态而异。 选择通话记录时显示的图标 已接来电 显示已接听的电话。 未接来电 显示未接听的电话。 已拨电话 显示电话的拨打记录。 语音消息 显示已接收的语音消息。 新的语音消息 仅于新接收语音消息时显示。 登录要求 仅于接收联系人名单的登录要求时显示。 提示 未确认的记录,会在(通话记录)的 (未处理事项)显示。 使用PSP-2000

  • 我正在开发一个应用程序“Call Recorder”,我已经授予了所有权限,但它并没有记录来电者的声音。我正在使用MediaRecorder。

  • 问题内容: 我想通知任何传入和传出语音呼叫的代码。我需要掌握以下所有内容: 如果是来电或去电 拨打的号码或来电显示的电话号码 通话时长,或者如果错过了通话 如果电话号码与电话的联系人列表中的某人匹配,如果我可以获得更多的联系信息,特别是联系人姓名,那也将是一件很圆滑的事。 通话结束后,我需要我的代码来获取这些信息。也许我只是没有在寻找正确的术语,但是我很难找到如何实现此目标的任何示例。 如果有人可