com.tencent.av.sdk
Class AVContext

java.lang.Object
  extended by com.tencent.av.sdk.AVContext

public class AVContext
extends java.lang.Object

AVContext表示SDK音视频通话的上下文。
AVContext集中管理着SDK运行时的工作线程及各种工作对象的创建和销毁。
同时,AVContext提供了一系列的接口,通过这些接口可以获取SDK运行时的各种对象。
要进行音视频会话必须先创建AVContext对象。AVContext提供一个静态方法CreateContext()来创建一个新的AVContext对象。
调用startContext()方法可以启动AVContext对象,启动成功之后就可以进行其他操作了。
App退出或关闭音视频会话时,需要调用stopContext()方法停止SDK以释放资源。
AVContext对象支持反复创建多次音视频通话。


Nested Class Summary
static class AVContext.Config
          创建AVContext所需的配置信息。
static class AVContext.JNetworkInfo
           
static class AVContext.StartContextCompleteCallback
          startContext()的回调接口,用来异步返回启动结果。
此接口是和startContext()一起使用的回调函数,用来异步返回执行结果。
static class AVContext.StopContextCompleteCallback
          stopContext()的回调接口,用来异步返回关闭结果。
此接口是和stopContext()一起使用的回调函数,用来异步返回执行结果。
 
Field Summary
protected  int nativeObj
           
 
Constructor Summary
AVContext()
          构造函数
 
Method Summary
static AVContext createContext(AVContext.Config config)
          创建一个AVContext的实例。
同步返回结果。该方法返回一个AVContext的实例。
目前AVContext是单实例的,如果已经存在一个AVContext实例,再次调用CreateContext()的时候会失败。
 int enterRoom(int roomType, AVRoom.Delegate roomDelegate, AVRoom.EnterRoomParam enterRoomParam)
          通过房间信息创建房间。
异步返回结果。enterRoom()内部异步执行进入房间的流程。如果房间不存在会创建新房间。如果房间存在,会自动加入。
enterRoom()还会检查传入的参数的有效性,对于不合法的参数会返回错误代码。目前支持创建双人房间和多人房间。
注意,同一时间目前只支持创建一个房间。如果当前AVContext中已经存在一个房间,再次调用enterRoom()会失败。
 int exitRoom()
          退出房间。
异步返回结果。exitRoom()内部异步执行退出房间的流程。 只有当房间退出异步完成之后,才能创建新的房间。
异步返回结果通过#enterRoom()时传递的roomDelegate的onExitRoomComplete()返回。
注意:退出房间之后,不代表服务器上的房间被真的销毁。 直到房间内所有人都退出房间,该房间才会被服务器销毁。
目前SDK暂不提供显示销毁服务器房间的方法。
 AVAudioCtrl getAudioCtrl()
          获取AVAudioCtrl对象。
同步返回结果。在任意时刻都能获得,与房间的生命周期没有显式的关联。
 AVRoom getRoom()
          获取当前AVRoom对象。
同步返回结果。enterRoom()成功之后通过GetRoom()可以获取当前房间对象。
注意:如果进入房间不成功,则GetRoom()操作不会成功。
static java.lang.String getSDKVersion()
          获取SDK版本号。
同步返回结果。
 AVVideoCtrl getVideoCtrl()
          获取AVVideoCtrl对象。
同步返回结果。根据视频通道类型返回对应的视频控制器对象。
在任意时刻都能获得,与房间的生命周期没有显式的关联。
 void onDestroy()
          销毁AVContext。
同步返回结果。当SDK被关闭时调用,用于释放资源。建议在stopContext()异步回调后调用。
 void onPause()
          暂停AVContext工作。
同步返回结果。当然App响应系统OnPause()时,调用此方法,以便SDK暂停相关工作,释放对硬件资源的暂用。
 void onResume()
          恢复AVContext工作。
同步返回结果。当然App响应系统OnResume()时,调用此方法,以便SDK恢复相关工作,重新申请硬件资源。
 void setHolder(SurfaceHolder holder)
          设置SurfaceView的holder。
 void SetLocalConfigDirectory(java.lang.String pathname)
          设置本地配置文件路径。内部使用
 void setRenderFunctionPtr(int renderFunctionPtr)
          设置远端视频数据的回调。
 void setRenderMgrAndHolder(GraphicRendererMgr graphicRenderMgr, SurfaceHolder holder)
          设置渲染相关参数。
