Поскольку разрешение VOICE_CALL предназначено только для системного приложения, как указано в документах ' Это разрешение зарезервировано для использования системными компонентами и не доступно сторонним приложениям. '
- Я попытался установить приложение как системное приложение, рутировав мой телефон, а затем поместив 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, но в этих записях голос вызываемого абонента не был слышен или качество было плохим.