AudioSource.VOICE_CALL не работает в android 4.0, но работает в android 2.3

VOICE_CALL, VOICE_DOWNLINK ,VOICE_UPLINK  

не работает в android 4.0, но работает над Android 2.3 (фактическое устройство), я загрузил фиктивный проект для записи всего исходящего вызова, чтобы вы могли его увидеть для себя

http://www.mediafire.com/?img6dg5y9ri5c7rrtcajwc5ycgpo2nf

вам просто нужно изменить audioSource = MediaRecorder.AudioSource.MIC; на audioSource = MediaRecorder.AudioSource.VOICE_CALL; в строке 118 в TService.java

Если вы столкнетесь с какой-либо ошибкой, скажите мне

Любое предложение, связанное с ним, будет принято

Если какая-либо проблема сообщит мне

Заранее спасибо

Ответы

Ответ 1

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

Ответ 2

Попробуйте использовать MediaRecorder.AudioSource.VOICE_RECOGNITION. У меня была та же проблема - ASUS Transformer по умолчанию использует микрофон возле задней камеры, а звук в этом случае очень тихий. VOICE_CALL не работает на этом планшете, и я пробовал VOICE_RECOGNITION - в этом случае он использует передний микрофон, а громкость звука в порядке.

Ответ 3

ОК, в моем случае этот код (спасибо eyal!) работал на Samsung Galaxy Примечание 6:

String manufacturer = Build.MANUFACTURER;
if (manufacturer.toLowerCase().contains("samsung")) {
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
} else {
    recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
}

Ответ 4

вы пытаетесь добавить это, это может быть

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        mMediaRecorder.start();
    }
}, 1000);