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 :
- 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";
- 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é :
- Validez la notification de signal de solde insuffisant de l'opérateur télécom.
- Vérifiez la limitation de la redirection du trafic lorsque le compte est déséquilibré et que le Wi-Fi est désactivé.
- Vérifiez que le trafic réseau est désactivé et que l'UI de notification s'affiche lorsque le solde est insuffisant.
- Validez la fonction d'appel vocal/VoLTE lorsque le solde est insuffisant.
- Vérifiez que les appels vidéo sont bloqués lorsque le compte est à découvert.
- 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é.
- Validez les fonctions Wi-Fi, WFC et Bluetooth lorsque l'appareil est déséquilibré.
- 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.
- Vérifiez que l'activation/désactivation du mode Avion ne réinitialise pas l'état de la limitation du trafic.
- Vérifiez que le remplacement d'une carte SIM en service réinitialise l'état du trafic réseau.
- 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.
- 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.
- 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.
- 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.
- 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.