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

时间:2019-04-27 05:36:45

标签: 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;
        }
    }
}

任何建议!

1 个答案:

答案 0 :(得分:1)

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

Play商店中的其他应用如何实现?他们使用了麦克风,希望通话的声音足够大,可以接听。