====== Android SDK 函数说明 ====== ===== 一. Android SDK 介绍 ===== UCPaaS融合通讯平台Android SDK以Java libs的方式提供给Android开发人员,该SDK提供了互联网语音通话、视频通话、实时语音群聊等能力。可以快速便捷帮您的Android应用APP实现语音通话、视频通话,语音会议等功能。 在使用AndroidSDK之前,您可以先体验一下DEMO的功能演示,可以帮助您快速了解SDK提供的相关功能以及相关功能的实现方式。 请点击[[http://www.ucpaas.com/freetrial/VoiceVerificationCode_demo#demo|Demo]]体验。 ==== 1. SDK 通讯类介绍 ==== ^名称 ^说明 | |UCSService | 核心通讯类,用于连接云服务平台 | |UCSCall | VoIP电话管理类,用于呼叫请求,挂断,静音等一系统操作 | ==== 2. SDK 工具类介绍 ==== ^名称 ^说明 | |DevicesAddressTools | 获取设备信息工具类 | |FileTools | 文件工具类 | |PhoneNumberTools| 电话号码验证工具类 | ===== 二. SDK 接口介绍 ===== ===== 1. 初始化及配置 ===== ====1.1. 初始化SDK==== 原型:- UCSService.init(Context mContext, boolean isSwitch) 功能:初始化SDK ,启动语音,视频等功能 返回:无 备注:必须在调用其他能力接口前调用 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |当前程序上下文 | |isSwitch |Boolean |无 |日志开关 | ====1.2. 添加监听器==== 原型:- UCSService.addConnectionListener(ConnectionListener connectionListener) 功能:添加TCP连接监听器 返回:无 备注:连接服务成功的监听器 参数: ^参数名 ^类型 ^约束 ^说明 | |connectionListener |ConnectionListener |无 |监听接口 | ====1.3. 移除监听器==== 原型:- UCSService.removeConnectionListener(ConnectionListener cl) 功能:移除监听器接口 返回:无 备注:移除之前添加的监听器 参数: ^参数名 ^类型 ^约束 ^说明 | |cl |ConnectionListener |无 |监听接口 | ====1.4. 连接云平台(sid)==== 原型:- UCSService.connect(String accountSid, String accountToken, String ClientNumber, String ClientPwd) 功能:连接云平台 返回:无 备注:初始化后连接云平台 参数: ^参数名 ^类型 ^约束 ^说明 | |accountSid |String |无 |开发者账户 | |accountToken |String |无 |开发者账户密码 | |ClientNumber |String |无 |子账号 | |ClientPwd |String |无 |子账号密码 | ====1.5. 连接云平台(token)==== 原型:- UCSService.connect(String token) 功能:连接云平台 返回:无 备注:初始化后连接云平台 参数: ^参数名 ^类型 ^约束 ^说明 | |token |String |无 |开发者账户密码 | ====1.6. 获取连接云平台状态==== 原型:- UCSService.isConnected() 功能:判断TCP连接是否成功 返回:true:连接成功;false:连接失败 备注:TCP连接成功后判断 是否TCP连接成功 参数:无 ====1.7. 连接云平台回调==== ===1.7.0. 连接云平台成功回调=== 原型:- onConnectionSuccessful() 功能:连接云平台成功回调 返回:无 备注:连接云平台成功后回调此方法 参数:无 ===1.7.1. 连接云平台失败回调=== 原型:- onConnectionFailed(UcsReason reason) 功能:连接云平台失败回调 返回:无 备注:连接云平台失败后回调此方法 参数: ^参数名 ^类型 ^约束 ^说明 | |Reason |UcsReason |无 |失败返回信息 | ====1.8. 断开云平台连接==== 原型:- UCSService.uninit() 功能:断开与云平台的连接 返回:无 备注:断开与云平台的连接 参数:无 ====1.9. 获取SDK版本号==== 原型:- UCSService.getSDKVersion() 功能:获取SDK 的版本 返回:SDK 版本号 备注:开发者通过此方法获得版本号 参数:无 ====1.10. 打开/关闭SDK日志==== 原型:- UCSService.openSdkLog(Context mContext,boolean isOpenSdkLog) 功能:打开或者关闭SDK日志 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |应用上下文 | |isOpenSdkLog |Boolean |无 |是否开启SDK日志 | ====1.11. 初始化SDK里面广播的action==== 原型:- UCSService.initAction(Context mContext) 功能:初始化SDK里面广播的action,保证广播的action是唯一的 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |应用上下文 | =====2. 互联网音频通话能力接口===== voip是基于互联网网络进行语音传输的服务,无论客户处于互联网网络还是通讯网络,都可以无缝连接互联网语音的能力接口,支持多个平台(Android 、iOS、 Windows)。 ====2.1 注册VoIP电话监听器==== 原型:- UCSCall.addCallStateListener(CallStateListener csl) 功能:注册VoIP电话监听器,监听VoIP电话的各种状态 返回:无 备注:监听用户拨打电话的状态回调 参数: ^参数名 ^类型 ^约束 ^说明 | |csl |CallStateListneer |无 |监听器实例 | ====2.2 移除VOIP电话监听器==== 原型:- UCSCall. removeCallStateListener (CallStateListener csl) 功能:移除VoIP电话监听器,监听VoIP电话的各种状态 返回:无 备注:移除VOIP的电话监听器 参数: ^参数名 ^类型 ^约束 ^说明 | |csl |CallStateListneer |无 |监听器实例 | ====2.3 发起呼叫==== 原型:- UCSCall.dial(Context mContext,CallType callType,String calledNumner,String userdata) 功能:发起呼叫 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |callType |CallType |无 |拨打电话方式VOIP:音频, VIDEO:视频 | |calledNumber |String |无 |被叫手机号码或Client账号 | |userData |String |无 |自定义透传数据(用于需要借助PaaS平台透传数据给AS服务器或者被叫方,最大长度128字节) | ====2.4 释放通话==== 原型:- UCSCall.hangUp(Context mContext, String callid) 功能:挂断电话 返回:无 备注:挂断电话,callId一般传空字符串 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |callid |String |无 |当前通话id (目前版本为空) | ====2.5 接听来电==== 原型:- UCSCall.answer(Context mContext, String callid) 功能:接听电话 返回:无 备注:被叫接听,callid一般传空字符串 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |callid |String |无 |当前通话id (目前版本为空) | ====2.6 发送DTMF==== 原型:- UCSCall.sendDTMF(Context mContext, int keyCode, EditText call_dtmf) 功能:发送DTMF 返回:无 备注:发送拨打电话数字 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |keyCode |int |无 |KeyEnvent CODE | |call_dtmf |EditText |无 |用于显示输入的keyCode值 | ====2.7 设置扬声器状态==== 原型:- UCSCall.setSpeakerphone(Context mContext,boolean isSpeakerphoneOn) 功能:设置扬声器状态 返回:无 备注:控制扬声器的开关 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |isSpeakerphoneOn |Boolean|无 |false:关闭 true:开启 | ====2.8 获取扬声器状态==== 原型:- UCSCall.isSpeakerphoneOn(Context mContext) 功能:获取扬声器状态 返回:true:开启 ;false:关闭 备注:获取扬声器状态 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | ====2.9 设置静音状态==== 原型:- UCSCall.setMicMute( boolean isMicMute) 功能:设置静音状态 返回:无 备注:设置静音 参数: ^参数名 ^类型 ^约束 ^说明 | |isMicMute |boolean |无 |true:静音 ;false:正常 | ====2.10 获取静音状态==== 原型:- UCSCall.isMicMute() 功能:获取静音状态 返回:boolean true:静音 ;false:正常 备注:获取设备的静音状态 参数:无 ====2.11 播放来电铃声==== 原型:- UCSCall.startRinging(Context mContext, boolean isVibrator) 功能:播放来电铃声 返回:无 备注:播放来电铃声,这个铃声是系统铃声 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |isVibrator |boolean |无 |是否振动 | ====2.12 停止播放来电铃声==== 原型:- UCSCall.stopRinging(Context mContext) 功能:停止播放来电铃声 返回:无 备注:停止播放来电铃声 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | ====2.13 播放去电铃声==== 原型:- UCSCall.startCallRinging(Context mContext,String fileName) 功能:播放去电铃声 返回:无 备注:自己定义铃声文件,这个铃声文件一般放在assets目录下 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | |fileName |String |无 |音频裸数据文件名称,为PCM格式,放在assets目录下 | ====2.14 停止播放去电铃声==== 原型:- UCSCall.stopCallRinging(Context mContext) 功能:停止播放去电铃声 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |程序上下文 | ====2.15 开启录音==== 原型:- UCSCall.StartRecord(String filePath) 功能:开启录音 返回: 0:成功;-1:失败 备注:此方法在电话接通时设置 参数: ^参数名 ^类型 ^约束 ^说明 | |filePath |String |无 |保存录音文件路径 | ====2.16 停止录音==== 原型:- UCSCall.StopRecord () 功能:停止录音 返回: 0:成功;-1:失败 备注:此方法在电话挂断时设置 参数:无 =====3. 互联网音频通话状态回调接口===== ====3.1 呼叫失败回调通知==== 原型:- onDialFailed (String callid,UcsReason reason) 功能:呼叫失败回调 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |callid |String |无 |当前通话id (目前版本可以为空)| |reason |UcsReason |无 |呼叫失败的原因 | ====3.2 呼叫被释放回调通知==== 原型:- onHangUp(String callid,UcsReason reason) 功能:呼叫释放 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |callid |String |无 |当前通话id (目前版本可以为空)| |reason |UcsReason |无 |呼叫被释放的原因 | ====3.3 被叫振铃回调通知==== 原型:- onAlerting (String callid) 功能:呼叫振铃 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |callid |String |无 |当前通话id (目前版本可以为空)| ====3.4 被叫接听回调通知==== 原型:- onAnswer(String callid) 功能:被叫接听 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |callid |String |无 |当前通话id (目前版本可以为空)| ====3.5 来电回调通知==== 原型:- onIncomingCall(String callId, String callType, String callerNumber ,String nickName,String userdata) 功能:来电话时候回调此方法 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |callid |String |无 |返回当前电话id号 | |callType |String |无 |来电类型:0:Voip来电 1:视频来电 | |callerNumber |String |无 |主叫号码 | |nickName |String |无 |显示主叫昵称(未使用时,可不关心) | |userdata |String |无 |用户透传数据(未使用时,可不关心) | ====3.6 DTMF回调通知==== 原型:- public void onDTMF(int dtmfCode) 功能:DTMF回调 返回:无 备注:DTMF回调(*号为10 #号为11) 参数: ^参数名 ^类型 ^约束 ^说明 | |dtmfCode |int |无 |DTMF回调(*号为10 #号为11) | ====3.7 单通回调==== 原型:- public void singlePass(int reason) 功能:单通出现后回调此方法 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |reason |int |无 |单通回调的错误码 | ====3.8 网络状态上报回调==== 原型:- public void onNetworkState(int reason,String message) 功能:网络状态上报回调此方法 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |reason |int |无 |0无法获取网络状态, 1网络状态极好, 2网络状态良好, 3网络状态一般, 4网络状态极差 | |message |String |无 |描述 | =====4. 互联网视频通话能力接口===== ====4.1 设置视频显示参数==== 原型:- UCSCall.initCameraConfig(Activity mActivity, LinearLayout remoteLinearLayout, LinearLayout localLinearLayout) 功能:初始化视频设置 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mActivity |Activity |无 |显示视频界面的activity | |remoteLinearLayout |LinearLayout |无 |显示对方视频的布局 | |localLinearLayout |LinearLayout |无 |显示本地视频的布局 | ====4.2 用户自定义编解码参数==== 原型:- UCSCall. setVideoAttr(VideoDecParam videoDecparam,VideoEncParam videoEncParam) 功能:设置用户定义的编解码 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |videoDecparam |VideoDecParam |无 |编码参数 | |videoEncParam |VideoEncParam |无 |解码参数 | ====4.3 刷新摄像头==== 原型:- UCSCall. refreshCamera(UCSCameraType cameraType, UCSFrameType frameType) 功能:刷新视频显示 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |cameraType |UCSCameraType |无 |刷新摄像头的枚举 | |frameType |UCSFrameType |无 |是否显示边框的枚举 | ====4.4 获取摄像头个数==== 原型:- UCSCall. getCameraNum() 功能:获取摄像头个数 返回:摄像头个数 备注:无 参数:无 ====4.5 获取当前摄像头索引==== 原型:- UCSCall. getCurrentCameraIndex() 功能:获取当前摄像头索引 返回:摄像头索引 备注:无 参数:无 ====4.6 切换摄像头==== 原型:- UCSCall. switchCameraDevice(int cameraIndex,RotateType rotateType) 功能:切换摄像头旋转角度 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |cameraIndex |int |无 |摄像头索引 | |rotateType |RotateType |无 |旋转角度 | ====4.7 打开本地/远程摄像头==== 原型:- UCSCall. openCamera(UCSCameraType camera) 功能:打开本地/远程摄像头 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |camera |UCSCameraType |无 |摄像头类型枚举 | ====4.8 关闭本地/远程摄像头==== 原型:- UCSCall. closeCamera(UCSCameraType camera) 功能:关闭摄像头 返回:无 备注:停止本地摄像头,把本地界面隐藏但是可以接收数据和发送数据 参数: ^参数名 ^类型 ^约束 ^说明 | |cameraType |UCSCameraType |无 |摄像头类型枚举 | ====4.9 视频模式切换==== 原型:- UCSCall. switchVideoMode(UCSCameraType cameraType) 功能:视频模式切换 返回:无 备注:四种视频模式:本地模式、远程模式、后台模式、正常模式。 * 远程模式 : 处于视频流接收状态。可以看到对方的视频,对方不能看本端的视频。 * 本地模式 : 处于视频流发送状态,不可以看到对方的视频,对方能看本端的视频。 * 后台模式 :关闭了接收数据,但是可以发送数据,这个状态一般在刷新摄像头和关闭摄像头方法中使用 * 正常模式 : 处于视频流发送以及接收状态,双方视频正常状态。 参数: ^参数名 ^类型 ^约束 ^说明 | |cameraType |UCSCameraType |无 |UCSCameraType: 枚举 远程模式、本地模式、后台模式、正常模式 | ====4.10 开启/关闭视频来电预览==== 原型:- UCSCall. setCameraPreViewStatu(Context mContext,boolean isPreView) 功能:开启/关闭视频来电 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |上下文 | |isPreView |boolean |无 |true:支持 false:不支持 | ====4.11 获取来电时是否支持预览==== 原型:- UCSCall. isCameraPreviewStatu(Context mContext) 功能:查询是否开启视频来电预览 返回:true:已开启 false:未开启 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mContext |Context |无 |上下文 | ====4.12 视频截图==== 原型:- UCSCall. videoCapture(UCSCameraType isLocal,String filenName,String savePath) 功能:视频截图 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |isLocal |UCSCameraType |无 |摄像头类型枚举 | |filenName |String |无 |预保存的文件名 | |savePath |String |无 |视频文件保存的路径 | ====4.13 视频旋转==== 原型:- UCSCall. videoSetSendReciveRotation(int send_rotation, int recived_rotation) 功能:视频旋转 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |send_rotation |int |无 |发送的视频旋转角度 | |recived_rotation |int |无 |接收的视频旋转角度 | ====4.14 打开/关闭闪光灯==== 原型:- UCSCall. setFlashCode(boolean mode) 功能:打开/关闭闪光灯 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |mode |boolean |无 |打开:true关闭:false | ====4.15 获取闪关灯状态==== 原型:- UCSCall. getFlashCode() 功能:获取闪关灯状态 返回:ture:已开启 false:已关闭 备注:无 参数:无 =====5. 互联网视频通话状态回调接口===== ====5.1 远程视频模式回调通知==== 原型:- public void onRemoteCameraMode (UCSCameraType cameraType) 功能:回调远端视频模式 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |cameraType |UCSCameraType |LOCALCAMERA,只开了本地视频;REMOTECAMERA, 只开了远端视频;ALL 双向视频都开启了 |无 | ====5.2 视频截屏回调通知==== 原型:- public void onCameraCapture (String videoCapFilePath) 功能:视频截屏成功调用 返回:无 备注:无 参数: ^参数名 ^类型 ^约束 ^说明 | |videoCapFilePath |String |无 |截屏图片保存的路径 | =====6. 枚举类说明===== ====6.1 CallType 呼叫类型==== 枚举类,呼叫类型:VOIP(音频),VIEDO(视频) ====6.2 ClientType 账户类型==== 枚举类,两种账户类型:PHONE,CLIENT。 ====6.3 RotateType 视频旋转类型==== 枚举类,五种旋转类型: DEFAULT: 顺时针旋转90度 RETATE_0: 横的90度,头朝x轴负方向 RETATE_90: 顺时针旋转90度 RETATE_180: 顺时针旋转180度 RETATE_270: 顺时针旋转270度 ====6.4 UCSCameraType 视频类型==== 枚举类,四种视频类型: LOCALCAMERA: 本地视频,处于发送状态时候,只发送本地视频流。 REMOTECAMERA: 远程视频,处于接收状态时候,只接收对方的视频流。 BACKGROUNDCAMERA: 后台模式,关闭了接收但是可以发送,一般在刷新摄像头和关闭摄像头方法中使用。 ALL: 全部,既发送也接收视频流。 ====6.5 UCSFrameType视频边框类型==== 枚举类,两种边框类型:ORIGINAL,FRAME。 ====6.6 VideoExternFormat外部视频采集格式类型==== 枚举类,两种采集格式类型:i420,h264。 =====7. 注意事项===== ====7.1 视频电话使用流程(代码调用流程)==== {{:video_sdk:android_sdk_notice01.png|}} {{:video_sdk:android_sdk_notice02.png|}} ====7.2 SDK所需权限==== ====7.3 配置SDK核心控制器==== 在AndroidManifest中配置如下核心控制器: ====7.4 AndroidManifest注意事项:==== 请勿在AndroidManifest中配置如下属性,否则会导致视频功能不可用: android:targetSdkVersion ====7.5 摄像头操作接口==== 关于摄像头的操作接口,如前后摄像头切换、摄像头旋转角度等操作,需要在通话建立后,才可以操作。通话结束后的复位操作需要开发者自己完成。 ====7.6 静音、扬声器、闪光灯等设备操作接口==== 静音、扬声器、闪光灯等设备操作接口,需要在主叫收到onAlerting回调时或者被叫收到onIncomming回调时进行操作。通话结束后的复位操作需要开发者自己完成。 ====7.7 视频来电预览操作接口==== 视频来电预览接口,在进行通话业务前进行配置。配置一次即可,不需要每通电话都配置。 =====8. 相关对象说明===== ^所属类 ^函数 ^说明 | |UcsReason |getReason() |获取当前错误码 | |UcsReason |getMsg() |获取错误码描述 | ^枚举类 ^枚举值 ^说明 | |VideoExternFormat |i420 |i420文件 | |VideoExternFormat |h264 |h264文件 |