Android запись входящих и исходящих звонков

Я пытаюсь понять, есть ли способ записывать входящие и исходящие звонки на телефонах Android 2.2 и выше?

Клиент хочет записывать звонки агентов, которые он делает клиентам, чтобы впоследствии его можно было использовать для заполнения некоторого материала. Вместо того чтобы заставлять клиента ждать во время разговора, он хочет сделать это позже.

Возможно ли это и какие API мне нужно использовать?

4 ответа

Решение

Прежде всего, вы должны быть осторожны с записью звонков, поскольку в зависимости от страны существуют законодательные требования.

Вот запись в блоге о том, как записывать звук с помощью MediaRecorder.

Я не пробовал записывать телефонные звонки, но в MediaRecorder AudioSource есть опция для:

  • VOICE_CALL - Голосовой вызов восходящей линии связи + источник звука нисходящей линии связи
  • VOICE_DOWNLINK - Источник звука голосовой связи по нисходящей линии связи (Rx)
  • VOICE_UPLINK - источник аудио голосовой связи по восходящей линии связи (Tx)

Пока работают опции аудиоисточника, вам будет хорошо идти.

Я использую микрофон для записи звонков для лучшей поддержки и совместимости.

MediaRecorder recorder = new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(your_desired_folder_path);
 try {
    recorder.prepare();
} catch (java.io.IOException e) {
    recorder = null;
    return;
}
recorder.start();

Я использую микрофон для записи звука телефона, а также использую диспетчер телефонии, чтобы найти состояние вызова.

private MediaRecorder recorder;

  recorder = new MediaRecorder();
        try {
            recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
            recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            recorder.setAudioSamplingRate(44100);
            recorder.setOutputFile(your_desired_files_absoulte_path);
} catch (Exception e) {
e.printstacktrace ;
}

после этого вы можете легко начать запись где угодно

recorder.prepare();
recorder.start();

и после завершения записи вы также можете легко остановить запись

recorder.stop();
recorder.reset();
recorder.release();

Запись вызовов программно ошибочна на Android версии 4 и установлена ​​только для одной стороны (даже если это возможно) по соображениям безопасности. Многие производители имеют свои собственные аппаратные реализации для записи звонков. В моем приложении был случай, когда мне нужно было записать конференц-вызов, нажав и удерживая кнопку, чтобы добавить новый вызов. В тот момент, когда я нажал кнопку удержания, запись звонка прекратилась, потому что отключился режим вызова.

Для записи просто нажмите кнопку меню во время вызова в телефоне Android, он будет хранить разговор в формате AMR и в корневом каталоге SD-карты максимум 20 минут разговора.

Другие вопросы по тегам