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); }
}
- (A) Smack devuelve el error "service-unavailable (503)" en login ()
- Pase ArrayList desde el módulo android a núcleo en libgdx
- Uso de un adaptador de otra clase / actividad
- Cree un nuevo TextView mediante programación y luego muéstrelo debajo de otro TextView
- Android: ¿Cómo ejecutar asynctask de diferentes archivos de clase?
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.
- Android - NullPointerException: almacenamiento == null
- Generar un Javadoc para mi proyecto de Android
- Causado por: java.lang.NoClassDefFoundError: Clase no encontrada usando el cargador de clase de arranque; No hay rastro de la pila disponible
- Esta visión no está restringida
- Desarrollo de Android: ¿Cómo usar onKeyUp?
- Manera correcta de disponer de pantallas en Libgdx
- definiendo constantes como #define que se pueden usar en sentencias switch en java
- Extraer datos de múltiples fragmentos desde un solo botón
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.
- No puedes grabar llamadas telefónicas muy bien en Android, porque el audio en llamada no está disponible para las aplicaciones de SDK
-
ACTION_ANSWER
no es unaIntent
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 clipPath equivalente para hardware acelerado Ver
- Dibujar y gancho guestures sin detener app underneith