1. 程式人生 > >網路電話語音通話的android實現

網路電話語音通話的android實現

  • 現在很多第三方開發平臺封裝了一些強大的功能,比如訊息推送,第三方分享,簡訊驗證碼,以及IM即時通訊,語音聊天,視訊聊天等功能。
  • 今天就和大家分享一下如何利用第三方開放平臺實現網路電話的功能,也就是語音聊天。
  • 這裡是基於雲之訊開放平臺來實現的。
  • 之前很多人都跟我說過,這些使用第三方開放平臺來實現的功能,程式碼寫起來都非常的簡單。不過我現在明白了,這裡說的簡單,是相對完全是自己去開發而言的。如果就使用雲之訊的開放平臺去實現語音聊天這個功能而言,個人認為還是有些複雜度的。
  • 而且,使用第三方開發平臺提供的sdk與使用開源專案如github上面的框架而言,我感覺最大的不同就是,你不知道這些方法是怎麼實現的,你也不知道需要傳遞哪些引數。你更不知道,除了官網提供的Demo,還有沒有其他的實現方式。當然,這些方法的呼叫,引數的傳遞,是會有一個開發文件提供的,但是對於arg0,arg1
    這樣的東西想必你也不喜歡吧。
  • 不過沒有辦法,這些強大的功能,確實需要更高深的技術去實現,我們想用這些功能而自己又不知道怎麼實現的時候,只能藉助這些第三方開放平臺。
  • OK,廢話就講這些了,下面是語音聊天的程式碼介紹:
    • 這個Demo也是基於雲之訊官網提高的測試Demo來的,不過,只實現了語音聊天的功能,沒有IM的功能,官網的Demo裡面的功能比較全面。
    • 這個Demo,如果你去讀了雲之訊的測試Demo,你會發現,裡面的回撥,廣播,一大堆,搞來搞去的,很讓人頭暈。我的這個Demo也是的,因為我就是想實現一下這個語音聊天的功能,並沒有對它的程式碼做深度的優化。
  • 其實程式碼沒有什麼說的,因為程式碼的整個邏輯流程,已經在上一篇中比較詳細的解釋過了。這裡就粗略的介紹一下。
      1. 首先,你要想進行語音聊天,必須先登入帳號,登入成功才有後續的事情
        • 1.這裡要說明一下,其實使用雲之訊的這個語音的功能,裡面的登入其實是有兩次登入。第一次,是主帳號的登入。也就是你的開發者帳號。第二次登入,才是你的客戶端帳號的登入,只有客戶端登入完成才可以進行語音聊天。
      1. 在客戶端帳號登入成功之後,然後就可以進行語音通話了。
        • 1.它這裡進行語音通話,又有好幾個可選項,可以是單純的網路電話,也可以是直撥電話,回撥電話。關於這些概念我就不解釋了,相信度孃的解釋會更清晰。
        • 2.進行語音通話,其實是有兩種可能的,一種是你發起,打給別人,另一種是別人發起打給你的。
          • 對於別人打給你的,你只有處理好回撥裡面的邏輯就好了。對應雲之訊的sdk而言,你要關注的回撥就是onIncomingCall。在這個回撥裡面,你去開啟一個介面顯示來電。
          • 對於你自己發起的,你就要主動去呼叫sdk提高的撥打網路電話的方法了,核心方法就是void com.yzx.api.UCSCall.dial(Context arg0, CallType arg1, String arg2);
            這個方法沒有任何返回值,所以也就不能根據這個方法去判斷撥打成功還是失敗了,或者什麼其他情況。但是它提供了onDialFailed以及onAlerting等方法,可以通過這些知道撥打是否失敗,對方有沒有收到這裡的發起。
  • 其實關於主帳號登入已經子賬號登入是否成功也是有相應的回撥的,但是相對應語音功能,前面的登入相對簡單,就不做介紹了。
  • 關於程式碼的介紹就這些吧,比較簡略。
  • 主要是裡面全部是回撥和廣播,邏輯的處理非常跳躍,不太好介紹。但是大體就是根據一個狀態傳送一個廣播,在接收器裡面根據狀態去處理對應的事情,如果處理的事情需要通知其他地方,再發一個廣播,讓需要得到通知的地方再去註冊一個廣播接收器去接收訊息,然後,這裡的接收器裡面處理完了事情,要不要通知其他地方,如果要,又是這樣的處理方式,總體來說,比較跳躍。不過程式碼還是相對清晰的,雖然跳躍,但是功能OK。
  • 還有一點,我僅僅是實現了這個語音通話的功能。而且這個通話的功能僅限於開發者帳號提供的測試client帳號,沒有去實現註冊client帳號的功能。
    • 為什麼沒有去實現呢?
        1. 註冊client需要通過雲之訊的稽核,而不僅僅是註冊一個開發者帳號,我沒有去提交這個稽核。
        1. 他的測試Demo裡面沒有去做申請client帳號的邏輯,我也就沒有去做了。
          OK,介紹也結束了,下面是我的Demo。專案原始碼,點選下載