Grabar llamadas telefónicas en el teléfono Android?

Lo intenté y uso el código siguiente para registrar llamadas salientes pero no lo hace.

@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; } } } 

Proporcione alguna buena solución para este problema.

5 Solutions collect form web for “Grabar llamadas telefónicas en el teléfono Android?”

Esto puede resolverse con el API nivel 8+. Configure su fuente de audio para la grabadora de medios como enlace ascendente de teléfono, enlace descendente o ambos.

 recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); //Voice downlink/ Uplink recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(AudioEncoder.AAC ); 

Pero tenga cuidado con la ley y los reglamentos antes de hacer esto.

  1. No puedes grabar llamadas telefónicas muy bien en Android, porque el audio en llamada no está disponible para las aplicaciones de SDK
  2. ACTION_ANSWER no es una Intent difusión

No puede grabar la llamada simplemente por el grabador de medios. Usted también tiene que cambiar la configuración del administrador de audio y poner el altavoz alto antes de iniciar la grabación y la fuente de audio seguirá siendo el mismo (mic). Así que intente editar el ajuste 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 puede grabar una llamada desde la API. Una solución común es conectar el altavoz y grabar desde el micrófono – en muchos dispositivos, el micrófono captará el altavoz adecuadamente con esta disposición.

Otra solución es hacer la grabación en un servicio de telefonía en alguna parte y enrutar las llamadas a través de ella.

Este código está funcionando para mí para grabar las llamadas de teléfono salientes , así que compruébalo aquí

  • GAE Debe llamar a uno de set * BlobStorage () primero
  • Android - fuera de error de memoria -Modificador de cadena agrandar buffer
  • TextToSpeech setLanguage no funciona?
  • ¿Es posible perder una conexión de base de datos SQLite?
  • Clase genérica que extiende la clase e implementa la interfaz
  • .execute no se puede resolver a un tipo - AsyncTask (Android)
  • Cómo incluir la dependencia de JAR en una biblioteca AAR
  • Crear TextView (en el código) con estilo pero sin atributos
  • Incorporación de ListView dentro de la Galería
  • Reconocimiento de voz Java como androides
  • Aceleración de hardware OOM androide nativo heap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.