同步返回结果。目前SDK暂时没有开放渲染方面的接口,App需要使用GraphicRendererMgr完成摄像头、远端视频画面渲染。
这个方法最好在进入房间前调用,如果App需要预览摄像头画面,或者显示远程视频画面。 其中holder主要用于适配Android 3.0前的版本,App需要在界面上提供一个不可以见的holder。
Android 3.0之前的系统,不在提供surfaceHolder,Camera是无法正常启动采集。
注意:不调用此方法,渲染和摄像头无法使用。
 void setTwoSecondReportPath(java.lang.String logpath)
          设置两秒上报文件路径,内部使用。
 int startContext(Context context, AVContext.StartContextCompleteCallback completeCallback)
          启动AVContext对象。
异步返回结果。startContext()内部会启动工作线程,创建各种内部对象。
目前SDK暂时需要App指定房间类型,startContext()后,只能对应创建一种类型的房间。
例如startContext()指定房间类型为双人,CreateRoom()也只能创建双人房间。
只有当startContext()异步回调成功之后才能进行其他操作。
 void stopContext(AVContext.StopContextCompleteCallback completeCallback)
          关闭AVContext对象。
异步返回结果。stopContext()内部会停止工作线程,销毁各种内部对象。
碰到以下情况,stopContext不会执行:
上一次关闭AVContext对象没有完成。 AVContext对象没有启动成功。 创建房间操作没有完成。 App调用此方法前最好检查一下是否处于上述情况,否则会导致异步回调不触发。
注意:App退出或关闭音视频功能时可以调用stopContext()来关闭AVContext对象。
如果当前已经创建/加入房间,该房间会自动关闭。 App应该等待stopContext()方法完成,再继续退出流程。
一旦stopContext()执行完成,App需要手动销毁该对象。
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

nativeObj

protected int nativeObj
Constructor Detail

AVContext

public AVContext()
构造函数

Method Detail

startContext

public int startContext(Context context,
                        AVContext.StartContextCompleteCallback completeCallback)
启动AVContext对象。
异步返回结果。startContext()内部会启动工作线程,创建各种内部对象。
目前SDK暂时需要App指定房间类型,startContext()后,只能对应创建一种类型的房间。
例如startContext()指定房间类型为双人,CreateRoom()也只能创建双人房间。
只有当startContext()异步回调成功之后才能进行其他操作。

Parameters:
context - Application Context,SDK用于获取系统资源。
  • AVRoom#AV_ROOM_PAIR 双人通话。
  • AVRoom#AV_ROOM_MULTI 多人通话。
completeCallback - 回调对象,指向App定义的启动回调函数。
Returns:
AV_OK表示调用成功,其他值表示失败。
See Also:
AVContext.StartContextCompleteCallback

stopContext

public void stopContext(AVContext.StopContextCompleteCallback completeCallback)
关闭AVContext对象。
异步返回结果。stopContext()内部会停止工作线程,销毁各种内部对象。
碰到以下情况,stopContext不会执行:
App调用此方法前最好检查一下是否处于上述情况,否则会导致异步回调不触发。
注意:App退出或关闭音视频功能时可以调用stopContext()来关闭AVContext对象。
如果当前已经创建/加入房间,该房间会自动关闭。 App应该等待stopContext()方法完成,再继续退出流程。
一旦stopContext()执行完成,App需要手动销毁该对象。

Parameters:
completeCallback - 回调对象,指向App定义的关闭回调函数。
See Also:
AVContext.StopContextCompleteCallback

createContext

public static AVContext createContext(AVContext.Config config)
创建一个AVContext的实例。
同步返回结果。该方法返回一个AVContext的实例。
目前AVContext是单实例的,如果已经存在一个AVContext实例,再次调用CreateContext()的时候会失败。

Parameters:
config - 创建AVContext所需的配置信息。
Returns:
成功则返回AVContext对象,失败返回NULL,原因包括加载lib失败。

enterRoom

public int enterRoom(int roomType,
                     AVRoom.Delegate roomDelegate,
                     AVRoom.EnterRoomParam enterRoomParam)
通过房间信息创建房间。
异步返回结果。enterRoom()内部异步执行进入房间的流程。如果房间不存在会创建新房间。如果房间存在,会自动加入。
enterRoom()还会检查传入的参数的有效性,对于不合法的参数会返回错误代码。目前支持创建双人房间和多人房间。
注意,同一时间目前只支持创建一个房间。如果当前AVContext中已经存在一个房间,再次调用enterRoom()会失败。

