試用聲網Agora語音SDK感受 | 掘金技術徵文

正兒八勁小青年發表於2019-04-15
這次體驗的是聲網下的"語音通話/語音直播"模組,如此實用普及的功能使用Agora SDK竟感覺如此的簡單絲滑,我們先去下載官方的demo看一看


官方demo

1.進入官網,先註冊一個聲網賬號,建立專案,然後獲得一個appid

試用聲網Agora語音SDK感受 | 掘金技術徵文


2.在sdk介面選擇我們要是使用的sdk

試用聲網Agora語音SDK感受 | 掘金技術徵文

3.下載解壓後兩個資料夾(libs和samples),我們在androidstudio中直接import project samples專案(我的as版本是3.1.3),毫無壓力直接build成功,只是會提示你輸入appid,用我們剛才官網得到的apid“c v”直接過來,搞定


4.官方Demo非常簡單,依賴了lib資料夾裡面的一些庫和os,專案中就一個VoiceChatViewActivity類,裡面的程式碼也只有不到200行,總結起來其實就幾個重點


初始化程式碼:很簡單,就是設定一下我們的appid

private void initializeAgoraEngine() {
    try {
        mRtcEngine = RtcEngine.create(getBaseContext(), getString(R.string.agora_app_id), mRtcEventHandler);
    } catch (Exception e) {
        Log.e(LOG_TAG, Log.getStackTraceString(e));

        throw new RuntimeException("NEED TO check rtc sdk init fatal error\n" + Log.getStackTraceString(e));
    }
}複製程式碼


加入頻道:注意,加入頻道前需要先關閉之前的頻道

 private void joinChannel() {
    mRtcEngine.joinChannel(null, "demoChannel1", "Extra Optional Data", 0); // if you do not specify the uid, Agora will assign one.
}複製程式碼


離開頻道:在onDestory中也需要呼叫

 private void leaveChannel() {
    mRtcEngine.leaveChannel();
}複製程式碼


我們在官方demo中新增一個按鈕,點選加入一個頻道,後面有用

mRtcEngine.leaveChannel();
mRtcEngine.joinChannel(null, "voiceDemoChannel1", "Extra Optional Data", 0);複製程式碼


基本流程就是這樣,可以看出是灰常的簡單


下面我們自己實現一下這個Demo

1.新建專案,新增sdk和so檔案結構如圖(依賴來自sdk的lib資料夾中)

試用聲網Agora語音SDK感受 | 掘金技術徵文


2.在app的build.gradle中新增

sourceSets {  
  main {  
      jniLibs.srcDirs = ['src/main/jniLibs']  
  }}複製程式碼


3.搞定,現在實現以下程式碼,有使用者進入頻道時螢幕提醒一下

private final IRtcEngineEventHandler mRtcEventHandler = new IRtcEngineEventHandler() {
 // Tutorial Step 1   
 //使用者離開房間  
  @Override    
public void onUserOffline(final int uid, final int reason) { 
       runOnUiThread(new Runnable() {  
          @Override           
 public void run() {             
   onLeaveRoom(uid, reason);     
       }      
  });  
  }   

 //使用者加入了房間   
 @Override    
public void onUserJoined(final int uid, final int elapsed) {   
     super.onUserJoined(uid, elapsed);       
 runOnUiThread(new Runnable() {      
      @Override            
public void run() {          
      onIntoRoom(uid, elapsed);       
     }      
  });    
}};



/** * 1.初始化聲網 **/private void initializeAgoraEngine() {    
try {      
  mRtcEngine = RtcEngine.create(getBaseContext(), "b4dfdd47b81a4d4eadee22c9a479e193", mRtcEventHandler);
    } catch (Exception e) {  
      Log.e(LOG_TAG, Log.getStackTraceString(e));   
     throw new RuntimeException("NEED TO check rtc sdk init fatal error\n" + Log.getStackTraceString(e));    
}}

/** * 2.加入頻道 **/
private void joinChannel() { 
   mRtcEngine.joinChannel(null, "voiceDemoChannel1", "Extra Optional Data", 0); // if you do not specify the uid, we will generate the uid for you
}

/** * 使用者離開房間 **/
private void onLeaveRoom(final int uid, int reason) { 
   this.runOnUiThread(new Runnable() {      
  @Override      
  public void run() {  
          tvMessaghe.setText(tvMessaghe.getText() + "\n使用者" + uid + "離開房間  " +getNowTime());    
    }    });
}

/** * 使用者進入房間 **/
private void onIntoRoom(final int uid, int reason) { 
   this.runOnUiThread(new Runnable() {       
 @Override      
  public void run() {       
     tvMessaghe.setText(tvMessaghe.getText() + "\n使用者" + uid + "進入房間  "+getNowTime());    
    }   
 });
}

/** * 3.退出房間,在關閉程式時需要呼叫 **/
private void leaveChannel() { 
   mRtcEngine.leaveChannel();
}複製程式碼





4.最終效果,加入房間後就可以1v1通話,由於錄製不了聲音,能看到效果大概就是這樣了

試用聲網Agora語音SDK感受 | 掘金技術徵文

試用聲網Agora語音SDK感受 | 掘金技術徵文

試用聲網Agora語音SDK感受 | 掘金技術徵文



5.它的功能還有很多,比如變聲通話質量,混音等等,這裡就不一一例舉了,感興趣的童靴可以去它的官網看一看,都很簡單

試用聲網Agora語音SDK感受 | 掘金技術徵文


總結:整體感覺就是,簡單容易上手,API簡潔,真的是幾行程式碼實現一個1v1通話,快速開發首選,另外聽說小米和陌陌都在用它,好像它還支援flutter跨平臺,這對於熱愛跨平臺技術的我來說無比興奮,有機會一定再實踐一下。







相關文章