Android无法录制清晰语音的来电

标签 android

我只能从这个代码中记录我的声音,而不是反对轮流。

我使用 MediaRecorder.AudioSource.VOICE_CALL 而不是 MediaRecorder.AudioSource.MIC

但我仍然只能听到自己的声音。

这是我的代码

public class RecorderService extends IntentService {

    private Context mContext;
    private MediaRecorder recorder;
    static final String TAGS = "RecorderService";

    private String phoneNumber;

    public RecorderService() {
        super("RecorderService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
    }

    @Override
    public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
        Log.e(TAGS, "Started!");
        mContext = getApplicationContext();

        phoneNumber = intent.getStringExtra("number");
        Log.e(TAGS, "Calling Number : " + phoneNumber);

        recorder = new MediaRecorder();
        startRecording();

        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e(TAGS, "Stopped!");
        stopRecording();
    }

    private void startRecording() {
        Log.e(TAGS, "Recording Started");

        File file = new File(Environment.getExternalStorageDirectory()
                + File.separator
                + "My Records"
                + File.separator);

        recorder.reset();
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
        recorder.setOutputFile(file.getAbsolutePath() + "record.mp3");

        try {
            recorder.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        recorder.start();
    }

    private void stopRecording() {
        Log.e(TAGS, "Recording Stopped");
        if (recorder != null) {
            recorder.stop();
            recorder.reset();
            recorder.release();
            recorder = null;
        }
    }
}

任何建议!

最佳答案

你不能。除非您是系统应用程序(您需要安装自己的自定义操作系统或成为 root 用户才能获取),否则不会。 VOICE_CALL 需要 CAPTURE_AUDIO_OUTPUT 权限,这是系统权限 - 普通应用无法使用它。

Play 商店中的其他应用程序如何做到这一点?他们使用麦克风,并希望通话的输出声音足够大以便接听。

关于Android无法录制清晰语音的来电,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55877597/

相关文章:

java - 为每个项目列出多个 TextView

android - 我们什么时候需要非持久性偏好?

android - 单击 GCM 通知未在 Android Kitkat 中打开所需的 Activity

java - 从相机/图库加载时图像位图会旋转 [Android 9]

android EMFILE(打开的文件太多)

android - 更改选项卡背景颜色并删除选项卡之间的分隔线

java - PopupDialog 内的 ListView 为 null

android - viewBinding为什么让XML根全屏

java - Android 滑动标签 - 以编程方式设置标签的宽度

java - 如何在 Eclipse/Android 中备份项目/代码