CellBroadcast

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

CellBroadcast モジュールは、OEM の繰り返しの作業を減らし (Android エコシステム全体の断片化を減らし、エンド ユーザーに一貫した動作を提供します)、CellBroadcast 関連の要件のキャリア テストと認証を合理化するのに役立ちます (OEM はコードを変更できないため)。 )。このモジュールは更新可能です。つまり、通常の Android リリース サイクル以外で機能の更新を受け取ることができます。

パッケージ形式

CellBroadcast モジュールは、以下のサービスとアプリで構成されています。

  • CellBroadcastServiceサービスは、CellBroadcast SMS のデコード、Wireless Emergency Alert (WEA) 3.0 のジオフェンシング、メッセージの重複チェック、アプリへのメッセージのブロードキャストをサポートしています。これは、定義されたエリア内の複数の携帯電話ユーザーに同時にメッセージを配信するように設計された、1 対多のジオターゲティングおよびジオフェンス メッセージング サービスです。このサービスは、 ETSI GSM 委員会である3GPPによって定義され、電気通信標準の一部です。

  • CellBroadcastReceiverアプリは、緊急および非緊急のアラート (黄色や大統領のアラートなど) を処理し、通信事業者および地域の規制に基づいてエンド ユーザーに情報を提示する既定のシステム アプリです。

CellBroadcast メッセージ フロー

次の図は、CellBroadcast のメッセージ フローを示しています。

CellBroadcastReceiver メッセージ フロー

図 1. CellBroadcastReceiver メッセージ フロー

  1. Radio Interface Layer (RIL) は、CDMA/GSM CellBroadcast SMS についてInBoundSMSHandlerに通知します。

  2. フレームワークは、CellBroadcast SMS を CBS モジュールに転送して、着信メッセージを解析および処理します。

  3. メッセージが処理された後、CellBroadcastService はインテントをシステムのデフォルトの CellBroadcastReceiver アプリに転送します。

  4. CellBroadcastReceiver アプリは、ユーザーにメッセージを表示します。

モジュール形式

CellBroadcastService と CellBroadcastReceiver アプリは単一のAPEXファイル ( com.android.cellbroadcast ) に含まれており、Android 11 以降を実行しているデバイスで使用できます。モジュールにはpackage/app/CellBroadcastReceiverにコードが含まれ、既存のフレームワーク クラスがpackages/modules/CellBroadcastServiceに移行されます。

モジュールの依存関係

CellBroadcast モジュールは、安定した@SystemApi ( @hide API なし) のみを使用してフレームワークと対話し、次の静的ライブラリに依存します。

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

ランタイム リソース オーバーレイ (RRO)を使用して構成をカスタマイズできます。

権限の構成

CellBroadcast モジュールは、プラットフォーム署名ではなく Google 署名で署名されています。つまり、モジュールは署名権限にアクセスできなくなります。代わりに、Android 11 は、CellBroadcast モジュール内で新しい署名権限com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORYを定義します。モジュール内のパッケージのみが同じキーで署名されているため、アクセス許可を取得できます。この権限により、CellBroadcastReceiver アプリは CellBroadcastService 内のデータベースに完全にアクセスできます。

プラットフォームは、緊急警報の履歴にアクセスするために、デフォルトのシステム SMS アプリにandroid.permission.READ_CELL_BROADCASTS実行時アクセス許可を付与します。

CellBroadcast モジュールの統合

このセクションでは、CellBroadcast モジュールを統合する方法について説明します。

設定との統合

設定アプリで CellBroadcast 設定を統合する場所を決定できます (エンド ユーザーは、[設定] > [アプリと通知] > [詳細設定] > [緊急アラート] から CellBroadcast 設定ページにアクセスします)。設定アプリから CellBroadcastReceiver アプリを起動するには、パッケージ名com.android.cellbroadcastreceiverで次の設定構成を変更します。

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

メッセージング アプリとの統合

