¿Cómo saber si estoy en una llamada en Android?

Quiero saber si estoy en una llamada.

Si estoy en una llamada, entonces inicie el servicio (la parte de servicio es clara). ¿Cómo hago esto?

Mientras asistía a la llamada que necesito para llamar al servicio … No sé cómo hacer esto? ¿Alguna ayuda?

Necesitas receptor de emisión …

En manifestar declarar receptor de …

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

También declarar uso-permiso …

 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

La clase de receptor de emisión …

 package xy; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; public class PhoneStateBroadcastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE); } } 

Y una clase para personalizar el oyente del estado del teléfono …

 package xy; import android.content.Context; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; public class CustomPhoneStateListener extends PhoneStateListener { //private static final String TAG = "PhoneStateChanged"; Context context; //Context to make Toast if required public CustomPhoneStateListener(Context context) { super(); this.context = context; } @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: //when Idle ie no call Toast.makeText(context, "Phone state Idle", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_OFFHOOK: //when Off hook ie in call //Make intent and start your service here Toast.makeText(context, "Phone state Off hook", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_RINGING: //when Ringing Toast.makeText(context, "Phone state Ringing", Toast.LENGTH_LONG).show(); break; default: break; } } } 

TelephonyManager.getCallState () devuelve uno de CALL_STATE_IDLE, CALL_STATE_OFFHOOK, CALL_STATE_RINGING

Si esto se ajusta a sus necesidades, es mucho menos código que la solución más completa de Pied Piper.

Sólo se puede saber que la llamada está llegando pero no se puede modificar esto. 🙁 ver esto por qué la versión 2.3 de android no hava android.permission.MODIFY_PHONE_STATE? Y cuál es la solución para esto?

  • TelephonyManager devuelve null para el número IMEI: ¿qué puede causar esto?
  • Obtener el número de teléfono programatically en android
  • Recuperar el número de teléfono de la llamada entrante en Android
  • Obtener la velocidad actual de Internet (móvil y Wifi) con Android
  • Obtener los detalles del último registro de llamadas después de finalizar la llamada utilizando el receptor de difusión
  • ¿Por qué getNetworkOperator no es confiable para CDMA?
  • Cómo averiguar qué SIM recibió SMS en Dual SIM Android Device
  • Cómo no disparar PhoneStateListener.CALL_STATE_RINGING si ya está hablando y un segundo llamante está llamando
  • Obtener código de país
  • ¿Cómo puedo enviar un archivo pregrabado (wav) durante una llamada de voz?
  • ¿Qué información proporciona Baseband en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.