java - samsung - como grabar una llamada sin aplicaciones
Grabar llamadas telefónicas en el teléfono Android? (5)
- No puede grabar llamadas telefónicas muy bien en Android, porque el audio durante la llamada no está disponible para las aplicaciones SDK
-
ACTION_ANSWER
not es unaIntent
transmisión
Lo probé y uso el siguiente código para grabar llamadas salientes, pero no es así.
@Override
public void onReceive(Context context, Intent intent)
{
this.context = context;
if (intent.getAction().equalsIgnoreCase(Intent.ACTION_ANSWER))
{
try
{
phonenbr = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.v("GDHGDHGHDGDHGDHGHDGHDGH", phonenbr);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(pathname);
recorder.prepare();
recorder.start();
recordstarted = 1;
telManager= (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
}
catch(Exception e)
{
e.printStackTrace();
}
final PhoneStateListener phoneListener = new PhoneStateListener()
{
@Override
public void onCallStateChanged(final int state, final String incomingNumber)
{
getTelephonyOverview(telManager);
}
};
telManager.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
public void getTelephonyOverview(final TelephonyManager telManager)
{
int callState = telManager.getCallState();
switch (callState)
{
case TelephonyManager.CALL_STATE_IDLE:
{
if (recordstarted==1)
{
recorder.stop();
recordstarted =0;
}
break;
}
}
}
Por favor proporcione alguna buena solución para este problema ...
Este código me funciona para grabar llamadas telefónicas salientes , así que por favor verifíquelo Here
Esto se puede resolver con el nivel API 8+. Configure su fuente de audio para la grabadora de medios como enlace ascendente, enlace descendente o ambos.
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); //Voice downlink/ Uplink
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(AudioEncoder.AAC );
Pero ten cuidado con la ley y las regulaciones antes de hacer esto.
No puede grabar la llamada simplemente por el grabador de medios. También debe cambiar la configuración del administrador de audio y poner el altavoz antes de iniciar la grabación y la fuente de audio seguirá siendo la misma (micrófono). Intente editar la configuración del administrador de audio
AudioManager audiomanager = (AudioManager)context.getSystemService("audio");
int i = audiomanager.getRouting(2);
audiomanager.setMode(2);
audiomanager.setMicrophoneMute(false);
audiomanager.setSpeakerphoneOn(true);
int j = audiomanager.getStreamMaxVolume(0);
if(j < 0)
j = 1;
int k = j / 2 + 1;
audiomanager.setStreamVolume(0, k, 0);
audiomanager.setRouting(2, 11, 15);
Parece que no puedes grabar una llamada desde la API. Una solución común es activar el altavoz y grabar desde el micrófono. En muchos dispositivos, el micrófono recogerá el altavoz adecuadamente con esta disposición.
Otra solución es hacer la grabación en un servicio de telefonía en algún lugar y enrutar las llamadas a través de él.