

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 适用于安卓的亚马逊 Kinesis Video Streams WebRTC SDK
<a name="kvswebrtc-sdk-android"></a>

以下 step-by-step说明描述了如何使用安卓版 WebRTC SDK 下载、构建和运行 Kinesis Video Streams 及其相应示例。

**注意**  
亚马逊 Kinesis Video Streams 不 IPv6 支持安卓设备上的地址。查看有关在您的 [Android 设备 IPv6 上禁](https://www.cactusvpn.com/tutorials/how-to-disable-ipv6-on-android/)用的更多信息。

## 下载 SDK
<a name="download-sdk-android"></a>

要在 Android 中下载 WebRTC 开发工具包，请运行以下命令：

```
$ git clone https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-android.git
```

## 构建 SDK
<a name="build-sdk-android"></a>

要在 Android 中构建 WebRTC 开发工具包，请完成以下步骤：

1. 选择**以项目形式打开**打开 `amazon-kinesis-video-streams-webrtc-sdk-android/build.gradle`，将安卓 WebRTC SDK 导入 Android Studio 集成式开发环境（IDE）。

1. 如果您第一次打开项目，它会自动同步。如果不是，则发起同步。当您看到编译错误时，请选择**安装缺失 SDKs 的 SDK 软件包**，然后选择 “**接受**” 并完成安装，从而选择安装所需的任何内容。

1. 配置 Amazon Cognito（用户池和身份池）设置。有关详细步骤，请参阅[为软件开发工具包配置 Amazon Cognito](#build-sdk-android-cognito)。这会生成构建 Android WebRTC 开发工具包所需的身份验证和授权设置。

1. 在 Android IDE 中，打开 `awsconfiguration.json`（从 `src/main/res/raw/`）。此文件如下所示：

   ```
   {
     "Version": "1.0",
     "CredentialsProvider": {
       "CognitoIdentity": {
         "Default": {
           "PoolId": "REPLACE_ME",
           "Region": "REPLACE_ME"
         }
       }
     },
     "IdentityManager": {
       "Default": {}
     },
     "CognitoUserPool": {
       "Default": {
         "AppClientSecret": "REPLACE_ME",
         "AppClientId": "REPLACE_ME",
         "PoolId": "REPLACE_ME",
         "Region": "REPLACE_ME"
       }
     }
   }
   ```

   使用通过运行[为软件开发工具包配置 Amazon Cognito](#build-sdk-android-cognito)中的步骤生成的值更新 `awsconfiguration.json`。

1. 确保您的 Android 设备已连接到运行 Android IDE 的计算机。在 Android IDE 中，选择连接的设备，然后构建并运行 WebRTC Android 开发工具包。

   此步骤将在您的 Android 设备上安装一个名为 `AWSKinesisVideoWebRTCDemoApp` 的应用程序。使用此应用程序，您可以验证移动、网络和物联网设备客户端之间的 Web audio/video RTC 直播。

## 运行示例应用程序
<a name="run-sdk-android"></a>

****

完成以下步骤：

1. 在您的 Android 设备上，打开**AWSKinesisVideoWebRTCDemo应用程序**并使用新的（先创建）或现有的 Amazon Cognito 账户登录。

1. 在**AWSKinesisVideoWebRTCDemo应用程序**中，导航到**信道配置**页面，然后创建新的信令信道或选择现有信令信道。
**注意**  
目前，使用此 SDK 中的示例应用程序，您只能在 **AWSKinesisVideoWebRTCDemoApp** 中运行一个信令通道。

1. 可选：如果您想以查看器身份连接到此通道，请选择唯一的 **Client Id (客户端 ID)**。仅当多个查看器连接到一个通道时，才需要客户端 ID。这有助于通道的主设备识别各自的查看器。

1. 选择 Amazon Web Services 区域 以及是否要发送音频或视频数据，或者两者兼而有之。

1. 要验证 peer-to-peer直播，请执行以下任一操作：
**注意**  
请务必在本演示中使用的所有客户端上指定相同的信令频道名称、 Amazon 区域、观众 ID 和 Amazon 账户 ID。
   + Peer-to-peer 在两台 Android 设备之间进行直播：主设备和查看器
     + 使用上述步骤，在两个 Android 设备上下载、构建和运行 Android WebRTC 开发工具包。
     + 在一台 Android 设备上以主模式打开**AWSKinesisVideoWebRTCDemo应用程序**（选择 S **TART MASTER**），开始新的会话（信令信道）。
**注意**  
目前，任何给定信令通道只能有一个主设备。
     + 在查看器模式下在第二台 Android 设备上打开**AWSKinesisVideoWebRTCDemo应用程序**，以连接到在上述步骤中启动的信令频道（会话）（选择 S **TART VIEWER**）。

       验证查看者是否可以看到主人的 audio/video 数据。
   + Peer-to-peer 在嵌入式 SDK 主站和安卓设备查看器之间进行流式传输
     + 在摄像头设备上，下载、构建 [亚马逊 Kinesis Video Streams 带有 WebRTC 开发工具包的 C 语言版本，适用于嵌入式设备](kvswebrtc-sdk-c.md) 并以主设备模式运行它。
     + 使用上述步骤，在 Android 设备上下载、构建和运行 Android WebRTC 开发工具包。在查看器模式下在此 Android 设备上打开**AWSKinesisVideoWebRTCDemo应用程序**，确认查看者可以看到嵌入式 SDK 主 audio/video 服务器的数据。
   + Peer-to-peer 在作为主设备的 Android 设备和作为查看器的网络浏览器之间进行流式传输
     + 使用上述步骤，在 Android 设备上下载、构建和运行 Android WebRTC 开发工具包。在主模式下打开此 Android 设备上的**AWSKinesisVideoWebRTCDemo应用程序**（选择 S **TART MASTER**），开始新的会话（信令信道）。
     + 下载、构建 [带有 WebRTC 开发工具包的 Amazon Kinesis Video Streams 适用于网络应用程序 JavaScript](kvswebrtc-sdk-js.md) 并以查看器身份运行它，并验证查看器是否可以看到 Android 主设备的音频/视频。

## 为软件开发工具包配置 Amazon Cognito
<a name="build-sdk-android-cognito"></a>

### 先决条件
<a name="androidsdk-prerequisites"></a>
+ 建议使用 [Android Studio](https://developer.android.com/studio/index.html) 检查、编辑和运行应用程序代码。我们建议使用最新的稳定版本。
+ 在示例代码中，您需要提供亚马逊 Cognito 凭证。

按照以下步骤设置 Amazon Cognito 用户池和身份池。

### 设置用户池
<a name="setup-user-pool"></a>

**设置用户池**

1. 登录 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)并验证区域是否正确。

1. 在左侧导航栏中，选择 “**用户池**”。

1. 在 “**用户池**” 部分，选择 “**创建用户池**”。

1. 完成以下各节：

   1. **第 1 步：配置登录体验**-在 **Cognito 用户池登录**选项部分，选择相应的选项。

      选择**下一步**。

   1. **步骤 2：配置安全要求**-选择相应的选项。

      选择**下一步**。

   1. **第 3 步：配置注册体验**-选择相应的选项。

      选择**下一步**。

   1. **步骤 4：配置消息传送**-选择相应的选项。

      在 **IAM 角色选择**字段中，选择现有角色或创建新角色。

      选择**下一步**。

   1. **第 5 步：集成您的应用程序**-选择相应的选项。

      在 “**初始应用程序客户端**” 字段中，选择 “**机密客户端**”。

      选择**下一步**。

   1. **步骤 6：查看并创建**-查看您在前面部分中的选择，然后选择**创建用户池**。

1. 在 “**用户池**” 页面上，选择您刚刚创建的池。

   复制**用户池 ID** 并记下来以备后用。在`awsconfiguration.json`文件中，这是`CognitoUserPool.Default.PoolId`。

1. 选择 “**应用程序集成**” 选项卡，然后转到页面底部。

1. 在**应用程序客户端列表**部分，选择您刚刚创建的**应用程序客户端名称**。

   复制**客户端 ID** 并记下来以备后用。在`awsconfiguration.json`文件中，这是`CognitoUserPool.Default.AppClientId`。

1. 出示**客户机密**并记下来以备后用。在`awsconfiguration.json`文件中，这是`CognitoUserPool.Default.AppClientSecret`。

### 设置身份池
<a name="setup-identity-pool"></a>

**设置身份池**

1. 登录 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)并验证区域是否正确。

1. 在左侧导航栏中，选择 “**身份池**”。

1. 选择**创建身份池**。

1. 配置身份池。

   1. **步骤 1：配置身份池信任**-完成以下部分：
      + **用户访问权限**-选择**经过身份验证的访问权限**
      + **经过身份验证的身份源**-选择 **Amazon Cognito** 用户池

      选择**下一步**。

   1. **步骤 2：配置权限**-在 “**经过身份验证的角色**” 部分，填写以下字段：
      + **IAM 角色**-选择**创建新的 IAM 角色**
      + **IAM 角色名称**-输入名称并记下来供后续步骤使用。

      选择**下一步**。

   1. **步骤 3：Connect 身份提供商**-在 “**用户池详细信息**” 部分中，填写以下字段：
      + **用户池 ID**-选择您之前创建的用户池。
      + **应用程序客户端 ID**-选择您之前创建的应用程序客户端 ID。

      选择**下一步**。

   1. **步骤 4：配置属性**-在 “**身份池名称” 字段中键入名称**。

      选择**下一步**。

   1. **第 5 步：查看并创建**-查看您在每个部分中的选择，然后选择**创建身份池**。

1. 在**身份池**页面上，选择您的新身份池。

   复制**身份池 ID** 并记下来以备后用。在`awsconfiguration.json`文件中，这是`CredentialsProvider.CognitoIdentity.Default.PoolId`。

1. 更新 IAM 角色的权限。

   1. 登录 Amazon Web Services 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)。

   1. 在左侧的导航栏中，选择 “**角色**”。

   1. 找到并选择您在上面创建的角色。
**注意**  
如果需要，请使用搜索栏。

   1. 选择附加的权限策略。

      选择**编辑**。

   1. 选择 **JSON** 选项卡，然后将策略替换为以下内容：

      ```
      {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "cognito-identity:*",
                      "kinesisvideo:*"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```

      选择**下一步**。

   1. 如果尚未选中 “将**此新版本设为默认版本”** 旁边的复选框。

      选择**保存更改**。