Diffusion cellulaire

Le module CellBroadcast réduit les efforts répétitifs pour les OEM (ce qui réduit la fragmentation dans l'écosystème Android et fournit un comportement cohérent aux utilisateurs finaux) et aide à rationaliser les tests et la certification des opérateurs pour les exigences liées à CellBroadcast (car le code ne peut pas être modifié par les OEM). ). Ce module est modifiable, ce qui signifie qu'il peut recevoir des mises à jour de fonctionnalités en dehors du cycle de publication normal d'Android.

Format du colis

Le module CellBroadcast comprend le service et l'application suivants.

  • Le service CellBroadcastService prend en charge le décodage SMS CellBroadcast, le géorepérage pour l'alerte d'urgence sans fil (WEA) 3.0, les contrôles de duplication de messages et la diffusion de messages vers des applications. Il s'agit d'un service de messagerie un-à-plusieurs géociblé et géolocalisé, conçu pour transmettre des messages à plusieurs utilisateurs de téléphones mobiles, dans une zone définie, en même temps. Le service est défini par le comité ETSI GSM, 3GPP , et fait partie des normes de télécommunication.

  • L'application CellBroadcastReceiver est une application système par défaut qui gère les alertes d'urgence et non urgentes (telles que les alertes orange et présidentielles) et présente les informations aux utilisateurs finaux en fonction des réglementations de l'opérateur et régionales.

Flux de messages CellBroadcast

La figure suivante montre le flux de messages CellBroadcast.

Flux de messages CellBroadcastReceiver

Figure 1. Flux de messages CellBroadcastReceiver

  1. La couche d'interface radio (RIL) informe InBoundSMSHandler d'un SMS CDMA/GSM CellBroadcast.

  2. Le framework transmet le SMS CellBroadcast au module CBS pour analyser et traiter le message entrant.

  3. Une fois le message traité, CellBroadcastService transmet l'intention à l'application CellBroadcastReceiver par défaut du système.

  4. L'application CellBroadcastReceiver affiche le message à l'utilisateur.

Format des modules

Les applications CellBroadcastService et CellBroadcastReceiver sont incluses dans un seul fichier APEX ( com.android.cellbroadcast ), disponible pour les appareils exécutant Android 11 ou version ultérieure. Le module inclut du code dans package/app/CellBroadcastReceiver et migre les classes de framework existantes vers packages/modules/CellBroadcastService .

Dépendances des modules

Le module CellBroadcast interagit avec le framework en utilisant uniquement @SystemApi stable (pas d'API @hide ) et dépend des bibliothèques statiques suivantes.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

Vous pouvez personnaliser la configuration à l'aide de superpositions de ressources d'exécution (RRO) .

Configuration des autorisations

Le module CellBroadcast est signé avec une signature Google au lieu d'une signature de plateforme, ce qui signifie que le module perd l'accès aux autorisations de signature. Au lieu de cela, Android 11 définit la nouvelle autorisation de signature com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY à l'intérieur du module CellBroadcast ; seuls les packages du module peuvent obtenir l'autorisation car ils sont signés avec la même clé. Cette autorisation permet à l'application CellBroadcastReceiver d'avoir un accès complet à la base de données dans CellBroadcastService.

La plate-forme accorde l'autorisation d'exécution android.permission.READ_CELL_BROADCASTS à l'application SMS du système par défaut pour accéder à l'historique des alertes d'urgence.

Intégration du module CellBroadcast

Cette section décrit comment intégrer le module CellBroadcast.

Intégration avec les paramètres

Vous pouvez décider où intégrer les paramètres CellBroadcast dans l'application Paramètres (les utilisateurs finaux accèdent à la page des paramètres CellBroadcast depuis Paramètres > Applications et notifications > Avancé > Alerte d'urgence ). Pour lancer l'application CellBroadcastReceiver à partir de l'application Paramètres, modifiez les configurations de paramètres suivantes avec le nom du package com.android.cellbroadcastreceiver .

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

Intégration avec les applications de messagerie

Vous pouvez intégrer un lien d'application dans les applications de messagerie pour ouvrir l'historique des messages CellBroadcast. Dans l'application de messagerie Android, cela a été intégré dans Paramètres > Avancé > Alerte d'urgence . Pour intégrer un lien dans votre propre application de messagerie, définissez le chemin dans l'application de messagerie et configurez le nom du composant pour le module CellBroadcast comme com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Intégration avec la boîte de réception SMS

Vous pouvez activer l'affichage des messages CellBroadcast dans l'application de messagerie par défaut en remplaçant la configuration suivante à l'aide d'une superposition de ressources d'exécution.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Étant donné que l'octroi d'autorisations dépasse la portée du module CellBroadcast, vous devez accorder l'autorisation AppOpsManager.OP_WRITE_SMS au module CellBroadcast pour fournir une prise en charge de bout en bout. Pour une implémentation de référence AOSP, reportez-vous à ce correctif SmsApplication.java .

Lancement de l'application CellBroadcastReceiver

L'application CellBroadcastReceiver comporte les points de lancement suivants.

  • Le menu de l'application Paramètres.

  • Une application (y compris des applications tierces) telle qu'une application de messages qui renvoie à l'historique des messages CellBroadcast.

  • (Facultatif) Une icône de lancement depuis l'écran d'accueil Android ajoutée par l'OEM. Pour plus de détails, voir Ajout d'une icône de lancement .

Paramètres de l'application CellBroadcastReceiver

Les captures d'écran suivantes montrent le menu des paramètres de l'application CellBroadcastReceiver.

Menu des paramètres de l'application CellBroadcastReceiver

Figure 2. Menu des paramètres de l'application CellBroadcastReceiver

Historique des alertes d'urgence

Figure 3. Écran de l'historique des alertes d'urgence

Ajout d'icônes de lancement

Vous pouvez activer l'accès à l'historique des messages CellBroadcast à partir du lanceur d'applications et via vos propres icônes de lancement.

  • Pour activer l'accès à l'historique des messages à partir du lanceur d'applications, remplacez la configuration suivante à l'aide d'un RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Pour remplacer l'icône par défaut AOSP, remplacez la configuration suivante à l'aide d'un RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

Activation du code secret CMAS

Pour activer le code secret CMAS, *#*#CMAS#*#* ( *#*#2627#*#* sur le clavier), une application de numérotation doit écouter le code de numérotation spécial sous la forme de *#*# code #*#* et gérez le code à l’aide de la méthode publique sendDialerSpecialCode .

Exigence d'informations sur la zone : Channel 50

Le canal 50 est un canal spécial permettant aux opérateurs de diffuser des informations relatives à la zone (à l'exception de MTN en Afrique du Sud). Pour cette chaîne, les messages diffusés n'entraînent pas de boîte de dialogue contextuelle ou de notification. Au lieu de cela, les messages diffusés apparaissent dans l'état SIM du menu Paramètres ou dans la barre d'état (par exemple, affichant un code postal).

L'implémentation Android CellBroadcastService prend en charge les API suivantes dans le service de diffusion cellulaire pour les applications Paramètres et SysUI afin d'obtenir les informations de diffusion du canal 50. Pour mettre en œuvre cela, procédez comme suit :

  • Enregistrez la diffusion android.telephony.action.AREA_INFO_UPDATED et remplacez le nom du package du récepteur config_area_info_receiver_packages via un RRO.

  • Lier à CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Étant donné que les applications Paramètres et SysUI sortent du champ d'application du module CellBroadcast, vous devez implémenter vos modifications dans SystemUI ou l'application Paramètres pour fournir une prise en charge de bout en bout. Pour une implémentation de référence, reportez-vous à l' application CellBroadcastService Settings .

Personnalisation

Vous ne pouvez pas modifier directement le code source du module CellBroadcast, mais vous pouvez utiliser des superpositions de ressources d'exécution (RRO) pour activer (ou désactiver) des paramètres (par exemple, vous pouvez personnaliser la couleur des notifications et les dimensions des boîtes de dialogue). Pour remplacer les valeurs par défaut des paramètres utilisés dans le module CellBroadcast, modifiez le nom du package cible en com.android.cellbroadcastreceiver . En outre:

  • Pour obtenir la liste des configurations superposables, reportez-vous à overlayable.xml .

  • Pour un exemple d’implémentation, reportez-vous à RROSampleTestApp dans AOSP.

Si l'implémentation manque de ressources de traduction de chaînes de l'interface utilisateur ou si les traductions ne répondent pas à vos attentes, vous pouvez remplacer les ressources de traduction à l'aide d'un RRO ou travailler avec l'équipe de traduction de Google pour amont les traductions de chaînes vers le module CellBroadcast. Si vous remplacez les ressources de traduction, Google doit exposer ces chaînes dans overlayable.xml pour permettre le remplacement. Si vous avez besoin de plus de configurations pour la personnalisation de l'interface utilisateur, contactez le groupe d'assistance CellBroadcast .

Migration des données

Android 11 inclut une ancienne application CellBroadcast, qui est un mécanisme permettant de conserver et de migrer les données de l'application (y compris les paramètres utilisateur et les historiques d'alertes d'urgence) pour les appareils mis à niveau vers le module CellBroadcast. Les implémentations Android qui utilisent le module CellBroadcast doivent inclure l'ancienne application CellBroadcast dans leur version pour la migration des données. Si votre implémentation utilise une solution CellBroadcast personnalisée, vous devez définir un APK CellBroadcastContentProvider pour préserver les données (vous pouvez supprimer en toute sécurité l’APK de diffusion cellulaire hérité dans une version ultérieure).

Sur les appareils mis à niveau pour utiliser le module CellBroadcast, le module récupère les données de l'AOSP LegacyCellBroadcastApp ou de l'APK CellBroadcastContentProvider défini par l'OEM via l'autorité cellbroadcast-legacy bien définie.

Utilisation d'un APK CellBroadcastContentProvider défini par l'OEM

Lors de la définition d’un APK CellBroadcastContentProvider, l’APK doit suivre ces spécifications.

  • L'APK est un APK sans tête qui affiche uniquement le contenu de sa base de données et SharedPreferences via un objet ContentProvider avec l'autorité cellbroadcast-legacy , et n'est pas accessible aux applications tierces.

  • L'APK est développé et détenu par l'OEM, où l'OEM peut continuer à héberger son schéma API caché.

Pour migrer SharedPreferences vers le module CellBroadcast, l'APK CellBroadcastContentProvider doit prendre en charge la méthode ContentProvider.call ) avec les paramètres suivants :

  • Autorité : @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Méthode : @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg : @SystemAPI CellBroadcast.Preference

    Il s'agit d'une liste des clés de préférence partagées prises en charge pour le module CellBroadcast. Les données proviennent de SharedPreferences pour la méthode ContentProvider.call .

Pour migrer l'historique des messages vers le module CellBroadcast, l'APK CellBroadcastContentProvider doit prendre en charge la méthode ContentProvider.query avec les paramètres suivants :

  • Autorité : @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . Les colonnes de requête répertorient les propriétés de message prises en charge pour le module CellBroadcast. Récupère les données (de votre base de données) pour la méthode ContentProvider.query .

Pour une implémentation de référence pour CellBroadcastContentProvider, reportez-vous à LegacyCellBroadcastContentProvider .

Essai

La suite de tests de compatibilité Android (CTS) vérifie la fonctionnalité des API système dépendantes des applications. Vous pouvez également exécuter unit tests/testappsp du module CellBroadcast .

Si l'OEM a activé le code secret CMAS pour un appareil, cet appareil peut prendre en charge le mode débogage avec les fonctionnalités suivantes.

  • Les alertes de test sont regroupées sous Autres alertes avec une bascule marche/arrêt.

  • L'historique inclut tous les messages reçus mais non affichés, tels que les messages en double ou les messages dans une autre langue.

  • Les messages affichent tous les paramètres disponibles, y compris le numéro de série, l'ID du message et la date d'expiration.

Pour activer le mode débogage, composez *#*#CMAS#*#* sur le numéroteur.

Contact

Pour plus de détails ou des questions sur le module CellBroadcast, contactez le groupe d'assistance CellBroadcast .