開發文檔
以Java語言進行Facephone SDK 的二次集成開發
咨詢反饋
熱線電話
熱線電話
免費試用
移動微站
以Java語言進行Facephone SDK 的二次集成開發
以Java語言進行Facephone SDK 的二次集成開發。介紹了如何從環境配置到完成用戶登錄的流程。
Android Studio或Eclipse ADT
Java Development Kit 1.7及以上版本
Android 5.0及以上
將我們提供的必須的資源文件拷貝至“res/raw”目錄下:
步驟1 單擊File,選擇“New > New Project…”
步驟2 根據提示信息輸入
步驟3 單擊next,選擇SDK版本
步驟4 單擊next,選擇一個activity
步驟5 根據提示,填入activity信息,單擊Finish,完成
步驟1 切換到Project目錄下,在“app/src/main”下新建jniLibs文件夾,并將我們提供的armeabi-v7a文件夾拷貝到該文件夾下
步驟2 將我們提供的facephone.jar拷貝到工程的libs目錄下,并在jar包上“右鍵 > Add As Library…” (如果選擇aar版本的,請將facephone.aar拷貝到該目錄下目錄下)
步驟3 完成后點擊Sync按鈕,同步工程,即可進行二次開發
FacePhone.instance().initPhone(this, R.raw.oldphone_mono,
R.raw.ringback, R.raw.toy_mono, R.raw.incoming_chat,
R.raw.lpconfig, R.raw.rootca,null ,
MediaConfigure.DEVICE_GZGD_BOX);
步驟1 綁定登陸注冊回調事件:
步驟2 實現接口
步驟3 登陸注冊
參數說明:
編譯及調試
編譯運行工程,在回調方法registrationState里面接收到登陸狀態,第一個helloworld工程就成功了。
步驟1 綁定通話狀態監聽事件:
步驟2 實現接口
步驟3 設置通話方式(可選,默認為語音通話)
步驟4 撥號
參數說明
步驟5 接聽電話
步驟6 根據通話狀態做相應操作
注意:SDK默認為不自動接聽,開發者可使用FacephonePreferences.instance().enableAutoAnswer(true); 接聽電話需要在上面的callState中監聽到來電選擇是否接聽才生效
這里需要用到我們提供的組件GL2JNIView來顯示遠程畫面,和Android提供的SurfaceView來顯示本地畫面。例如:
初始化通話界面:
注意:必須當通話接通(也就是State.Connected)時,才能跳轉到通話界面并初始化通話界面,建議將以Fragment的方式動態加載通話界面。
語音/視頻切換
切換后的狀態會在callState中回調,回調LinphoneCall.State.StreamsRunning狀態
切換攝像頭
靜音
綁定監聽事件
實現接口
發送文字消息
參數說明
綁定監聽事件
實現接口
com.paradise.api.Numpad是一個自定義view,能夠實現通話過程中的dtmf功能。 開發者可使用我們提供的默認的撥號盤樣式:
也可以自定義撥號盤的樣式:
在“res/layout”文件夾下放入自定義的撥號盤布局文件,文件名為固定的“paradise_numpad”,布局文件的里面的0~9、*和#的ID值也必須是固定的:paradise_zero、paradise_one…paradise_nine、paradise_star、paradise_sharp,其他的開發者根據需求決定。 為了讓Numpad控件能夠監聽到用戶的遙控器輸入,開發者需要在Numpad所屬的Activity的onKeyDown方法中,將按鍵事件傳遞給Numpad,例如:
至此,撥號盤就具有了:監聽遙控器數字鍵自動顯示、通過遙控器按鍵模擬點擊撥號盤、撥號盤顯示時按“#”或返回鍵隱藏、撥號盤隱藏時按返回鍵彈出詢問用戶是否結束通話的對話框等功能,另外該對話框的樣式也可以自定義,通過如下方式:
問題1:對方拒絕接聽電話(未接聽就掛斷),我方停留在通話界面無法退出 解決方案: 在通話界面的callState監聽里面,監聽到CallEnd和CallReleased狀態就結束掉通話界面,例如
問題2:沒有建立通話連接時進入通話界面,無法通過監聽callstate回調狀態結束頁面 或者,進入通話界面之前, 通話已經結束并釋放,無法通過監聽callstate回調狀態結束頁面.解決方案:在掛斷功能之前加入如下判斷:
注意:只要建立了通話連接,在通話界面斷網,也能通過監聽callstate回調狀態結束頁面
問題3:A呼叫B,B超時35秒未接通電話,電話自動掛斷,此時B的接聽界面未關閉(Demo中的情況),B通過接聽界面進入通話界面,出現無法掛斷的情況.
解決方案:在來電接聽界面的callState里面,監聽到LinphoneCall.State.CallReleased就關閉來電接聽界面
問題4:用戶注冊失敗
解決方案:1、檢查網絡是否可達;2、該設備上存在其他集成了該SDK的軟件占用了端口(新版已修復),完全退出其他軟件,清除我方軟件緩存,完全退出我方軟件,重新進入即可; 3:詢問是否服務器出現故障,這種可能性很小
問題5:A已經注冊,B也已經注冊,A、B無法互通
解決方案:1、確認以上是通過賬號注冊,且此時網絡可達,非賬號注冊用戶只能外呼,不能被呼,且非賬號注冊用戶注冊不會回調注冊狀態;2、確認兩臺設備在同一局域網下;3、對方是否離線;4、詢問是否服務器故障, 可通過呼叫會議室號碼確認
問題6:通話時,無法顯示本地畫面
解決方案:以上情況默認已經建立通話連接:1、使用非我們推薦攝像頭可能出現未知問題;2、檢查攝像頭是否被其他軟件占用;3、未在初始化時傳入正確的設備類型; 4、檢查攝像頭是否出現損壞
問題7:無法顯示遠程畫面
解決方案:以上情況默認已經建立通話連接:1、網絡情況較差,顯示遠程畫面有延遲;2、檢查通話雙方是否在一個局域網內,可通過呼叫會議室號碼排除自身問題;3、解碼方式存在問題,即未在初始化時傳入正確的設備類型;4、遠程一方由于某種原因沒有傳出圖像, 該問題解決可參考問題7的解決方案
天堂云會議 開啟你的實時溝通之旅
這世界 · 愿您不再商務奔波