Запись звонка с использованием mediaRecorder audioSource VOICE_CALL - PullRequest
0 голосов
/ 18 февраля 2020

Поскольку разрешение VOICE_CALL предназначено только для системного приложения, как указано в документах ' Это разрешение зарезервировано для использования системными компонентами и не доступно сторонним приложениям. '

  1. Я попытался установить приложение как системное приложение, рутировав мой телефон, а затем поместив apk в '/ system / app /', и все прошло успешно.

[т.е. после перезагрузки телефон мое приложение было предварительно установлено как любое другое системное приложение]

манифест. xml
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="Manifest.permission.MANAGE_OWN_CALLS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" tools:ignore="ProtectedPermissions"/>
Код записи в Kotlin
recorder = MediaRecorder()
            recorder?.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION)
            recorder?.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS)
            recorder?.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC)
            recorder?.setOutputFile(filepath);
            recorder?.prepare();

Начать запись
recorder?.start();

ПРОБЛЕМА - Приложение вылетает, как только начинается запись и так как приложение должно быть системным приложением, я не знаю, как это сделать. Устранить проблему.

Цель приложения состоит в том, чтобы иметь возможность записывать пользовательские вызовы (обе стороны, т.е. вызывающий и вызываемый) в наилучшем возможном качестве. Я пробовал AudioSource как VOICE_COMMUNICATION & MI C, но в этих записях голос вызываемого абонента не был слышен или качество было плохим.

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