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 客戶端,該客戶端(如果提供正確的配置)將連接到運營商 VVM 服務器並在 Android 開源項目 (AOSP) 撥號器中填充可視語音郵件消息。 VVM 客戶端:
- 處理用於激活/停用/查詢服務狀態的 SMS 消息以及用於通知設備訂閱者郵箱中的事件的 SMS 消息
- 將郵箱與 IMAP 服務器同步
- 當用戶選擇收聽語音郵件時下載語音郵件
- 獲取語音郵件轉錄
- 獲取語音郵件配額的詳細信息(郵箱總大小和占用大小)
- 集成到撥號器中以實現用戶功能,例如回撥、查看未讀消息、刪除消息等。
與 VVM 客戶端集成
執行
運營商必須提供實施OMTP VVM 規範的可視語音郵件服務器。 AOSP VVM 客戶端的當前實現支持核心功能(讀取/刪除語音郵件、下載/同步/收聽),但未實現其他 TUI 功能(密碼更改、語音郵件問候語、語言)。目前,我們僅支持 OMTP 1.1 版,不使用加密進行 IMAP 身份驗證。
要支持轉錄,運營商必須支持 OMTP 1.3 規範第 2.1.3 項中指定的轉錄附件格式(MIME 類型純文本/文本)。
注意:發往設備的服務器發起的 SMS 消息(例如 STATUS 或 SYNC)必須是數據 SMS 消息。
配置
為了讓運營商與 VVM 服務集成,運營商必須向 OMTP 客戶端可以使用的平台提供配置詳細信息。這些參數是:
- SMS 的目標號碼和端口號
- 運營商提供的可視語音郵件應用程序的包名稱(如果提供),以便在安裝該包時可以禁用平台實現
這些值是通過運營商配置 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 短信發送 OMTP 憑據。當 VVM 客戶端收到 STATUS 短信時,它會註冊語音信箱源並在設備上顯示語音信箱選項卡。
- OMTP 憑據保存在本地,並且設備開始完全同步,如下所述。
同步
VVM 客戶端可以通過多種方式與運營商服務器同步,反之亦然。
- 初始下載時會發生完全同步。 VVM 客戶端獲取語音郵件元數據,例如日期和時間;原產地編號;期間;語音郵件轉錄(如果有);如果
KEY_VVM_PREFETCH_BOOLEAN
為 True,則為音頻數據。完全同步可以通過以下方式觸發:- 插入新 SIM
- 重新啟動設備
- 回來服務
- 接收
VoicemailContract.ACTION_SYNC_VOICEMAIL
廣播
- 當用戶與語音郵件交互以閱讀或刪除它時,就會發生上傳同步。上傳同步會導致服務器更改其數據以匹配設備上的數據。例如,如果用戶閱讀了語音郵件,則在服務器上將其標記為已讀;如果用戶刪除語音郵件,它會在服務器上被刪除。
- 當 VVM 客戶端收到來自運營商的“MBU”(郵箱更新)SYNC 短信時,就會發生下載同步。 SYNC 消息包含新消息的元數據,以便可以將其存儲在語音郵件內容提供商中。
注意:每次同步期間都會檢索語音郵件收件箱配額值。
語音信箱下載
當用戶按下播放鍵收聽語音郵件時,會下載相應的音頻文件。如果用戶選擇收聽語音信箱,Dialer 可以廣播VoicemailContract.ACTION_FETCH_VOICEMAIL
,語音信箱客戶端將收到該信息,啟動內容的下載,並更新平台語音信箱內容提供商的記錄。
禁用 VVM
VVM 服務可以通過用戶交互、移除有效 SIM 卡或由運營商 VVM 應用程序替換來禁用或停用。禁用意味著本地設備不再顯示可視語音郵件。停用意味著為訂戶關閉服務。用戶交互可以停用該服務,移除 SIM 卡會暫時禁用該服務,因為它不再存在,並且運營商 VVM 更換會禁用 AOSP VVM 客戶端。
用戶交互
用戶可以手動啟用或禁用可視語音郵件。如果用戶禁用可視語音郵件,他們也會停用他們的服務。當他們禁用可視語音郵件時,會發送一條 DEACTIVATE 短信,語音郵件源在本地取消註冊,並且語音郵件選項卡消失。如果他們重新啟用可視語音郵件,他們的服務也會重新激活。
移除 SIM 卡
如果設備的 SIM 狀態 ( ACTION_SIM_STATE_CHANGED
) 或運營商配置值 ( ACTION_CARRIER_CONFIG_CHANGED
) 發生更改,並且給定 SIM 的有效配置不再存在,則語音郵件源將在本地取消註冊,並且語音郵件選項卡將消失。如果更換 SIM 卡,將重新啟用 VVM。
由運營商 VVM 取代
如果設備上安裝了運營商可視語音郵件應用程序,則可以禁用 AOSP VVM 客戶端。這是通過檢查是否安裝了名稱與KEY_CARRIER_VVM_PACKAGE_NAME_STRING
參數匹配的包來實現的。
VVM 客戶端仍然可以通過用戶交互來啟用。
測試
有一組現有的(自 Android 4.0 起)用於 VoicemailProvider API 的 CTS 測試,允許應用程序將語音郵件插入/查詢/刪除到平台中。這些與 VVM 用於添加/刪除語音郵件的 API 相同,因此任何 Dialer 應用程序都可以在 UI 中顯示它們。
要測試您的配置應用程序是否正確傳遞了 OMTP 配置,您可以使用以下命令測試您的代碼:
- 包含有效證書籤名的 SIM
- 運行 Android 6.0 且帶有未修改版本的 AOSP 手機框架的設備