J'essaye de réparer l'enregistrement d'appel dans mon application depuis la mise à jour de lolipop dans mon Galaxy S5. Comme base, j'utilise google exemple de projet d'ici: Sample.Enregistrement d'appel avec OpenSL
Et ceci est la partie principale du code:
AudioRecorder :: AudioRecorder (SampleFormat * sampleFormat, SLEngineItf slEngine): freeQueue_ (nullptr), recQueue_ (nullptr), devShadowQueue_ (nullptr), callback_ (nullptr)
SLresult result;
sampleInfo_ = *sampleFormat;
SLAndroidDataFormat_PCM_EX format_pcm;
ConvertToSLSampleFormat(&format_pcm, &sampleInfo_);
gFp = fopen("/storage/emulated/0/file.pcm", "w");
// configure audio source
SLDataLocator_IODevice loc_dev = {SL_DATALOCATOR_IODEVICE, SL_IODEVICE_AUDIOINPUT,
SL_DEFAULTDEVICEID_AUDIOINPUT, NULL};
SLDataSource audioSrc = {&loc_dev, NULL};
// configure audio sink
SLDataLocator_AndroidSimpleBufferQueue loc_bq = {
SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE,
DEVICE_SHADOW_BUFFER_QUEUE_LEN};
SLDataSink audioSnk = {&loc_bq, &format_pcm};
// create audio recorder
// (requires the RECORD_AUDIO permission)
const SLInterfaceID id[2] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
SL_IID_ANDROIDCONFIGURATION};
const SLboolean req[2] = {SL_BOOLEAN_FALSE, SL_BOOLEAN_FALSE};
result = (*slEngine)->CreateAudioRecorder(slEngine,
&recObjectItf_,
&audioSrc,
&audioSnk,
2,
id, req);
SLASSERT(result);
// Configure the voice recognition preset which has no
// signal processing for lower latency.
SLAndroidConfigurationItf inputConfig;
result = (*recObjectItf_)->GetInterface(recObjectItf_,
SL_IID_ANDROIDCONFIGURATION,
&inputConfig);
SLuint32 presetValue = SL_ANDROID_RECORDING_PRESET_VOICE_COMMUNICATION;
result = (*inputConfig)->SetConfiguration(inputConfig,
SL_ANDROID_KEY_RECORDING_PRESET,
&presetValue,
sizeof(SLint32));
SLASSERT(result);
result = (*recObjectItf_)->Realize(recObjectItf_, SL_BOOLEAN_FALSE);
SLASSERT(result);
result = (*recObjectItf_)->GetInterface(recObjectItf_, SL_IID_RECORD, &recItf_);
SLASSERT(result);
result = (*recObjectItf_)->GetInterface(recObjectItf_, SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
&recBufQueueItf_);
SLASSERT(result);
result = (*recBufQueueItf_)->RegisterCallback(recBufQueueItf_, bqRecorderCallback, this);
SLASSERT(result);
devShadowQueue_ = new AudioQueue(DEVICE_SHADOW_BUFFER_QUEUE_LEN);
assert(devShadowQueue_);
Et voici mon problème ce code ne pas enregistrer autre côté de l'appel, dans le fichier de sortie, je ne peux pas entendre la voix du microphone. J'ai essayé de changer les paramètres mais avec le même résultat. Quelqu'un sait ce que je fais mal?
Bonjour @ Rafal-DeptA, avez-vous une solution pour le même ou pour l'enregistrement d'appel dans Android? Toute aide sera vraiment appréciable. Merci d'avance. –
Bonjour @ChanchalShelar pour résoudre ce problème Vous devez écrire du code en C++ en utilisant Android NDK. –
Merci, @ rafal-depta pour l'indice, une référence possible? –