大家來跟我學低功耗模組Air724UG軟體的語音通話吧,我已整理成文可輕鬆掌握。
一、音訊應用-通話(VoLTE)概述
Air724UG模組的4G通訊功能,透過VoLTE技術實現高畫質語音通話。
在通話過程中,聲音訊號透過 MIC 捕捉並轉換為數字音訊資料,經4G網路實時傳輸至對方裝置。同時,Air724UG 支援揚聲器(Speaker)輸出、耳機(Headset)輸出以及聽筒(Handset)輸出等多種音訊輸出模式,確保使用者在不同場景下都能獲得清晰的通話體驗。
這一應用廣泛適用於物聯網裝置中的遠端通訊、語音互動等場景,為使用者提供便捷、高效的通話服務。
二、準備硬體環境
在深入介紹本功能示例之前,我們首先需要確保以下硬體環境的準備工作已經完成。
2.1 Air724UG 開發板
本 demo 使用的是 Air724UG_A14 開發板,如下圖所示:
此開發板的詳細使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產品手冊中的開發板硬體資料中《EVB_Air724UG_A14 開發板使用說明.pdf》;開發板使用過程中遇到任何問題,可以直接參考這份使用說明 pdf 文件。
2.2 SIM 卡
請準備一張可正常上網的SIM卡,該卡可以是物聯網路卡(一般不能支援)或您的個人手機卡。
特別提醒:
請確保SIM卡未欠費且網路功能正常,以便順利進行後續操作。
2.3 PC 電腦
請準備一臺配備 USB 介面且能夠正常上網的電腦。
電腦作業系統為:
WIN7以及以上版本的WINDOWS系統。
2.4 小喇叭
2.5 資料通訊線
請準備一根用於連線 EVB_Air724UG_A14 開發板和 PC 電腦的資料線,該資料線將實現業務邏輯的控制與互動。
USB 資料線:此資料線不僅用於為測試板供電,還用於檢視資料日誌。其一端為 Micro-B 介面(俗稱老安卓口),用於連線 EVB_Air724UG_A14 開發板;另一端為標準 USB 介面,連線 PC 電腦。
2.6 組裝硬體環境
2.6.1 請按 SIM 卡槽指示方向正確插入 SIM 卡,避免插反損壞
通常,插入 SIM 卡的步驟如下:
將 SIM 卡的金屬卡槽下滑開啟。
平穩地將 SIM 卡放入卡槽。
上滑關閉卡槽。
2.6.2 USB 資料線,連線電腦和 EVB_Air724UG_A14 開發板,如下圖所示:
2.6.3 小喇叭和 EVB_Air724UG_A14 開發板連線,如下圖所示:
三、準備軟體環境
“凡事預則立,不預則廢。”在詳細闡述本功能示例之前,我們需先精心籌備好以下軟體環境。
3.1 Luatools 工具
要想燒錄 LuatOS 韌體到 4G 模組中,需要用到的除錯工具:Luatools;
下載地址:
https://docs.openluat.com/Luatools/
Luatools 工具集具備以下幾大核心功能:
一鍵獲取最新韌體:自動連線伺服器,輕鬆下載最新的模組韌體。
韌體與指令碼燒錄:便捷地將韌體及指令碼檔案燒錄至目標模組中。
串列埠日誌管理:實時檢視模組透過串列埠輸出的日誌資訊,並支援儲存功能。
串列埠除錯助手:提供簡潔的串列埠除錯介面,滿足基本的串列埠通訊測試需求。
Luatools 下載之後, 無需安裝,放入新建的資料夾後點選 Luatools_v3.exe 執行,出現如下介面,就代表 Luatools 安裝成功了:
3.2 燒錄程式碼
首先要說明一點:指令碼程式碼, 要和韌體的 LuatOS-Air_V4030_RDA8910_TTS_NOLVGL_FLOAT.pac(注:支援 LCD,字型檔,圖片,TTS,WIFI Scan,SD 卡,VOLTE) 檔案一起燒錄。
整體壓縮檔案:內含有四個檔案,如圖所示。
3.2.1 壓縮檔案:完整檔案包
https://docs.openluat.com/air724ug/luatos/app/audio/volte/
3.2.2 找到燒錄的韌體檔案
官網下載,底層 core 下載地址:
https://docs.openluat.com/air724ug/luatos/firmware/
3.2.3 正確連線電腦和 4G 模組電路板
使用帶有資料通訊功能的資料線,不要使用僅有充電功能的資料線;
3.2.4 識別 4G 模組的 BOOT 引腳
在下載之前,要用模組的 BOOT 引腳觸發下載。
具體到 EVB_Air724UG_A14 開發板:
當我們模組沒開機時,按著下載模式鍵然後長按開機鍵開機。
當我們模組開機時,按著下載模式鍵然後點按重啟鍵即可。
3.2.5 識別電腦的正確埠
判斷是否進入 BOOT 模式:
模組上電,如果是正常開機執行(沒有進入boot下載模式),此時在電腦的裝置管理器中,檢視串列埠裝置,如下圖所示(會出現3個或者4個埠):
先按下載模式再按一下重啟,會出現一個埠表示進入了 BOOT 下載模式,如下圖所示:
一旦進入了boot下載模式,表示硬體連線上已經處於就緒狀態,此時就可以使用Luatools工具進行燒錄了!
3.2.6 新建專案
首先,確保你的 Luatools 的版本大於或者等於 3.0.6 版本.
在 Luatools 的左上角上有版本顯示的,如圖所示:
Luatools 版本沒問題的話, 就點選 Luatools 右上角的“專案管理測試”按鈕,如下圖所示:
這時會彈出專案管理和燒錄管理的對話方塊,如下圖:
3.2.7 開始燒錄
選擇 Air724ug 開發板對應的底層 core 和 main.lua 指令碼檔案。下載到板子中。
一直按下載模式按鍵,再按一下重啟,然後點選下載底層和指令碼,如圖所示:
出現如圖所示,表示已進入 BOOT 模式,可以鬆開下載模式按鍵,等待下載完成。
下載完成,如圖所示
四、音訊應用-通話(VoLTE)基本用法
4.1 本教程實現的功能定義:
CC 庫在 EVB_Air724UG_A14-LuatOS 中扮演了關鍵角色,它提供了一種高效、靈活且使用者友好的呼叫控制解決方案。本次介紹的目標是幫助開發者迅速瞭解並精通 CC 庫的 API 介面,以便在 VoLTE 通話中實現精確的呼叫管理和控制功能。
4.2 文章內容引用
EVB_Air724UG_A14 開發板軟硬體資料 :
EVB_Air724UG_A14 產品手冊:https://docs.openluat.com/air724ug/product/
以下介面函式不做詳細介紹,可透過此連結檢視具體介紹:
audio_API:
https://doc.openluat.com/wiki/21?wiki_page_id=2327#API_9
4.3 API 介面詳解
4.3.1 cc.anyCallExist()
解說:cc.anyCallExist 用於檢查當前是否存在任何活動的通話。這個 API 不需要任何引數。
引數:
無
返回值:
布林值(true 或 false):如果存在活動的通話,則返回 true;否則返回 false。
舉例:
4.3.2 cc.getState(num)
解說:cc.getState 用於獲取指定通話的狀態。它接收一個通話識別符號(可能是通話控制代碼或電話號碼,具體取決於實現)作為引數,並返回一個表示通話狀態的值(通常是列舉或常量)。
引數:
num:通話識別符號(電話號碼)。
返回值:
通話狀態值(列舉或常量):表示指定通話的當前狀態,如空閒、來電、正在撥打、已接通、保持等。
舉例:
4.3.3 cc.dial(num, delay)
解說:cc.dial 用於撥打一個電話號碼。它接收兩個引數:要撥打的電話號碼和一個可選的延遲時間(以秒為單位),在撥打之前可以等待一段時間。
引數:
num:要撥打的電話號碼。
delay(可選):可選引數,預設為0 延時 delay 毫秒後,才發起呼叫。
返回值:
bool result,true 表示允許傳送 at 命令撥號並且傳送 at,false 表示不允許 at 命令撥號。
舉例:
4.3.4 cc.hangUp(num)
解說:cc.hangUp 用於結束通話指定通話。它通常接收一個通話識別符號(如通話控制代碼或電話號碼)作為引數,儘管在某些實現中可能不需要引數(如果只有一個活動通話)。
引數:
num(可選):號碼,若指定號碼通話狀態不對,則直接退出,不會執行結束通話,若結束通話時會結束通話所有電話。
返回值:
無。
舉例:
4.3.5 cc.dtmfDetect(enable, sens)
解說:cc.dtmfDetect 用於啟用或禁用雙音多頻(DTMF)訊號的檢測。它接收兩個引數:一個布林值表示是否啟用檢測,以及一個可選的靈敏度值。
引數:
enable:可選引數,預設為nil true 使能,false 或者 nil 為不使能。
sens(可選):可選引數,預設為3 靈敏度,最靈敏為 1。
返回值:
無。
舉例:
4.3.6 cc.accept(num)
解說:cc.accept 用於接聽傳入的通話。它通常接收一個通話識別符號作為引數,儘管在某些實現中可能不需要(因為通常只有一個傳入的通話等待接聽)。
引數:
num(可選):號碼,若指定號碼通話狀態不對,則直接退出,不會接通。
返回值:
無
舉例:
4.3.7 cc.transVoice(data, loop, downLinkPlay)
解說:cc.transVoice 通話中傳送聲音到對端,必須是 12.2K AMR 格式。
引數:
data:12.2K,AMR 格式的資料。
loop:可選引數,預設為nil 是否迴圈傳送,true 為迴圈,其餘為不迴圈。
downLinkPlay:可選引數,預設為nil 聲音是否在本端播放,true 為播放,其餘為不播放。
返回值:
布林值或狀態碼:表示傳輸操作是否成功啟動。具體返回值可能因實現而異。
舉例:
4.3.8 cc.sendDtmf(str, playtime, intvl)
解說:cc.sendDtmf 用於在通話中傳送雙音多頻(DTMF)訊號。它接收三個引數:一個包含 DTMF 字元的字串,每個字元的播放時間,以及字元之間的間隔。
引數:
str:dtmf 字串,僅支援數字、ABCD*#。
playtime:可選引數,預設為100 每個 dtmf 播放時間,單位毫秒。
intvl:可選引數,預設為100 兩個 dtmf 間隔,單位毫秒。
返回值:
無
舉例
五、音訊應用整體演示
5.1 音訊應用-錄音成果演示與深度解析:影片 + 圖文全面展示
5.1.1 完整例項深度剖析
六、總結
CC 庫的通話管理 API 介面共同構成了通話控制的核心功能,使開發者能夠高效地管理通話的啟動、結束通話、接聽、引數配置以及附加的通話處理功能。透過合理利用這些介面,開發者可以構建出具備出色通話體驗的應用程式,滿足使用者在多種通話場景下的需求。同時,也需關注介面之間的協同配合,以確保通話功能的流暢性和可靠性。
七、常見問題
打不了電話,確認能不能正常註冊上網路,有沒有欠費。確認卡是否開通 VOLTE 功能, 只有開通 VOLTE 功能才能進行語音通話。韌體是否支援 VOLTE 功能,韌體需要支援 VOLTE 功能。注:建議使用手機卡測試,普通物聯網路卡可能不支援 VOLTE 功能。
audio.setMicGain()通話中設定 mic 增益,必須在通話建立以後設定。
暫不支援視訊通話,且因為只有 30W 畫素,效果較差。
八、擴充套件
通話過程中給對端播放音訊檔案:demo 有案例開啟程式碼中注掉的部分即可進行測試,如圖所示。