====== Android SDK 开发指南 ====== 本指南一共包含以下七块信息:
=====第一节. 前言=====
* 将下表Service与Receiver配置到工程中的AndroidManifest文件中
===== 第三节. 快速集成 =====
前提依赖条件 :
1. 下载的云之讯库放到工程的指定位置。
2. SDK权限和核心控制器在AndroidManifest.xml中正确配置。
====3.1 SDK初始化====
在整个应用中初始化只需要执行一次,建议在Application中执行,以下是建议的初始化形式:
* 新建MyApplication.java 并继承自Application
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//SDK初始化
UCSService.initAction(this);
UCSService.init(this, true);
}
}
* 在AndroidManifest.xml文件中添加MyApplication android:name=”.MyApplication”
====3.2 添加监听器====
在使用音视频功能前请先添加好音视频状态接口,接口说明请参考音视频回调接口。
接口设置可参考下列代码:
UCSCall.addCallStateListener(new CallStateListener() {
@Override
public void singlePass(int reason) {
//单通发生时回调
}
@Override
public void onRemoteCameraMode(UCSCameraType cameraType) {
//对端视频模式回调
}
@Override
public void onNetWorkState(int reason, String message) {
//通话中网络状态上报
}
@Override
public void onIncomingCall(String callId, String callType,
String callerNumber, String nickName, String userdata) {
//有新的来电
}
@Override
public void onHangUp(String callId, UcsReason reason) {
//呼叫被释放
}
@Override
public void onDialFailed(String callId, UcsReason reason) {
//呼叫失败
}
@Override
public void onDTMF(int dtmfCode) {
//dtmf回调
}
@Override
public void onCameraCapture(String videoCapFilePath) {
//视频会话截屏回调
}
@Override
public void onAnswer(String callId) {
//接通时回调
}
@Override
public void onAlerting(String callId) {
//对方振铃中回调
}
});
====3.3 连接云之讯服务器====
依赖前提条件: SDK初始化完成。
* 获取TOKEN
token方式登入(所有关于云之讯IM的操作都必须在登入成功后才能使用) token 称为用户令牌, token 则是您 App 上的每一个用户的身份授权象征,使用这个 token 作为该用户的唯一身份凭证与其他用户进行通信。 token是从AS服务器(用户服务器,您必须拥有自己的服务器)获取,token由AS服务器按照一定规则生成。
注意:这个TOKEN不是注册开发者账号时获得的TOKEN, 具体可参考[[http://docs.ucpaas.com/doku.php?id=im_服务端开发文档#创建帐号|IM服务端API介绍及接入]]。
* 获取到TOKEN后就可以使用下面方法接入服务器了:
UCSManager.connect(token, new ILoginListener() {
@Override
public void onLogin(UcsReason reason) {
if (reason.getReason() == UcsErrorCode.NET_ERROR_CONNECTOK) {
//登陆成功
} else {
//登陆失败
}
}
});
* 账户密码方式登入(仅限老平台用户继续使用,新接入者无需关心这种登入方式)
UCSManager.connent(String sid, String sidPwd,String clientId,String clientPwd,new ILoginListener() {
@Override
public void onLogin(UcsReason reason) {
if (reason.getReason() == UcsErrorCode.NET_ERROR_CONNECTOK) {
//登陆成功
} else {
//登陆失败
}
}
});
====3.4 拨打VOIP语音电话====
前提条件:以下所有功能的调用都必须满足以下条件:
- SDK初始化完成。
- SDK监听器添加完成。
- 连接服务器成功(调用UCSManager.connect()并返回UcsErrorCode.NET_ERROR_CONNECTOK)。
* 关键功能API说明:
/**
* 发起一个呼叫
* @param mContext:上下文
* @param callType: VOIP:语音 VIDEO:视频
* @param calledNumner:用户clientId或者手机号码
* @param userdata: 自定义透传数据(用于需要借助PaaS平台透传数据给AS服务器或者被叫方,最大长度128字节) 可设置为””
*/
UCSCall.dial(Context mContext,CallType callType,String calledNumner,String userdata)
* 拨打VOIP语音电话实例代码调用
UCSCall.dial(mContext,UCSCall.CallType.VOIP, “15845678988”,””);
* 响应回调
public void onAlerting(String callId) {
//对方振铃中回调
}
public void onAnswer(String callId) {
//对方接通时回调
}
public void onHangUp(String callId, UcsReason reason) {
//对方拒接或挂断电话
}
public void onDialFailed(String callId, UcsReason reason) {
//呼叫失败
}
====3.5 拨打视频电话====
关键功能API说明
初始化视频设置
/**
*初始化视频配置
* @param mActivity 用于显示视频的activity
* @param remoteLinearLayout:显示对方视频的布局(LinearLayout)
* @param localLinearLayout:显示自己视频的布局(LinearLayout)
*/
void initCameraConfig(Activity mActivity, LinearLayout remoteLinearLayout, LinearLayout localLinearLayout)
刷新摄像头参数参考UCSCameraType
, UCSFrameType
/** 注意:必须在主线程才能调用
* 刷新摄像头
* @param cameraType:要刷新摄像头的枚举
* @param frameType: 是否加上边框的枚举
* @return
*/
int refreshCamera(UCSCameraType cameraType, UCSFrameType frameType)
UCSCall.dial()函数说明参考函数说明参考
* 拨打视频电话实例
mBtnCallVideo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//开启免提
UCSCall.setSpeakerphone(MainActivity.this, true);
//初始化视频配置 必须调用
UCSCall.initCameraConfig(MainActivity.this, remotelayout,
locallayout);
//发起视频呼叫
UCSCall.dial(MainActivity.this, CallType.VIDEO, "13428702535",
"");
}
});
当对方响铃后就可以调用
//开启本地视频显示 该方法必须在主线程调用
UCSCall.refreshCamera(UCSCameraType.LOCALCAMERA, UCSFrameType.FRAME);
当对方接通后就可以调用
//刷新本地和远端视频显示 该方法必须在主线程调用
UCSCall.refreshCamera(UCSCameraType.ALL, UCSFrameType.FRAME);
布局参数定义
private LinearLayout remotelayout, locallayout;
remotelayout = (LinearLayout) findViewById(R.id.remotelayout);
locallayout = (LinearLayout) findViewById(R.id.locallayout);
在要显示视频的布局文件中加入如下代码 视频布局文件可参考:
====3.6 有新的来电====
void onIncomingCall(String callId, String callType, String callerNumber ,String nickName,String userdata)
====3.7 拒接或挂断电话====
/**
* 拒接或挂断电话
* @param mContext:上下文
* @param callId:当前通话ID 可以设置为””
*/
UCSCall.hangUp(Context mContext, String callId);
====3.8 接通电话====
/**
* 接通电话
* @param mContext:上下文
* @param callId:当前通话ID 可以设置为””
*/
UCSCall.answer(Context mContext, String callid);