Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Compatible con aplicaciones de llamadas de terceros

Android 9 proporciona API para brindar un mejor soporte a las aplicaciones de llamadas de terceros (3P). 3P aplicaciones de llamada normalmente se basan en las API de telefonía como el PHONE_STATE emisión a coexistir con llamadas telefónicas portador. Como consecuencia, las aplicaciones de llamadas 3P deben dar prioridad a las llamadas del operador y, a menudo, recurrir al rechazo silencioso de las llamadas entrantes en la aplicación o finalizar una llamada en curso para dar paso a una llamada del operador.

Las API de Android 9 admiten escenarios de llamadas simultáneas entre aplicaciones 3P y llamadas de operador. Esto hace posible, por ejemplo, recibir una llamada 3P entrante mientras se encuentra en una llamada de operador. El marco asume la responsabilidad de garantizar que la llamada del operador se mantenga cuando el usuario participa en la llamada 3P.

En Android 9, se anima a aplicaciones que llaman 3P para implementar el autogestionada ConnectionService API. Para obtener más información sobre cómo construir una aplicación llamada usando esta API, consulte Construir una aplicación de llamadas .

El autogestionado ConnectionService API también ofrece a los desarrolladores la oportunidad de opt-in para tener llamadas en su aplicación en el registro de llamadas del sistema (ver EXTRA_LOG_SELF_MANAGED_CALLS ). Según los requisitos de la definición de documento de compatibilidad de Android (CDD) (sección 7.4.1.2), debe asegurarse de que sus pantallas de marcador / aplicación de teléfono estas entradas del registro de llamadas y muestra el nombre de la aplicación llamando 3P donde se originó la llamada (para un ejemplo de cómo la aplicación AOSP marcador cumple con este requisito, consulte las entradas del registro de llamadas desde 3P aplicaciones que llaman ).

Las aplicaciones son responsables de establecer CAPABILITY_SUPPORT_HOLD y CAPABILITY_HOLD en las conexiones de sus aplicaciones. Sin embargo, es posible que una aplicación no pueda retener una llamada en algunas circunstancias. El marco incluye disposiciones para resolver este tipo de casos.

Escenarios

Debe modificar su aplicación de marcador para manejar los siguientes escenarios.

Manejo de llamadas entrantes que desconectan una llamada en curso

En un escenario en el que hay una llamada 3P en curso (por ejemplo, en una llamada SuperCaller) que no admite la retención, y el usuario recibe una llamada móvil (por ejemplo, a través de su operador FooCom), su aplicación Dialer / Phone debe indicarle al usuario que responder la llamada de red móvil finalizará la llamada 3P en curso.

Esta experiencia de usuario es importante ya que una aplicación de llamadas 3P puede tener una llamada en curso que el marco no puede realizar. Responder a una nueva llamada móvil hace que se desconecte la llamada 3P en curso.

Consulte la interfaz de usuario a continuación para ver un ejemplo:

Llamada entrante desconectando una llamada 3P en curso
Figura 1. Llamada entrante que desconecta una llamada en curso 3P

Su aplicación marcador puede comprobar si una llamada entrante hace otra llamada a ser desconectado por el control de los extras de llamadas . Asegúrese de que EXTRA_ANSWERING_DROPS_FG_CALL se establece en TRUE , y EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME se establece en el nombre de la aplicación cuya llamada se desconecta al contestar la llamada entrante móvil.

Entradas de registro de llamadas de aplicaciones de llamadas 3P

Los desarrolladores de aplicaciones que llaman 3P pueden optar por tener llamadas en su aplicación registra en el registro de llamadas del sistema (consulte EXTRA_LOG_SELF_MANAGED_CALLS ). Esto significa que es posible tener entradas en el registro de llamadas que no sean para llamadas de redes móviles.

Cuando la aplicación del marcador AOSP muestra las entradas del registro de llamadas relacionadas con una aplicación de llamadas 3P, el nombre de la aplicación donde se realizó la llamada se muestra en el registro de llamadas, como se ilustra a continuación:

Entrada de registro de llamadas con la aplicación de llamadas 3P
Figura 2. entrada del registro de llamadas con el nombre de la aplicación 3P pidiendo a la aplicación de marcador

Para determinar el nombre de una aplicación asociada con una entrada de registro de llamadas, utilice el PHONE_ACCOUNT_COMPONENT_NAME y PHONE_ACCOUNT_ID columnas en el proveedor de registro de llamadas para crear una instancia de PhoneAccountHandle , que identifica la fuente de una entrada de registro de llamadas. Consulta TelecomManager para obtener los detalles de la PHONEACCOUNT.
Para determinar si una entrada del registro de llamadas es de una aplicación llamada 3P, cheque PhoneAccount capacidades para ver si CAPABILITY_SELF_MANAGED es conjunto.

El getLabel método de la regresado PhoneAccount devuelve el nombre de la aplicación asociada a una entrada de registro de llamadas desde la aplicación llamando 3P.

Validación

Para probar que su dispositivo admite aplicaciones de llamadas 3P, use la aplicación de prueba Telecomm, que implementa la API ConnectionService autogestionada. La aplicación se encuentra en /packages/services/Telecomm/testapps/ .

  1. Cree la aplicación de prueba desde la raíz de su repositorio de origen de Android utilizando:

    mmma packages/services/Telecomm/testapps/

  2. Instalar el apk acumulación usando adb install -g -r <apk path> . Luego, se agrega un ícono de muestra autoadministrada a su lanzador.

  3. Toque el icono para abrir la aplicación de prueba.

Manejo de llamadas entrantes que desconectan una llamada en curso

Siga estos pasos para verificar que una llamada entrante desconecta una llamada 3P en curso.

Aplicación de prueba para aplicaciones de llamadas 3P
Figura 3. aplicación de prueba con ejemplos de implementaciones de la API ConnectionService autogestionado
  1. Desactive la opción que se puede sujetar.
  2. Toque saliente para iniciar una nueva llamada saliente de la muestra.
  3. Toque el botón activo para realizar la llamada vaya activo.
  4. Llame al número de teléfono del dispositivo bajo prueba con otro teléfono. Esto invoca el escenario en el que su marcador recibe el nombre de una aplicación, que tendrá su llamada desconectada.
  5. Cuando haya terminado, pulse el botón de desconexión de la aplicación de prueba.

Entradas de registro de llamadas de aplicaciones de llamadas 3P

Después de completar los pasos anteriores, la aplicación de prueba debería haber registrado una llamada en el registro de llamadas del sistema. Para confirmar que el dispositivo registra las llamadas de las aplicaciones de llamadas 3P, abra su aplicación de marcador y confirme que la llamada aparece en el registro de llamadas del sistema.