Personnaliser le comportement de l'appareil pour les utilisateurs en déséquilibre

Les appareils Android sans solde de données autorisent le trafic réseau, ce qui oblige les opérateurs et les entreprises de télécommunications à mettre en œuvre des protocoles d'atténuation. Android implémente une solution générique qui permet aux opérateurs et aux entreprises de télécommunications d'indiquer quand un appareil n'a plus de crédit.

La plate-forme Android fournit une application opérateur par défaut avec un comportement par défaut pour l'atténuation du trafic en fonction du signal de détection du portail captif. Il permet également aux opérateurs et aux OEM de personnaliser le comportement à moindre coût et avec une grande flexibilité.

Exemples et source

L'application opérateur par défaut se trouve à l'adresse platform/frameworks/base/packages/CarrierDefaultApp/..

Implémentation

L'application opérateur par défaut est configurée pour offrir une meilleure expérience aux opérateurs non configurés. Les opérateurs peuvent utiliser ce comportement par défaut. Ils peuvent également remplacer le comportement par défaut en ajoutant des mappages signal-action au fichier XML de configuration de l'opérateur. Ils peuvent choisir de ne pas utiliser l'application par défaut et d'utiliser plutôt les droits UICC avec leur propre application opérateur autonome.

Introduction à l'implémentation

Signals

Le framework Android permet de configurer des actions pour les signaux paramétrés suivants :

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Ces signaux se trouvent dans frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Actions autorisées

L'application opérateur par défaut définit un ensemble d'actions compatibles pouvant être mappées sur des signaux compatibles. Elles sont définies dans CarrierActionUtils.java :

    public static final int CARRIER_ACTION_ENABLE_METERED_APNS               = 0;
    public static final int CARRIER_ACTION_DISABLE_METERED_APNS              = 1;
    public static final int CARRIER_ACTION_DISABLE_RADIO                     = 2;
    public static final int CARRIER_ACTION_ENABLE_RADIO                      = 3;
    public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION          = 4;
    public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5;
    public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS          = 6;

Remarque : Si un opérateur implémente sa propre application autonome, il peut prendre en charge des signaux autres que ceux mentionnés dans cette section. Ils peuvent également définir et configurer leurs propres actions.

Mappages signal-action par défaut

Pour configurer les actions par défaut, procédez comme suit :

  1. Définissez une clé pour les signaux compatibles.

    Les mappages par défaut du signal à l'action sont définis dans CarrierConfigManager.java. Chacun des signaux acceptés possède une clé :

    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY =
    "carrier_default_actions_on_dcfailure_string_array";
  2. Associez des actions par défaut aux clés de signal.

    Les ID d'action par défaut sont associés aux clés de signal :

    sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY,                new String[]{
                    "1, 4"
                    //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION
                    // 4: CARRIER_ACTION_DISABLE_METERED_APNS
             });
    

    Le framework de téléphonie mappe ces actions aux signaux correspondants.

Remplacer les actions par défaut

Vous pouvez définir des actions personnalisées pour les signaux compatibles dans le fichier XML de configuration de l'opérateur en associant des ID d'action aux clés de signal (définies dans CarrierConfigManager.java). Par exemple, le mappage suivant désactive les APN mesurés et affiche une notification de portail lors de la redirection :

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

Le framework de téléphonie charge ces configurations et remplace les actions par défaut.

Validation

Il n'existe pas de tests CTS, CTS Verifier ni GTS pour cette fonctionnalité.

Utilisez ces tests de validation manuelle pour valider la fonctionnalité :

  1. Validez la notification de signal de solde insuffisant de l'opérateur télécom.
  2. Vérifiez la limitation de la redirection du trafic lorsque le compte est déséquilibré et que le Wi-Fi est désactivé.
  3. Vérifiez que le trafic réseau est désactivé et que l'UI de notification s'affiche lorsque le solde est insuffisant.
  4. Validez la fonction d'appel vocal/VoLTE lorsque le solde est insuffisant.
  5. Vérifiez que les appels vidéo sont bloqués lorsque le compte est à découvert.
  6. Lorsque le Wi-Fi est activé, vérifiez que l'utilisateur peut continuer à naviguer sur le Web et que le trafic de navigation n'active pas le trafic réseau lorsque l'état du compte est déséquilibré.
  7. Validez les fonctions Wi-Fi, WFC et Bluetooth lorsque l'appareil est déséquilibré.
  8. Désactivez le Wi-Fi. Vérifiez l'interface utilisateur de la notification de solde insuffisant et assurez-vous que le trafic de navigation ordinaire n'est pas redirigé vers le site Web d'enregistrement de l'opérateur télécom. Vérifiez que le navigateur est redirigé vers le site Web d'enregistrement de l'opérateur télécom lorsque vous cliquez sur le lien dans l'interface utilisateur de notification.
  9. Vérifiez que l'activation/désactivation du mode Avion ne réinitialise pas l'état de la limitation du trafic.
  10. Vérifiez que le remplacement d'une carte SIM en service réinitialise l'état du trafic réseau.
  11. Vérifiez que le fait de réinsérer la carte SIM déséquilibrée redémarre la redirection du trafic et permet à nouveau d'obtenir la limitation du trafic réseau.
  12. Vérifiez que le redémarrage du téléphone réactive la redirection et rétablit l'UI de notification et de limitation du trafic.
  13. Appuyez sur la notification "captiveportal". Vérifiez qu'une connexion à un réseau restreint est établie pour permettre à l'utilisateur d'ajouter des crédits.
  14. Vérifiez que la recharge ou la réactivation de la carte SIM entraîne la reprise du trafic du réseau mobile et la disparition du lien vers l'opérateur et de la notification d'absence de solde.
  15. Test de cohérence après la récupération du service de données.

L'application par défaut fournit quelques exemples de tests unitaires et un script pour les exécuter (voir tests/runtest.sh). Lorsque vous implémentez une version ou un comportement personnalisés, vous devez refléter ces personnalisations dans des tests unitaires dédiés.