Android не может записывать входящие звонки с чистым голосом - PullRequest
1 голос
/ 27 апреля 2019

Я могу записывать свой голос только из этого кода, а не против поворотов.

И я использовал 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 Ответ

1 голос
/ 27 апреля 2019

Вы не можете.Нет, если вы не системное приложение (для этого вам нужно установить свою собственную ОС или получить права root).VOICE_CALL требуется разрешение CAPTURE_AUDIO_OUTPUT, которое является системным разрешением - обычные приложения не могут его использовать.

Как это делают другие приложения в магазине Play?Они используют микрофон и надеются, что вывод вызова будет достаточно громким, чтобы его услышать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...