OMCS 开发手册之 Android SDK 说明

      (OMCS android SDK 目前版本提供的功能有:语音、视频(摄像头)、远程桌面(安卓端可以观看和控制PC的电脑屏幕)。) 

  如果您已经了解了OMCS语音视频框架PC版本的使用方法,那么上手Android版本的SDK是非常简单的。在本文中,我们将安卓SDK中重要的API列出来加以说明,很多重复性的内容就不再一一赘述了。

一. IMultimediaManager 接口

OMCS框架客户端的核心接口是IMultimediaManager(多媒体管理器接口),在客户端中以单例模式提供,可以通过MultimediaManagerFactory类的静态方法GetSingleton()获取该单例的引用。IMultimediaManager接口定义如下:

    /**
     * 与多媒体服务器建立连接,并初始化本地多媒体管理器。
     * @param userID 当前登陆的用户ID。
     * @param password 当前登录的用户的密码。
     * @param serverIP OMCS服务器IP
     * @param serverPort OMCS服务器端口
     * @param context
     */
     LogonResponse initialize(String userID,String password, String serverIP, int serverPort,Context context) throws InterruptedException;

     /**本地相机打开后与OMCS服务器的TCP连接状态监听。
     * @param connectionEventListener 连接状态监听器    
     */
    void setConnectionEventListener(IConnectionEventListener connectionEventListener);

     /**设备的guest监听。
     * @param listener guest监听器    
     */
    void setDeviceGuestListener(IDeviceGuestListener listener);
 
    /**本地相机打开后回调接口。
     * @param callback 回调接口    
     */
    void setCameraOpenCallBack(ICamOpenOverCallback callback);

    /**开始相机预览。
     * @param holder     
     */
    void startCameraPreview(SurfaceHolder holder);
/**开始相机预览。 * @param degree 旋转的角度 */ void startCameraPreview(SurfaceHolder holder, int degree);
/** * 主动断开来访者guest到本地多媒体设备的连接。 * @param deviceType 设备类型 * @param notifyGuest 是否通知对方。如果通知对方,对方的连接器将触发Disconnected事件。 */ void disconnectGuest(MultimediaDeviceType deviceType ,boolean notifyGuest); /** * 查询本地的某设备是否正在工作? * @param deviceType 设备类型 * @return 工作中? */ boolean deviceIsWorking(MultimediaDeviceType deviceType); /**开始相机预览。 * @param holder */ void startCameraPreview(SurfaceHolder holder);
/**当前登录用户的ID。 * @return */ String getCurrentUserID(); /**获取所使用的摄像头索引 * @return */ int getCameraDeviceIndex(); /**设置所使用的摄像头索引 * @param index 0-后 1-前 */ void setCameraDeviceIndex(int index); /**在运行时切换摄像头 * @param index 0-后 1-前 */ void switchCameraDeviceIndex(int index) throws Exception;; /**摄像头采集视频的大小。 * @return */ Size GetCameraVideoSize(); /**摄像头采集视频的大小。默认为320x240。 * @param width 宽 * @param height 高 */ void setCameraVideoSize(int width, int height); /** 是否将摄像头集到的视频输出给Guest。可在运行时动态修改。 如果为true,表示输出;否则,表示将采集到的视频数据丢弃,不发送给guest。默认值为true。 * @param isOutput */ void setOutputVideo(boolean isOutput); /** 是否将麦克风集到的声音输出给Guest。可在运行时动态修改。 如果为true,表示输出;否则,表示将采集到的声音数据丢弃,不发送给guest。默认值为true。 * @param isOutput */ void setOutputAudio(boolean isOutput); /**本地桌面的编码质量。取值0~31,默认值15。取值越小,越清晰。(建议不要小于10) * @param quality */ void setCameraEncodeQuality(int quality); /**获取语音消息控制器。 * @return */ IAudioMessageController getAudioMessageController(); /**在广播帧的时候,是否允许丢弃帧。必须在初始化前设置才有效。 * @param isAllow */ void setAllowDiscardFrameWhenBroadcast(boolean isAllow);

1.摄像头

(1)CameraSurfaceView 类

          用于显示自己的摄像头的预览画面,OMCS框架会在其surfaceCreated回调中打开摄像头,摄像头打开完成时,会回调ICamOpenOverCallback 接口。

         通过IMultimediaManager的setCameraOpenCallBack方法,可以注入自己的ICamOpenOverCallback实现。

(2)ICamOpenOverCallback 接口

          可以让采集视频的activity实现ICamOpenOverCallback接口,当摄像头打开成功或失败时此回调方法会被调用。

          在打开摄像头成功的回调方法cameraHasOpened里,您可以先实例化一个SurfaceHolder(用以呈现本地图像),然后调用 IMultimediaManager的startCameraPreview方法开启预览。

(3)setCameraVideoSize 、setCameraEncodeQuality 、setCameraDeviceIndex、switchCameraDeviceIndex、setOutputVideo  都很容易理解,不赘述。

2.麦克风         

        setOutputAudio方法 用于控制是否将声音发送给guest。在抢麦场景中经常使用,默认将setOutputVideo设置为false,抢到麦的就将其设置为true。