Parameters:
roomType - 房间类型。房间类型:双人房间和多人房间。
roomDelegate - 房间委托对象,异步返回结果通过此参数的onEnterRoomComplete()返回。
  • 创建双人房间,必须传递AVRoomPair.Delegate对象。
  • 创建多人房间,必须传递AVRoomMulti.Delegate对象。
enterRoomParam - 进入房间所需的参数。
Returns:
AV_OK表示调用成功,其他返回值表示失败。
See Also:
AVRoom.Delegate, AVRoom.EnterRoomParam

exitRoom

public int exitRoom()
退出房间。
异步返回结果。exitRoom()内部异步执行退出房间的流程。 只有当房间退出异步完成之后,才能创建新的房间。
异步返回结果通过#enterRoom()时传递的roomDelegate的onExitRoomComplete()返回。
注意:退出房间之后,不代表服务器上的房间被真的销毁。 直到房间内所有人都退出房间,该房间才会被服务器销毁。
目前SDK暂不提供显示销毁服务器房间的方法。

Returns:
AV_OK表示调用成功,其他返回值表示失败。

getRoom

public AVRoom getRoom()
获取当前AVRoom对象。
同步返回结果。enterRoom()成功之后通过GetRoom()可以获取当前房间对象。
注意:如果进入房间不成功,则GetRoom()操作不会成功。

Returns:
成功返回当前AVRoom对象,否则返回NULL。

getAudioCtrl

public AVAudioCtrl getAudioCtrl()
获取AVAudioCtrl对象。
同步返回结果。在任意时刻都能获得,与房间的生命周期没有显式的关联。

Returns:
成功返回AVAudioCtrl对象,否则返回NULL。

getVideoCtrl

public AVVideoCtrl getVideoCtrl()
获取AVVideoCtrl对象。
同步返回结果。根据视频通道类型返回对应的视频控制器对象。
在任意时刻都能获得,与房间的生命周期没有显式的关联。

Returns:
成功则返回AVVideoCtrl对象,否则返回null。

getSDKVersion

public static java.lang.String getSDKVersion()
获取SDK版本号。
同步返回结果。

Returns:
版本号格式为“1.0.日期”。前两个数字合起来为大版本号,第三个数字为版本的编译时间。

setTwoSecondReportPath

public void setTwoSecondReportPath(java.lang.String logpath)
设置两秒上报文件路径,内部使用。


onPause

public void onPause()
暂停AVContext工作。
同步返回结果。当然App响应系统OnPause()时,调用此方法,以便SDK暂停相关工作,释放对硬件资源的暂用。


onResume

public void onResume()
恢复AVContext工作。
同步返回结果。当然App响应系统OnResume()时,调用此方法,以便SDK恢复相关工作,重新申请硬件资源。


setRenderMgrAndHolder

public void setRenderMgrAndHolder(GraphicRendererMgr graphicRenderMgr,
                                  SurfaceHolder holder)
设置渲染相关参数。
同步返回结果。目前SDK暂时没有开放渲染方面的接口,App需要使用GraphicRendererMgr完成摄像头、远端视频画面渲染。
这个方法最好在进入房间前调用,如果App需要预览摄像头画面,或者显示远程视频画面。 其中holder主要用于适配Android 3.0前的版本,App需要在界面上提供一个不可以见的holder。
Android 3.0之前的系统,不在提供surfaceHolder,Camera是无法正常启动采集。
注意:不调用此方法,渲染和摄像头无法使用。

Parameters:
graphicRenderMgr - 管理App渲染的管理器。
holder - 用于摄像头采集的SurfaceHolder。

setRenderFunctionPtr

public void setRenderFunctionPtr(int renderFunctionPtr)
设置远端视频数据的回调。

Parameters:
renderFunctionPtr - native回调函数地址。

setHolder

public void setHolder(SurfaceHolder holder)
设置SurfaceView的holder。

Parameters:
holder - 用远端视频数据SurfaceHolder。

onDestroy

public void onDestroy()
销毁AVContext。
同步返回结果。当SDK被关闭时调用,用于释放资源。建议在stopContext()异步回调后调用。


SetLocalConfigDirectory

public void SetLocalConfigDirectory(java.lang.String pathname)
设置本地配置文件路径。内部使用