package com.bairuitech.anychat; // 不能修改包的名称
import java.lang.ref.WeakReference;
import android.view.Surface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
public class AnyChatCoreSDK
{
AnyChatBaseEvent baseEvent;
AnyChatStateChgEvent stateChgEvent;
AnyChatPrivateChatEvent privateChatEvent;
AnyChatTextMsgEvent textMsgEvent;
AnyChatTransDataEvent transDataEvent;
AnyChatVideoCallEvent videoCallEvent;
AnyChatUserInfoEvent userInfoEvent;
AnyChatDataEncDecEvent encdecEvent;
AnyChatRecordEvent recordEvent;
static MainHandler mHandler;
public static AnyChatAudioHelper mAudioHelper = new AnyChatAudioHelper();
public static AnyChatCameraHelper mCameraHelper = new AnyChatCameraHelper();
public AnyChatSensorHelper mSensorHelper = new AnyChatSensorHelper();
public AnyChatVideoHelper mVideoHelper = new AnyChatVideoHelper();
private static int HANDLE_TYPE_NOTIFYMSG = 1; // 消息通知
private static int HANDLE_TYPE_TEXTMSG = 2; // 文字信息
private static int HANDLE_TYPE_TRANSFILE = 3; // 文件传输
private static int HANDLE_TYPE_TRANSBUF = 4; // 缓冲区传输
private static int HANDLE_TYPE_TRANSBUFEX = 5; // 扩展缓冲区传输
private static int HANDLE_TYPE_SDKFILTER = 6; // SDK Filter Data
private static int HANDLE_TYPE_VIDEOCALL = 7; // 视频呼叫
private static int HANDLE_TYPE_RECORD = 8; // 录像、拍照
// 设置AnyChat基本事件通知接口
public void SetBaseEvent(AnyChatBaseEvent e)
{
mHandler = new MainHandler(this);
RegisterNotify();
this.baseEvent = e;
}
// 设置AnyChat状态变化事件通知接口
public void SetStateChgEvent(AnyChatStateChgEvent e)
{
RegisterNotify();
this.stateChgEvent = e;
}
// 设置AnyChat私聊消息通知接口
public void SetPrivateChatEvent(AnyChatPrivateChatEvent e)
{
RegisterNotify();
this.privateChatEvent = e;
}
// 设置文字聊天消息通知接口
public void SetTextMessageEvent(AnyChatTextMsgEvent e)
{
RegisterNotify();
this.textMsgEvent = e;
}
// 设置数据传输消息通知接口
public void SetTransDataEvent(AnyChatTransDataEvent e)
{
RegisterNotify();
this.transDataEvent = e;
}
// 设置视频呼叫事件通知接口
public void SetVideoCallEvent(AnyChatVideoCallEvent e)
{
RegisterNotify();
this.videoCallEvent = e;
}
// 设置用户信息(好友)事件通知接口
public void SetUserInfoEvent(AnyChatUserInfoEvent e)
{
RegisterNotify();
this.userInfoEvent = e;
}
// 设置数据加密、解密回调事件接口
public void SetDataEncDecEvent(AnyChatDataEncDecEvent e)
{
RegisterNotify();
this.encdecEvent = e;
}
// 设置视频录制、拍照事件通知接口
public void SetRecordSnapShotEvent(AnyChatRecordEvent e)
{
RegisterNotify();
this.recordEvent = e;
}
// 查询SDK主版本号
public int GetSDKMainVersion()
{
return GetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_MAINVERSION);
}
// 查询SDK从版本号
public int GetSDKSubVersion()
{
return GetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_SUBVERSION);
}
// 查询SDK编译时间
public String GetSDKBuildTime()
{
return GetSDKOptionString(AnyChatDefine.BRAC_SO_CORESDK_BUILDTIME);
}
// 注册消息通知
public native int RegisterNotify();
// 初始化SDK
public native int InitSDK(int osver, int flags);
// 连接服务器
public native int Connect(String serverip, int port);
// 登录系统
public native int Login(String username, String password);
// 进入房间(房间ID)
public native int EnterRoom(int roomid, String password);
// 进入房间(房间名称)
public native int EnterRoomEx(String roomname, String password);
// 退出房间
public native int LeaveRoom(int roomid);
// 注销登录
public native int Logout();
// 释放资源
public native int Release();
// 获取在线用户列表
public native int[] GetOnlineUser();
// 设置视频显示位置
public native int SetVideoPos(int userid, Surface s, int lef, int top, int right, int bottom);
// 用户摄像头控制
public native int UserCameraControl(int userid, int bopen);
// 用户音频控制
public native int UserSpeakControl(int userid, int bopen);
// 用户音、视频录制
public native int StreamRecordCtrl(int userid, int bstartrecord, int flags, int param);
// 用户音、视频录制(扩展)
public native int StreamRecordCtrlEx(int userid, int bstartrecord, int flags, int param, String szUserStr);
// 用户图像抓拍
public native int SnapShot(int userid, int flags, int param);
// 获取指定音频设备的当前音量
public native int AudioGetVolume(int device);
// 设置指定音频设备的音量
public native int AudioSetVolume(int device, int volume);
// 获取指定用户的字符串类型状态
public native String QueryUserStateString(int userid, int infoname);
// 获取指定用户的整型状态
public native int QueryUserStateInt(int userid, int infoname);
// 获取指定用户的说话音量(0 ~ 100)
public native int GetUserSpeakVolume(int userid);
// 获取指定用户的摄像头状态
public native int GetCameraState(int userid);
// 获取指定用户的音频设备状态
public native int GetSpeakState(int userid);
// 获取指定用户的视频分辨率宽度
public native int GetUserVideoWidth(int userid);
// 获取指定用户的视频分辨率高度
public native int GetUserVideoHeight(int userid);
// 获取指定房间的字符串类型状态
public native String QueryRoomStateString(int roomid, int infoname);
// 获取指定房间的整型状态
public native int QueryRoomStateInt(int roomid, int infoname);
// 设置服务器认证密码
public native int SetServerAuthPass(String Password);
// 设置SDK参数(整型值)
public static native int SetSDKOptionInt(int optname, int optvalue);
// 设置SDK参数(字符串值)
public native int SetSDKOptionString(int optname, String optvalue);
// 查询SDK参数(整型值)
public static native int GetSDKOptionInt(int optname);
// 查询SDK参数(字符串值)
public native String GetSDKOptionString(int optname);
// 发送文字消息
public native int SendTextMessage(int userid, int secret, String message);
// 传送文件
public native int TransFile(int userid, String filepath, int wparam, int lparam, int flags, AnyChatOutParam outParam);
// 透明通道传送缓冲区
public native int TransBuffer(int userid, byte[] buf, int len);
// 透明通道传送缓冲区扩展
public native int TransBufferEx(int userid, byte[] buf, int len, int wparam, int lparam, int flags, AnyChatOutParam outParam);
// 终止传输任务
public native int CancelTransTask(int userid, int taskid);
// 查询传输任务状态
public native int QueryTransTaskInfo(int userid, int taskid, int infoname, AnyChatOutParam outParam);
// 发送SDK Filter 通信数据
public native int SendSDKFilterData(byte[] buf, int len);
// 获取音频播放数据
public static native byte[] FetchAudioPlayBuffer(int size);
// 本地视频自动对焦
public void CameraAutoFocus()
{
SetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_FOCUSCTRL, 1);
}
// 查询指定用户名称
public String GetUserName(int userid)
{
return QueryUserStateString(userid, AnyChatDefine.BRAC_USERSTATE_NICKNAME);
}
// 查询指定用户互联网IP地址
public String GetUserIPAddr(int userid)
{
return QueryUserStateString(userid, AnyChatDefine.BRAC_USERSTATE_INTERNETIP);
}
// 枚举本地视频采集设备
public native String[] EnumVideoCapture();
// 选择指定的视频采集设备
public native int SelectVideoCapture(String devicename);
// 获取当前使用的视频采集设备
public native String GetCurVideoCapture();
// 枚举本地音频采集设备
public native String[] EnumAudioCa