Подтвердить что ты не робот

Как записать голос и записать вызов в Android?

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

4b9b3361

Ответ 1

Да Можно просто сделать это

final MediaRecorder callrecorder = new MediaRecorder();
callrecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
callrecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
callrecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

callrecorder.setOutputFile(filepath);

try {
    callrecorder.prepare();
} catch (IllegalStateException e) {
    System.out.println("An IllegalStateException has occured in prepare!");
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {

    //throwing I/O Exception
    System.out.println("An IOException has occured in prepare!");
    // TODO Auto-generated catch block
    e.printStackTrace();
}

try {
    callrecorder.start();
} catch(IllegalStateException e) {
    e.printStackTrace();
    //Here it is thorowing illegal State exception
    System.out.println("An IllegalStateException has occured in start!");
}

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

callrecoder.stop();

Ответ 3

Вы не можете записать телефонный разговор на Android. Потоки находятся в операционной системе нижнего уровня и недоступны на уровне приложений. К сожалению.

Ответ 4

Насколько я знаю, все приложения, которые записывают голосовые вызовы на Android, имеют одинаковую проблему: они работают только на некоторых телефонах, а на других телефонах вы можете слышать только одну сторону разговора. Некоторые из этих приложений пытаются решить эту проблему, записав также с микрофона.

Если у вас есть права root на вашем телефоне Android, я считаю, что есть приложения, которые работают лучше, потому что они имеют доступ к потокам нижнего уровня, как указал Эммануил в своем ответе.

Ответ 5

Я не знаю, возможно ли это, но насколько API идет

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

эта строка хорошо компилируется в моем коде, где рекордер является объектом MediaRecorder, и я когда-то работал над таким проектом, но позже проект был сброшен, поэтому не уверен, что он работает или не работает

Ответ 6

API, по-видимому, там, но разработчики отключили свою радиопрограмму от возможности сделать это.

Ответ 7

Зависит от телефона к телефону например Вы не можете записывать вызов на телефоны nexus и motorola, так как они не позволяют записывать с микрофона, пока вызов не будет выполнен. Но одна и та же запись с микрофона во время разговора работает на большинстве устройств Samsung и Galaxy.

Ответ 8

Я боюсь узнать, что андроид не имеет собственного api для записи голосовых вызовов. даже потоки абстрагируются в операционной системе и недоступны в прикладном уровне, как заявил Emmanuel hase. Я считаю это серьезной ошибкой Android Devs. если у стены безопасности есть одно крошечное отверстие, это не будет безопасно. Таким образом, даже если дроид ограничивает или пытается ограничивать, существуют другие телефоны, где можно иметь такую ​​функциональность. даже пользовательское ядро ​​дроида может иметь такую ​​функциональность. Это только делает пользователей-дроидов ничтожными.