Detectando la llamada saliente y el evento de hangup de llamada en android

Tengo un requisito en el que quiero detectar dos tipos de eventos relacionados con las llamadas en Android

  1. Siempre que una llamada saliente se hace, mi aplicación debe llegar a saber esto junto con el número llamado
  2. Cuando la llamada es colgada (debido al éxito / falla), mi aplicación debe llegar a conocer esto junto con la razón de hangup

¿Es esto posible en Android? Soy nuevo en la plataforma Android, por lo tanto, necesitará algunos buenos tutoriales detallados para guiarme a través de este

Gracias

Debe crear un BroadcastReceiver:

public class CallReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_RINGING)) { // Phone number String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); // Ringing state // This code will execute when the phone has an incoming call } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals( TelephonyManager.EXTRA_STATE_OFFHOOK)) { // This code will execute when the call is answered or disconnected } } } 

Usted debe registrar su aplicación para escuchar estas intenciones en el manifiesto:

 <receiver android:name=".CallReciever" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter> </receiver> 

Hay una solución más simple que utiliza sólo TelephonyManager y PhoneStateListener.You ni siquiera tiene que registrar un BroadcastReceiver.

 public class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { //Hangup case TelephonyManager.CALL_STATE_IDLE: break; //Outgoing case TelephonyManager.CALL_STATE_OFFHOOK: break; //Incoming case TelephonyManager.CALL_STATE_RINGING: break; } } } 

Y para registrarlo:

 public static void registerListener(Context context) { ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).listen(new MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE); } 

Necesita crear un receptor para las siguientes acciones de intención:

  1. Llamada saliente – ACTION_NEW_OUTGOING_CALL
  2. Interrupción de llamada – ACTION_PHONE_STATE_CHANGED
  • Transferencia de llamadas de un dispositivo a otro a través de Bluetooth
  • Implementación del método de devolución de llamada en Android
  • ¿Hacer llamadas usando telnet de un emulador de Android a otro?
  • Mostrar la información en medio de la llamada
  • Cómo definir devoluciones de llamada en Android?
  • Cómo configurar el tono de timbre con RingtoneManager.ACTION_RINGTONE_PICKER?
  • Añadir PhoneStateListener
  • ¿Cómo puedo seleccionar un contacto del registro de llamadas?
  • Android: agregar tono de llamada al contacto no funciona en un contacto que acabo de agregar, pero funciona en un contacto que agregué en la sincronización anterior
  • Quiero leer registros de llamadas en el android
  • Interfaz de devolución de llamada simulada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.