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 クライアントは、次のことを行います。
- サービスのステータスのアクティブ化 / 非アクティブ化に使用される 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 電話フレームワークの未修正バージョンが設定されたデバイス