アプリ リンクをメッセージング アプリに統合して、CellBroadcast メッセージ履歴を開くことができます。 Android Messaging アプリでは、これはSettings > Advanced > Emergency alertに統合されています。独自のメッセージング アプリにリンクを統合するには、メッセージング アプリでパスを定義し、CellBroadcast モジュールのコンポーネント名をcom.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivityとして構成します。

SMS 受信トレイとの統合

ランタイム リソース オーバーレイを使用して次の構成をオーバーライドすることで、デフォルトのメッセージング アプリで CellBroadcast メッセージを表示できるようになります。

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

パーミッションの付与は Ce​​llBroadcast モジュールの範囲外であるため、 AppOpsManager.OP_WRITE_SMSパーミッションを CellBroadcast モジュールに付与して、エンドツーエンドのサポートを提供する必要があります。 AOSP リファレンス実装については、このSmsApplication.javaパッチを参照してください。

CellBroadcastReceiver アプリの起動

CellBroadcastReceiver アプリには、次の起動ポイントがあります。

  • 設定アプリのメニュー。

  • CellBroadcast メッセージ履歴にリンクするメッセージ アプリなどのアプリ (サードパーティ アプリを含む)。

  • (オプション) OEM によって追加された Android ホーム画面からの起動アイコン。詳しくは、起動アイコンの追加を参照してください。

CellBroadcastReceiver アプリの設定

次のスクリーンショットは、CellBroadcastReceiver アプリの設定メニューを示しています。

CellBroadcastReceiver アプリの設定メニュー

図 2. CellBroadcastReceiver アプリの設定メニュー

緊急速報履歴

図 3.緊急警報履歴画面

起動アイコンの追加

アプリ ランチャーや独自の起動アイコンから、CellBroadcast メッセージ履歴へのアクセスを有効にできます。

  • アプリ ランチャーからメッセージ履歴にアクセスできるようにするには、RRO を使用して次の構成をオーバーライドします。

    <item type="bool" name="show_message_history_in_launcher" />
    
  • AOSP の既定のアイコンをオーバーライドするには、RRO を使用して次の構成をオーバーライドします。

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

CMAS シークレット コードの有効化

CMAS シークレット コード*#*#CMAS#*#* (ダイヤル パッド上の*#*#2627#*#* ) を有効にするには、ダイヤラー アプリで*#*#の形式の特殊なダイヤラー コードをリッスンする必要があります。 code #*#*を作成し、パブリック メソッドsendDialerSpecialCodeを使用してコードを処理します。

エリア情報要件: チャンネル 50

チャネル 50 は、キャリアがエリア関連の情報をブロードキャストするための特別なチャネルです (南アフリカの MTN を除く)。このチャネルの場合、ブロードキャスト メッセージはポップアップ ダイアログまたは通知にはなりません。代わりに、ブロードキャスト メッセージは [設定] メニューの SIM ステータス、またはステータス バー (たとえば、郵便番号の表示) に表示されます。

Android CellBroadcastService 実装は、ブロードキャスト チャネル 50 情報を取得するために、設定および SysUI アプリのセル ブロードキャスト サービスで次の API をサポートします。これを実装するには、次の手順を実行します。

  • ブロードキャストandroid.telephony.action.AREA_INFO_UPDATEDを登録し、RRO を介してレシーバー パッケージ名config_area_info_receiver_packagesをオーバーライドします。

  • CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACEにバインドします。

設定アプリと SysUI アプリは CellBroadcast モジュールの範囲外であるため、変更を SystemUI または設定アプリに実装して、エンド ツー エンドのサポートを提供する必要があります。リファレンス実装については、 CellBroadcastService 設定アプリを参照してください。

カスタマイズ

CellBroadcast モジュールのソース コードを直接変更することはできませんが、ランタイム リソース オーバーレイ (RRO)を使用してパラメーターを有効 (または無効) にすることができます (たとえば、通知の色とダイアログのサイズをカスタマイズできます)。 CellBroadcast モジュールで使用されるパラメーターのデフォルト値をオーバーライドするには、ターゲット パッケージ名をcom.android.cellbroadcastreceiverに変更します。加えて:

  • オーバーレイ可能な構成のリストについては、 overlayable.xmlを参照してください。

  • 実装例については、AOSP のRROSampleTestAppを参照してください。