3.与服务器的连接状态         

        IConnectionEventListener接口 用于监听与服务器TCP连接的状态监听,比如,连接断开、重连开始、重连完成等事件。(注意:OMCS框架内部采用了自动重连机制)

       通过IMultimediaManager的setConnectionEventListener方法注入该监听器。

4.Guest连接、断开事件

        IDeviceGuestListener接口 用于监听Guest连接到我的设备,或与我的设备断开连接的事件。

       通过IMultimediaManager的setDeviceGuestListener方法注入该监听器。  

二.多媒体连接器 Connector

       当自己作为Guest,需要访问Owner的摄像头等设备时,就需要使用连接器。所有的连接器都从MultimediaConnector基类继承,MultimediaConnector包含的功能如下:

    /**
     * 设置连接器事件监听器。    
     */
    void setConnectorEventListener(IConnectorEventListener listener);

    /**
     * 获取当前连接器的设备类型    
     */
    MultimediaDeviceType getDeviceType() ;

    /**
     * 与目标设备是否已连接?     
     */
    boolean isConnected();

    /**
     * Owner方的UserID。
     */
    String getOwnerID();

   /**
     * 尝试连接目标多媒体设备。
     *
     * @param destUserID 目标用户的UserID
     */
    void beginConnect(String destUserID);

    /**
     * 与目标用户的多媒体设备断开连接。
     */
    void disconnect();

 (1)调用beginConnect方法,以尝试连接目标用户Owner的设备,框架将通过回调IConnectorEventListener接口通知连接的结果。

(2)我们要使用的CameraConnector、MicrophoneConnector、DesktopConnector都是从MultimediaConnector继承的。

1.CameraConnector

       摄像头连接器还包含了如下功能:

    /**
     * 设置摄像头连接器状态回调。     
     */
    void setCameraConnectorCallback(ICameraConnectorCallback callback);

   /**
     * 设置要绘制视频的View。    
     */
    void setOtherVideoPlayerSurfaceView(OMCSSurfaceView view);

   /**
     * Owner端是否输出了视频?(对应Owner端可以调用setOutputVideo方法)     
     */
    boolean getOwnerOutput();

   /**
     * 修改Owner端的视频采集分辨率。     
     */
    void changeOwnerCameraVideoSize(int width,int height);

      通过ICameraConnectorCallback回调,我们可以得知Owner端的摄像头采集分辨率发生了变化、outputVideo状态发生了变化。 

2.MicrophoneConnector

      与CameraConnector相似,甚至更简单,不再赘述。 

3.DesktopConnector

      通过DesktopConnector可以观看Owner端的屏幕,并进行操作。(即远程桌面和远程协助)。注意:目前安卓端只能作为Guest端,可以访问控制PC端的屏幕。

       DesktopConnector与CameraConnector相似,不再赘述。  

三. 语音消息控制器

      类似微信的语音消息功能,通过通过IMultimediaManager的getAudioMessageController方法可以获取语音消息控制器的引用。

      关于IAudioMessageController接口的使用,请参见《OMCS 开发手册(10) -- 语音消息》。        

四. API使用流程

1. 设置摄像头,如下面的示例代码:  

  (1)MultimediaManagerFactory.GetSingleton().setCameraVideoSize(640, 480);

  (2)MultimediaManagerFactory.GetSingleton().setCameraEncodeQuality(15); 

2. 调用initialize方法,初始化并登录到OMCS服务器。

3. 使用设备连接器Connector

    (1)调用Connector的setConnectorEventListener设置回调,监听连接目标设备是否成功。

    (2)调用Connector的beginConnect方法,连接到目标设备。

     (3)使用完毕,调用Connector的disconnect方法断开到目标设备的连接。

四. Demo及下载

      我们为OMCS入门Demo(PC版)增加了一个简单的Android客户端,可与PC进行视频聊天,其运行效果如下所示:

      登录:                                                                   连接对方:                                                       视频对话: 

             

下载:

(1)OMCS入门Demo源码(PC版) (与PC版的Demo公用同一个服务端)

(2)Android Demo apk  & Source code

 

下一篇:OMCS FAQ -- OMCS 常见问题解答

上一篇:OMCS 开发手册(11) -- 深入摄像头、麦克风、扬声器

--------------------------------------------------------------------------------------------------------------------  

下载免费版本的OMCS以及 demo源码

阅读 更多OMCS开发手册系列文章

Q Q:168757008

官网: www.oraycn.com

导航

首页

官方网站

立即咨询 

站内搜索

ESFramework 通信框架

价目表

详细说明

SDK与Demo下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

价目表

详细说明

SDK与Demo下载

OMCS FAQ

版本变更记录

OrayTalk 企业即时通讯系统

价目表

详细说明

客户端下载

傲瑞实用组件

价目表

SDK下载

NPush 消息推送组件

StriveEngine 轻量级的通信引擎

MFile 语音视频录制组件

MCapture 语音视频采集组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

傲瑞组件 FAQ

授权

授权流程

产品选购指南

授权方案说明

授权SDK使用说明

其它

SDK使用技巧

联系我们

电话:027-87638960

Q Q:168757008

邮件:master@oraycn.com