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.

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í

  • Android drawable ic_menu_star no funciona?
  • IPackageStatsObserver no se puede resolver con un tipo (Android)
  • Cómo borrar datos de una matriz JSON
  • Cómo depurar el módulo de la biblioteca android en Android Studio?
  • ¿Hay una manera fácil de tener el aviso de derechos de autor añadido automáticamente por android studio?
  • Androide. OnEditorAction nunca llamado
  • Error al analizar xml: prefijo sin consolidar con el SDK de Facebook
  • ActionBar con el icono y el texto en modo retrato
  • ¿Cómo esbozar imágenes de selección con intenciones Espresso?
  • No se puede usar FakeHttpLayer de Robolectric (NullPointerException al llamar a getFakeHttpLayer)
  • Asynch hilo que detiene el hilo principal de interfaz de usuario
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.