iOS平台设备上的音频即时通讯应用开发

  • 支持iOS平台设备上的音频即时通讯应用开发
  • 提供Objective-C语言API接口,开放示例源代码
  • 集成H.264、AAC、AMR等编解码技术
  • 封装音视频的采集、编解码、传输、显示和播放等模块
  • 支持Android、Web、PC等设备和iOS之间的互联互通
  • 想要在IOS平台下实现音视频通信,最快捷的方法是寻找开源项目或调用其他公司封装好的API,接下来小编介绍一款不错的SDK包给大家,已经上传到了51CTO的资源上面去,大家放心使用(iOS平台上的音频即时通讯应用开发)下面是一些关于如何调用相关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生命周期结束的时候可以将占用资源释放,程序退出。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值