title: 快速入门

你可以通过一个简单的 示例 来快速了解 WilddogVideoCall SDK 的用法。

环境准备

  • 支持 Android Studio 1.4 以上
  • 支持 JDK 7.0 以上版本
  • 支持 Android 手机系统 4.1 以上,即 Android SDK 16 以上版本

1. 创建应用

1.1 创建野狗应用

在控制面板中创建野狗应用。

video_quickstart_create

1.2 配置应用

  • 1 在 身份认证 标签页中,选择 登录方式 标签,开启 匿名登录 功能(或者选择其他登录方式,例如:QQ登录邮箱登录 等);
  • 2 在 实时视频通话 标签页中,点击 开启视频通话 按钮。

video_quickstart_openanonymous

2. 安装 SDK

2.1 安装 WilddogVideoCall SDK

使用 Gradle 安装 WilddogVideoCall SDK

  1. dependencies {
    compile 'com.wilddog.client:wilddog-video-call-android:2.0.0-beta'
    }

2.2 安装 WilddogAuth SDK

Token(身份认证令牌)是用户在 WilddogVideo SDK 中的唯一身份标识,用于识别用户身份并控制访问权限。 WilddogVideoCall SDK 使用 WilddogAuth SDK 获取合法的 TOKEN。

使用 Gradle 安装 WilddogAuth SDK

  1. dependencies {
    compile 'com.wilddog.client:wilddog-auth-android:2.0.6'
    }

如果出现文件重复导致的编译错误,可以选择在build.grade中添加packagingOptions:

  1. android {
  2. ...
  3. packagingOptions {
  4. exclude 'META-INF/NOTICE'
  5. exclude 'META-INF/LICENSE'
  6. exclude 'META-INF/notice'
  7. exclude 'META-INF/notice.txt'
  8. exclude 'META-INF/license'
  9. exclude 'META-INF/license.txt'
  10. }
  11. }

3. 配置 Android 权限

在 AndroidMainfest.xml 文件中添加:

  1. <!--网络请求权限-->
  2. <uses-permission android:name="android.permission.INTERNET"/>
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  4. <!--相机权限-->
  5. <uses-permission android:name="android.permission.CAMERA" />
  6. <!--麦克风权限-->
  7. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  8. <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

4. 初始化 SDK

4.1 初始化 WilddogAuth SDK

  1. //初始化 Auth SDK
  2. WilddogOptions.Builder builder = new WilddogOptions.Builder().setSyncUrl("http://" + APP_ID + ".wilddogio.com");
  3. WilddogOptions options = builder.build();
  4. WilddogApp.initializeApp(LoginActivity.this, options);

4.2 初始化 WilddogVideoCall SDK

使用 WilddogAuth SDK 进行身份认证,身份认证成功后,初始化 WilddogVideoCall SDK。

  1. //使用匿名登录方式进行身份认证
  2. WilddogAuth.getInstance().signInAnonymously().addOnCompleteListener(new OnCompleteListener<AuthResult>() {
  3. @Override
  4. public void onComplete(Task<AuthResult> task) {
  5. if (task.isSuccessful()) {
  6. WilddogUser user = task.getResult().getWilddogUser();
  7. String token = user.getToken(false).getResult().getToken();
  8. //初始化 Room SDK
  9. WilddogVideoInitializer.initialize(this.getApplicationContext(),VIDEO_APP_ID,token);
  10. } else {
  11. Toast.makeText(context, "登录失败", Toast.LENGTH_SHORT).show();
  12. }
  13. }
  14. });

提示:

VIDEO_APP_ID 为应用实时视频通话标签页中的 VideoAppID 字段值,请勿与实时通信引擎 AppID 混淆。 VideoAppID 为 wd 开头的随机字符串,例如:wd1234567890abcdef。

5. 配置一对一视频通话

使用 WilddogVideoCall.getInstance() 方法获取 WilddogVideoCall 单例,设置代理 <WilddogVideoCall.Listener> 用于监听通话请求:

  1. video.setListener(new WilddogVideoCall.Listener() {
  2. @Override
  3. public void onCalled(Conversation conversation, String s) {
  4. }
  5. @Override
  6. public void onTokenError(WilddogVideoError wilddogVideoError) {
  7. }
  8. });

开始一对一视频通话之前,使用 LocalStream.create() 方法创建本地媒体流。

  1. LocalStreamOptions.Builder builder = new LocalStreamOptions.Builder();
  2. LocalStreamOptions options = builder.build();
  3. LocalStream localStream = LocalStream.create(options);

6. 开始一对一视频通话

使用 WilddogAuth 登录成功后,用户会获得唯一的 uid,在 WilddogVideoCall SDK 中,使用 uid 作为用户的身份标识。

6.1 邀请一对一视频通话

使用 call() 来发起通话请求:

  1. mConversation = video.call(remoteUid,localStream,"conversationDemo");

6.2 接受一对一视频通话

被邀请的用户通过 WilddogVideoCall.ListeneronCalled(Conversation conversation, String s) 方法收到 Conversation 实例,使用 accept() 接收一对一视频通话:

  1. video.setListener(new WilddogVideoCall.Listener() {
  2. @Override
  3. public void onCalled(Conversation conversation, String s) {
  4. mConversation = conversation;
  5. mConversation.accept();
  6. }
  7. @Override
  8. public void onTokenError(WilddogVideoError wilddogVideoError) {
  9. }
  10. });

6.3 播放媒体流

一对一视频通话链接成功后,通话双方会通过 Conversation 代理的 onStreamReceived(RemoteStream remoteStream) 方法收到 RemoteStream 实例,使用 attach() 方法播放远端媒体流:

  1. conversation.setConversationListener(new Conversation.Listener() {
  2. @Override
  3. public void onCallResponse(CallStatus callStatus) {
  4. }
  5. @Override
  6. public void onStreamReceived(RemoteStream remoteStream) {
  7. WilddogVideoView remoteView = (WilddogVideoView)findViewById(R.id.wvv_remote);
  8. remoteStream.attach(remoteView);
  9. }
  10. @Override
  11. public void onClosed() {
  12. }
  13. @Override
  14. public void onError(WilddogVideoError wilddogVideoError) {
  15. }
  16. });

7. 更多应用

更多详细信息请见 完整指南API 文档