- changed title to Решить проблему записи телефонных разговоров с линии (голоса обоих собеседников) на устройствах Sony с версии Android 6 и выше
- edited description
Решить проблему записи телефонных разговоров с линии (голоса обоих собеседников) на устройствах Sony с версии Android 6 и выше
На устройствах Sony до Android 6 запись телефонных разговоров производилась с источником записи «MediaRecorder.AudioSource.VOICE_CALL» после обновления на Android 6 запись не может производиться с линии. В логах пишет, что нужно разрешение «android.permission.CAPTURE_AUDIO_OUTPUT», но оно не может быть получено для сторонних приложений.
Сообщение из логов при попытке сделать запись с линии:
[ 05-10 15:33:46.729 375: 4179 E/ ] Request requires android.permission.CAPTURE_AUDIO_OUTPUT
Эту проблему можно как то обойти т.к. несколько приложений в Google Play это сделали без использования Root прав.
Из логов я выяснил, что эти приложения сначала начинают запись с источника записи "MediaRecorder.AudioSource.Mic" (c микрофона) затем как то переключают источник записи на "MediaRecorder.AudioSource.VOICE_CALL" (на линию):
Сообщение в логах (установка источника записи на Mic):
D/audio_hw_primary: in_set_parameters: enter: kvpairs=input_source=1;routing=-2147483644
Сообщение в логах (установка источника записи на VOICE_CALL):
D/audio_hw_primary: in_set_parameters: enter: kvpairs=input_source=4;routing=-2147483584;format=1
Я предполагаю что они это делают нативным кодом т.к. стандартными методами мне это сделать не удалось. Я попытался установить параметры через AudioMаnager:
AudioManager aManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
aManager.setParameters("kvpairs=input_source=4;routing=-2147483584;format=1");
но в логах вижу, что вызывается функция adev_set_parameters а не in_set_parameters:
05-12 11:41:02.462 375-17526/? D/audio_hw_primary: adev_set_parameters: enter: kvpairs=input_source=4;routing=-2147483584;format=1
В интернете нашел исходники этого файла: https://android.googlesource.com/platform/hardware/qcom/audio/+/7c57a3a8ab8d526c074bcc373e8cba2fa06b4f23/hal/audio_hw.c
У меня есть предположения как решить этот вопрос но я в этом не уверен: можно добавить audio_hw.c в приложение и использовать его через NDK (вызвать функцию in_set_parameters).
Comments (12)
-
reporter -
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - changed status to resolved
-
reporter - edited description
-
Добрый день, столкнулся с подобной проблемой и не могу найти решение. Если можно, скажите свое решение.
-
reporter Здравствуйте, Александр! Можем с вами пообщаться! Мой скайп: viktor_degtyarev
-
reporter Опубликовал исходный код для записи телефонных разговоров для Android 6. Не забывайте добавлять star :))) https://github.com/ViktorDegtyarev/CallRecLib
I published the source for recording calls for android 6. There is a library and an example of use https://github.com/ViktorDegtyarev/CallRecLib
- Log in to comment