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