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 solde.

La plate-forme Android fournit une application opérateur par défaut avec un comportement par défaut pour l'atténuation du trafic basé sur le signal de détection du portail captif. Elle offre également aux opérateurs et aux OEM la possibilité de personnaliser le comportement à faible coût et avec une grande flexibilité.

Exemples et source

L'application opérateur par défaut se trouve dans 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 décider de ne pas utiliser l'application par défaut et d'utiliser plutôt les privilèges UICC avec leur propre application opérateur autonome.

Introduction à l'implémentation

Signaux

Le framework Android est compatible avec la configuration d'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.

Action compatible

L'application opérateur par défaut définit un ensemble d'actions compatibles qui peuvent ê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 implémenter la prise en charge de signaux autres que ceux mentionnés dans cette section. Il peut également définir et configurer ses propres actions.

Mappages signal-action par défaut

Configurez les actions par défaut en suivant cette procédure :

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

    Les mappages signal-action par défaut sont définis dans CarrierConfigManager.java. Chacun des signaux compatibles 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 les 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 sur les 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 aucun test 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 l'appareil de l'opérateur lorsque le solde est insuffisant.
  2. Vérifiez la limitation de la redirection du trafic lorsque le solde est insuffisant et que le Wi-Fi est désactivé.
  3. Vérifiez que le trafic réseau est réduit et que l'interface utilisateur 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 solde est insuffisant.
  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 le solde est insuffisant.
  7. Validez les fonctions Wi-Fi, WFC et Bluetooth lorsque le solde est insuffisant.
  8. Désactivez le Wi-Fi. Vérifiez l'interface utilisateur de notification lorsque le solde est insuffisant et que le trafic de navigation ordinaire n'est pas redirigé vers le site Web d'enregistrement de l'opérateur. Vérifiez que lorsque vous cliquez sur le lien dans l'interface utilisateur de notification, le navigateur accède au site Web d'enregistrement de l'opérateur.
  9. Vérifiez que l'activation/la désactivation du mode Avion ne réinitialise pas l'état de 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 la réinsertion de la carte SIM lorsque le solde est insuffisant redémarre la redirection du trafic et obtient à nouveau la limitation du trafic réseau.
  12. Vérifiez que le redémarrage du téléphone réactive la redirection et rétablit la limitation du trafic et l'interface utilisateur de notification.
  13. Appuyez sur la notification "captiveportal". Vérifiez qu'une connexion réseau limitée est établie pour permettre à l'utilisateur d'ajouter du crédit.
  14. Vérifiez que le rechargement ou la réactivation du solde de la carte SIM entraîne la récupération du trafic réseau mobile et la disparition du lien de l'opérateur et de la notification indiquant que le solde est insuffisant.
  15. Effectuez un test de bon fonctionnement 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é, vous devez refléter ces personnalisations dans des tests unitaires dédiés.