Android 6.0(Marshmallow)では、電話アプリに統合されたビジュアル ボイスメール(VVM)のサポートが実装され、互換性のある携帯通信会社の VVM サービスを最小限の構成で電話アプリに接続できるようになりました。ビジュアル ボイスメールを使用すると、通話を発信せずにボイスメールを簡単に確認できます。ユーザーは、受信トレイに似たインターフェースを使用してメッセージの一覧を表示し、任意の順序で確認して、必要に応じて削除できます。
Android 7.0 では、ビジュアル ボイスメールに次の設定パラメータが追加されました。
KEY_VVM_PREFETCH_BOOLEAN
によってコントロールされるボイスメールのプリフェッチKEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
でのデータ接続が必要かどうかのコントロール- ボイスメールの音声文字変換の取得
- ボイスメールの容量の取得
このページでは、提供される機能についての概要、携帯通信会社による統合と実装方法について説明します。
ビジュアル ボイスメール(VVM)クライアント
Android 6.0 以降には OMTP VVM クライアントが含まれています。適切に設定すると Carrier VVM サーバーに接続し、Android オープンソース プロジェクト(AOSP)電話アプリ内に VVM を表示できます。VVM クライアントは、次のことを行います。
- サービスのアクティブ / 非アクティブ / クエリ ステータスを切り替える SMS メッセージと、サブスクライバのメールボックス内のイベントについてデバイスに通知する SMS メッセージを処理します。
- メールボックスを IMAP サーバーと同期します。
- ユーザーがボイスメールを聞く際、そのボイスメールをダウンロードします。
- ボイスメールの音声文字変換を取得します。
- ボイスメールの容量の詳細(メールボックスの合計サイズと占有サイズ)を取得します。
- コールバック、未読メールの表示、メッセージの削除などといったユーザー機能を電話アプリに統合します。
VVM クライアントとの統合
実装
携帯通信会社は、OMTP VVM 仕様を実装したビジュアル ボイスメール サーバーを用意する必要があります。AOSP VVM クライアントの現在の実装はコア機能(ボイスメールの読み取り / 削除、ダウンロード / 同期 / リッスン)をサポートしていますが、追加の TUI 機能(パスワードの変更、ボイスメール応答メッセージ、言語)は実装されていません。現時点では OMTP バージョン 1.1 のみをサポートしており、IMAP 認証には暗号化を使用しません。
音声文字変換をサポートするには、OMTP 1.3 仕様 2.1.3 項で指定された文字変換形式を携帯通信会社がサポートしている必要があります。
注: デバイスへのサーバー発信 SMS メッセージ(例: STATUS または SYNC)は、データ SMS メッセージである必要があります。
設定
携帯通信会社が VVM サービスと統合するには、OMTP クライアントが使用するプラットフォームに設定の詳細を提供する必要があります。このパラメータは以下のとおりです。
- SMS の送信先番号とポート番号
- 携帯通信会社が提供するビジュアル ボイスメール アプリのパッケージ名(提供されている場合)。これにより、指定したパッケージがインストールされている場合はプラットフォームでの実装を無効化できます
これらの値は、Carrier Config API から提供されます。Android 6.0 でリリースされたこの機能を使用することで、アプリは通話機能関連の構成を、必要とするさまざまなプラットフォーム コンポーネントに動的に提供できます。特に、次の各キーに値を定義する必要があります。
KEY_VVM_DESTINATION_NUMBER_STRING
KEY_VVM_PORT_NUMBER_INT
KEY_VVM_TYPE_STRING
KEY_CARRIER_VVM_PACKAGE_NAME_STRING
KEY_VVM_PREFETCH_BOOLEAN
KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
詳しくは、携帯通信会社の設定をご覧ください。
実装
OMTP VVM クライアントは、packages/services/Telephony
内(具体的には src/com/android/phone/vvm/
内)に実装されます。
セットアップ
- VVM クライアントが、
TelephonyIntents#ACTION_SIM_STATE_CHANGED
またはCarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED
をリッスンする。 - 携帯通信会社の適切な設定値(
KEY_VVM_TYPE_STRING
がTelephonyManager.VVM_TYPE_OMTP
またはTelephonyManager.VVM_TYPE_CVVM
に設定されている)を持つ SIM が追加されると、VVM クライアントは ACTIVATE SMS をKEY_VVM_DESTINATION_NUMBER_STRING
で指定された値に送信する。 - サーバーがビジュアル ボイスメール サービスを有効化し、STATUS SMS 経由で OMTP 認証情報を送信する。VVM クライアントが STATUS SMS を受信するとボイスメール ソースを登録し、デバイスにボイスメール タブを表示します。
- OMTP 資格情報がローカルに保存され、デバイスは完全同期(後述)を開始する。
同期
VVM クライアントはさまざまな方法で携帯通信会社のサーバーと同期できます(逆も同様)。
- 完全同期は最初のダウンロード時に発生します。VVM クライアントは、日時、発信番号、通話時間、ボイスメールの音声文字変換(利用可能な場合)、音声データ(
KEY_VVM_PREFETCH_BOOLEAN
が True の場合)などのボイスメール メタデータを取得します。完全同期は、次の場合にトリガーされます。- 新しい SIM の挿入時
- デバイスの再起動時
- サービスへの復帰時
VoicemailContract.ACTION_SYNC_VOICEMAIL
ブロードキャストの受信時
- アップロード同期は、ユーザーがボイスメールを読んだり、削除したりするなどの操作を行った場合に発生します。アップロード同期により、サーバーのデータがデバイスのデータと一致するように変更されます。たとえば、ユーザーがボイスメールを読むとサーバー上でも既読になります。また、ユーザーがボイスメールを削除するとサーバー上でも削除されます。
- ダウンロード同期は、VVM クライアントが携帯通信会社から「MBU」(メールボックスの更新)SYNC SMS を受信した場合に発生します。SYNC メッセージには新しいメッセージのメタデータが含まれ、ボイスメール コンテンツ プロバイダに保存されます。
注: ボイスメールの受信トレイの容量は、毎回の同期中に取得されます。
ボイスメールのダウンロード
ボイスメールを再生するためにユーザーが再生ボタンを押すと、該当する音声ファイルがダウンロードされます。ユーザーがボイスメールを聞く際、電話アプリはボイスメール クライアントが受信する VoicemailContract.ACTION_FETCH_VOICEMAIL
をブロードキャストし、コンテンツのダウンロードを開始して、プラットフォームのボイスメール コンテンツ プロバイダのレコードを更新します。
VVM を無効にする
VVM サービスは、ユーザー操作、有効な SIM の取り出し、携帯通信会社の VVM アプリによる差し替えによって無効化または非アクティブ化されます。この場合、「無効化」とはローカル デバイスでビジュアル ボイスメールが表示されなくなることを意味します。「非アクティブ化」とは、サブスクライバに対してサービスが無効になっていることを示します。ユーザーの操作によりサービスが非アクティブ化され、SIM の取り出しによりサービスが一時的に無効化されます。これはサービスが存在しなくなり、携帯通信会社の VVM の差し替えにより AOSP VVM クライアントが無効になるためです。
ユーザーの操作
ユーザーは、ビジュアル ボイスメールを手動で有効化または無効化できます。ユーザーがビジュアル ボイスメールを無効化すると同時に、サービスも非アクティブになります。ビジュアル ボイスメールを無効化すると DEACTIVATE SMS が送信され、ボイスメール ソースの登録がローカルで解除されて、ボイスメール タブは非表示になります。ビジュアル ボイスメールを再度有効化すると、サービスも再度アクティブになります。
SIM の取り出し
デバイスの SIM のステータス(ACTION_SIM_STATE_CHANGED
)または携帯通信会社の設定値(ACTION_CARRIER_CONFIG_CHANGED
)が変更された場合や、特定の SIM に有効な設定が存在しない場合、ボイスメール ソースはローカルで登録解除され、ボイスメール タブは表示されなくなります。SIM を差し替えると VVM は再び有効になります。
携帯通信会社の VVM による代替
携帯通信会社のビジュアル ボイスメール アプリがデバイスにインストールされている場合、AOSP VVM クライアントを無効化できます。有効化および無効化は、KEY_CARRIER_VVM_PACKAGE_NAME_STRING
パラメータと一致する名前のパッケージがインストールされているかどうかを確認することで行われます。
VVM クライアントは、ユーザーの操作によっても有効化できます。
テスト
アプリによるプラットフォームへのボイスメールの挿入 / クエリ / 削除を可能にする VoicemailProvider API の CTS テストセット(Android 4.0 以降)が用意されています。このテストセットは、VVM がボイスメールを追加 / 削除するために使用する API と同一であるため、どの電話アプリの UI にも表示できます。
構成アプリが OMTP 構成を正しく渡していることをテストするには、次の項目を使用してコードをテストします。
- 有効な証明書署名を含む SIM
- Android 6.0 を搭載し、AOSP 電話フレームワークの未修正バージョンが設定されたデバイス