実装に UI 文字列翻訳リソースがない場合、または翻訳が期待どおりでない場合は、RRO を使用して翻訳リソースをオーバーライドするか、Google 翻訳チームと協力して文字列翻訳を CellBroadcast モジュールにアップストリームすることができます。翻訳リソースをオーバーライドする場合、Google はこれらの文字列をoverlayable.xmlで公開して、オーバーライドできるようにする必要があります。 UI のカスタマイズにさらに構成が必要な場合は、 CellBroadcast サポート グループに連絡してください。

データの移行

Android 11 には、CellBroadcast モジュールにアップグレードするデバイスのアプリ データ (ユーザー設定や緊急アラートの履歴を含む) を保持および移行するメカニズムである、従来の CellBroadcast アプリが含まれています。 CellBroadcast モジュールを使用する Android 実装では、データ移行のためにビルドに従来の CellBroadcast アプリを含める必要があります。実装でカスタム CellBroadcast ソリューションを使用する場合は、データを保持するために CellBroadcastContentProvider APK を定義する必要があります (後続のリリースで従来のセル ブロードキャスト APK を安全に削除できます)。

CellBroadcast モジュールを使用するようにアップグレードされたデバイスでは、モジュールは明確に定義されたcellbroadcast-legacyオーソリティを通じて AOSP LegacyCellBroadcastApp または OEM 定義の CellBroadcastContentProvider APK からデータを取得します。

OEM 定義の CellBroadcastContentProvider APK の使用

CellBroadcastContentProvider APK を定義する場合、APK はこれらの仕様に従う必要があります。

  • APK は、 cellbroadcast-legacy権限を持つContentProviderオブジェクトを介してデータベースとSharedPreferencesのコンテンツのみを表示するヘッドレスAPK であり、サードパーティ アプリからはアクセスできません。

  • APK は OEM によって開発および所有され、OEM は非表示の API スキーマを引き続きホストできます。

SharedPreferencesを CellBroadcast モジュールに移行するには、CellBroadcastContentProvider APK が次のパラメーターを持つContentProvider.call ) メソッドをサポートする必要があります。

  • 権限: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • メソッド: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • 引数: @SystemAPI CellBroadcast.Preference

    これは、CellBroadcast モジュールでサポートされている共有設定キーのリストです。データはContentProvider.callメソッドのSharedPreferencesから取得されます。

メッセージ履歴を CellBroadcast モジュールに移行するには、CellBroadcastContentProvider APK が次のパラメーターを使用してContentProvider.queryメソッドをサポートする必要があります。

  • 権限: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI .クエリ列には、CellBroadcast モジュールでサポートされているメッセージ プロパティが一覧表示されます。 ContentProvider.queryメソッドのデータを (データベースから) 取り込みます。

CellBroadcastContentProvider の参照実装については、 CellBroadcastContentProvider,参照してLegacyCellBroadcastContentProvider

テスト

Android 互換性テスト スイート (CTS) は、アプリに依存するシステム API の機能を検証します。 CellBroadcast モジュールunit tests/testappspを実行することもできます。

OEM がデバイスの CMAS シークレット コードを有効にしている場合、そのデバイスは次の機能を使用してデバッグ モードをサポートできます。

  • テスト アラートは、オン/オフのトグルで [その他のアラート] の下にグループ化されます。

  • 履歴には、重複したメッセージや別の言語のメッセージなど、受信されたが表示されなかったすべてのメッセージが含まれます。

  • メッセージには、シリアル番号、メッセージ ID、有効期限など、使用可能なすべてのパラメーターが表示されます。

デバッグ モードを有効にするには、ダイヤラーで*#*#CMAS#*#*をダイヤルします。

コンタクト

CellBroadcast モジュールの詳細または質問については、 CellBroadcast サポート グループにお問い合わせください。