接下來小編介紹一款不錯的SDK包給大家,AnyChat SDK,這是一款跨平台的音視頻即時通訊解決方案,下面是一些關於如何調用相關API接口的方法,大家可以相互交流交流。
1. // 初始化SDK 2. public native int InitSDK(int osver, int flags); 3. // 連接服務器 4. public native int Connect(String serverip, int port); 5. // 登錄系統 6. public native int Login(String username, String password); 7. // 進入房間(房間ID) 8. public native int EnterRoom(int roomid, String password); 9. // 進入房間(房間名稱) 10. public native int EnterRoomEx(String roomname, String password); 11. // 退出房間 12. public native int LeaveRoom(int roomid); 13. // 設置視頻顯示位置 14. public native int SetVideoPos(int userid, Surface surface, int lef, 15. int top, int right, int bottom); 16. /** 17. * 功能: 設置視頻顯示位置,或是刷新視頻顯示 返回值:0表示成功,否則為出錯代碼 18. * 參數: 19. * userid 用戶ID 20. * surface 視頻顯示界面,android客戶端只需提供SurfaceView控件,內核自動將視頻顯示在控件上 21. * lef,top,right,bottom視頻顯示位置信息 22. */ 23. // 注銷登錄 24. public native int Logout(); 25. // 釋放資源 26. public native int Release(); 一、初始化SDK 初始化SDK是首先要完成的,用於設置SDK的一些行為,包括設置對應的回調函數。代碼如下: 1. //初始化SDK 2. private void InitialSDK() { 3. if (anychat == null) { 4. anychat = new AnyChatCoreSDK(); 5. //設置基本事件回調函數 6. anychat.SetBaseEvent(this); 7. if (configEntity.useARMv6Lib != 0) 8. anychat.SetSDKOptionInt(AnyChatDefine. 9. BRAC_SO_CORESDK_USEARMV6LIB, 1); //使用ARMv6指令集 10. anychat.InitSDK(android.os.Build.VERSION.SDK_INT, 0); //初始化SDK 的一個參數是android API版本 11. bNeedRelease = true; 12. } 13. } 二、登錄系統 當初始化SDK完成之後,便可以實現連接服務器、驗證用戶身份、用戶登錄等。 1. //連接服務器 2. anychat.Connect("211.155.25.90", 8906); 3. //登錄系統 4. anychat.Login("android",""); 連接服務器和登錄系統都是一個異步的過程,調用後會立即返回。在回調函數中根據返回代碼判斷服務器是否連接成功和登錄成功。 三、進入房間 登錄成功後就可進入相應的房間,只有在相同房間的用戶才能進行音視頻通信。代碼如下 1、進入房間 1. //進入1號房間 2. anychat.EnterRoom(1, ""); 進入房間後系統會將該房間在線用戶發送給客戶端,只有在同一個房間用戶才能進行音視頻互交、文字聊天、文件傳輸等。當新用戶進入房間或用戶下線,都會觸發異步消息通知上層應用更改狀態。 2、文字聊天 成功進入房間後,便可調用API接口向指定用戶或房間中所有在線用戶發送文字 聊天消息。 1. //發送文字聊天消息 2. String message = messageEditText.getText().toString(); 3. anychat.SendTextMessage(-1, 0,message); 其他用戶收到文字聊天消息會觸發相應的回調函數並將聊天消息顯示在界面上。 3、請求其他用戶的音視頻 1. // 請求對方的視頻流 2. anychat.UserCameraControl(userID, 1); 3. // 請求對方的音頻流 4. anychat.UserSpeakControl(userID, 1); 4、音視頻的顯示與播放 1. //判斷遠程用戶視頻是否已打開 2. if (!bOtherVideoOpened) { 3. if (anychat.GetCameraState(userID) == 2 4. && anychat.GetUserVideoWidth(userID) != 0) { 5. SurfaceHolder holder = otherView.getHolder(); //獲得SurfaceView控件 6. holder.setFormat(PixelFormat.RGB_565); //設置顯示格式 7. holder.setFixedSize(anychat.GetUserVideoWidth(userID), 8. anychat.GetUserVideoHeight(userID)); //設置視頻顯示寬高 9. Surface s = holder.getSurface(); //獲得視頻畫面 10. anychat.SetVideoPos(userID, s, 0, 0, 0, 0); //調用API顯示視頻畫面 11. bOtherVideoOpened = true; 12. } 13. } 14. //判斷本地視頻是否已打開 15. if (!bSelfVideoOpened) { 16. if (anychat.GetCameraState(-1) == 2 17. && anychat.GetUserVideoWidth(-1) != 0) { 18. SurfaceHolder holder = myView.getHolder(); //獲得SurfaceView控件 19. holder.setFormat(PixelFormat.RGB_565); //設置顯示格式 20. holder.setFixedSize(anychat.GetUserVideoWidth(-1), 21. anychat.GetUserVideoHeight(-1)); //設置視頻顯示寬高 22. Surface s = holder.getSurface(); //獲得視頻畫面 23. anychat.SetVideoPos(-1, s, 0, 0, 0, 0); //調用API顯示視頻畫面 24. bSelfVideoOpened = true; 25. } 26. } Android程序中,當收到用戶的媒體流數據時,Android客戶端只需提供一個SurfaceView控件,內核自動將視頻媒體流數據顯示在該控件上並播放聲音。 四、釋放資源 與前面講的連接服務器、登錄系統、進入房間對應的的是離開房間、注銷系統、釋放資源。代碼如下: 1. protected void onDestroy() { 2. //離開房間 3. anychat.LeaveRoom(-1); 4. //注銷登錄 5. anychat.Logout(); 6. //釋放資源 關閉SDK 不再返回登錄界面 7. anychat.Release(); 8. } 離開房間後可再進入房間,但是注銷登錄和釋放資源後,SDK將不再工作。在Activity生命周期結束的時候可以將占用資源釋放,程序退出。 先介紹到這,如果有興趣可以在官網免費下載測試,或加我QQ進行溝通交流2921533637。