

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 Android 的 Amazon Kinesis Video Streams WebRTC 開發套件
<a name="kvswebrtc-sdk-android"></a>

下列逐步指示說明如何下載、建置和執行適用於 Android 的 Kinesis Video Streams with WebRTC 開發套件及其對應的範例。

**注意**  
Amazon Kinesis Video Streams 不支援 Android 上的 IPv6 地址。請參閱有關[在 Android 裝置上停用 IPv6 ](https://www.cactusvpn.com/tutorials/how-to-disable-ipv6-on-android/)的詳細資訊。

## 下載軟體開發套件
<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` 使用 **Open as Project** 開啟，將 Android WebRTC SDK 匯入 Android Studio 整合開發環境 (IDE)。

1. 如果是第一次開啟專案，專案會自動同步。如果不是，請啟動同步。當您看到組建錯誤時，請選擇 **Install missing SDK package(s) (安裝缺少的 SDK 套件)**，然後選擇 **Accept (接受)** 並完成安裝，以安裝任何必要的 SDK 套件。

1. 進行 Amazon Cognito (使用者集區和身分集區) 設定。如需詳細步驟，請參閱[為 SDK 設定 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"
       }
     }
   }
   ```

   以執行 [為 SDK 設定 Amazon Cognito](#build-sdk-android-cognito)中的步驟所產生的值，更新 `awsconfiguration.json`。

1. 確保您的 Android 裝置已連線至執行 Android IDE 的電腦。在 Android IDE 中，選取連接的裝置，然後建置並執行 WebRTC Android 開發套件。

   此步驟會在您的 Android 裝置上安裝名為 `AWSKinesisVideoWebRTCDemoApp` 的應用程式。您可以使用此應用程式，驗證行動、Web 和 IoT 裝置用戶端之間的即時 WebRTC 音訊/視訊串流。

## 執行範例應用程式
<a name="run-sdk-android"></a>

****

請完成下列步驟：

1. 在您的 Android 裝置上，開啟 **AWSKinesisVideoWebRTCDemoApp**，並使用新的 (先建立) 或現有的 Amazon Cognito 帳戶登入。

1. 在 **AWSKinesisVideoWebRTCDemoApp** 中，瀏覽至 **Channel Configuration (頻道組態)** 頁面，然後建立新的訊號頻道，或選擇現有的訊號頻道。
**注意**  
目前，使用此開發套件中的範例應用程式時，您在 **AWSKinesisVideoWebRTCDemoApp** 中只能執行一個訊號頻道。

1. 選擇性：如果您要以檢視器身分連線到此頻道，請選擇唯一的 **Client Id (用戶端 ID)**。只有在多個檢視器連線至頻道時，才需要用戶端 ID。這有助於頻道的主節點識別各自的檢視器。

1. 選擇 AWS 區域 ，以及您要傳送音訊或視訊資料，還是兩者。

1. 若要驗證點對點串流，請執行下列任何一項：
**注意**  
請務必在此示範中使用的所有用戶端上，指定相同的訊號頻道名稱、 AWS 區域、檢視器 ID 和 AWS 帳戶 ID。
   + 兩個 Android 裝置之間的點對點串流：主節點和檢視器
     + 在兩個 Android 裝置上，使用上述程序下載、建置和執行 Android WebRTC 開發套件。
     + 在一個 Android 裝置上，以主節點模式開啟 **AWSKinesisVideoWebRTCDemoApp**，選擇 **START MASTER (啟動主節點)**，啟動新的工作階段 (訊號頻道)。
**注意**  
目前，任何給定的訊號頻道只能有一個主節點。
     + 在您的第二個 Android 裝置上，以檢視器模式開啟 **AWSKinesisVideoWebRTCDemoApp**，以連線至上述步驟中啟動的訊號頻道 (工作階段)，選擇 **START VIEWER (啟動檢視器)**。

       確認檢視器可以看到主節點的音訊/視訊資料。
   + 嵌入式開發套件主節點和 Android 裝置檢視器之間的點對點串流
     + 在攝影機裝置上，以主節點模式下載、建置和執行 [Amazon Kinesis Video Streams with WebRTC SDK in C for embedded device](kvswebrtc-sdk-c.md)。
     + 在 Android 裝置上，使用上述程序下載、建置和執行 Android WebRTC 開發套件。在此 Android 裝置上，以檢視器模式開啟 **AWSKinesisVideoWebRTCDemoApp**，並確認檢視器可以看到嵌入式 SDK 主節點的音訊/視訊資料。
   + Android 裝置 (主節點) 和 Web 瀏覽器 (檢視器) 之間的點對點串流
     + 在 Android 裝置上，使用上述程序下載、建置和執行 Android WebRTC 開發套件。在此 Android 裝置上，以主節點模式開啟 **AWSKinesisVideoWebRTCDemoApp**，選擇 **START MASTER (啟動主節點)**，啟動新的工作階段 (訊號頻道)。
     + 以檢視器身分下載、建置和執行 [適用於 Web 應用程式的 JavaScript 中的 Amazon Kinesis Video Streams with WebRTC SDK WebRTC](kvswebrtc-sdk-js.md)，並確認檢視器可以看到 Android 主節點的音訊/視訊。

## 為 SDK 設定 Amazon Cognito
<a name="build-sdk-android-cognito"></a>

### 先決條件
<a name="androidsdk-prerequisites"></a>
+ 建議使用 [Android Studio](https://developer.android.com/studio/index.html) 檢查、編輯和執行應用程式的程式碼。建議使用最新的穩定版本。
+ 在範本程式碼中，您會提供 Amazon Cognito 登入資料。

請依照這些程序來設定 Amazon Cognito 使用者集區和身分集區。

### 設定使用者集區
<a name="setup-user-pool"></a>

**設定使用者集區**

1. 登入 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)並確認區域正確無誤。

1. 在左側導覽中，選擇**使用者集區**。

1. 在**使用者集**區區段中，選擇**建立使用者集區**。

1. 完成下列各節：

   1. **步驟 1：設定登入體驗** - 在 **Cognito 使用者集區登入選項**區段中，選取適當的選項。

      選取**下一步**。

   1. **步驟 2：設定安全需求** - 選取適當的選項。

      選取**下一步**。

   1. **步驟 3：設定註冊體驗** - 選取適當的選項。

      選取**下一步**。

   1. **步驟 4：設定訊息傳遞** - 選取適當的選項。

      在 **IAM 角色選取**欄位中，選取現有角色或建立新角色。

      選取**下一步**。

   1. **步驟 5：整合您的應用程式** - 選取適當的選項。

      在**初始應用程式用戶端**欄位中，選擇**機密用戶端**。

      選取**下一步**。

   1. **步驟 6：檢閱並建立** - 檢閱先前區段的選擇，然後選擇**建立使用者集區**。

1. 在**使用者集**區頁面上，選取您剛建立的集區。

   複製**使用者集區 ID**，並記下此 ID 以供稍後使用。在 `awsconfiguration.json`檔案中，這是 `CognitoUserPool.Default.PoolId`。

1. 選取**應用程式整合**索引標籤，然後移至頁面底部。

1. 在**應用程式用戶端清單**區段中，選擇您剛建立**的應用程式用戶端名稱**。

   複製**用戶端 ID** 並記下此 ID 以供稍後使用。在 `awsconfiguration.json` 檔案中，這是 `CognitoUserPool.Default.AppClientId`。

1. 顯示**用戶端秘密**，並記下此秘密以供稍後使用。在 `awsconfiguration.json` 檔案中，這是 `CognitoUserPool.Default.AppClientSecret`。

### 設定身分集區
<a name="setup-identity-pool"></a>

**設定身分集區**

1. 登入 [Amazon Cognito 主控台](https://console.aws.amazon.com/cognito/home)並確認區域正確無誤。

1. 在左側導覽中，選擇**身分集區**。

1. 選擇 **建立身分池**。

1. 設定身分集區。

   1. **步驟 1：設定身分集區信任** - 完成下列區段：
      + **使用者存取** - 選取**已驗證的存取**
      + **已驗證的身分來源** - 選取 **Amazon Cognito 使用者集區**

      選取**下一步**。

   1. **步驟 2：設定許可** - 在**已驗證角色**區段中，完成下列欄位：
      + **IAM 角色** - 選取**建立新的 IAM 角色**
      + **IAM 角色名稱** - 輸入名稱並將其記下以供後續步驟使用。

      選取**下一步**。

   1. **步驟 3：連接身分提供者** - 在**使用者集區詳細資訊**區段中，完成下列欄位：
      + **使用者集區 ID** - 選取您先前建立的使用者集區。
      + **應用程式用戶端 ID** - 選取您先前建立的應用程式用戶端 ID。

      選取**下一步**。

   1. **步驟 4：設定屬性** - 在**身分集區名稱欄位中輸入名稱**。

      選取**下一步**。

   1. **步驟 5：檢閱並建立** - 檢閱每個區段中的選擇，然後選取**建立身分集區**。

1. 在**身分集**區頁面上，選取新的身分集區。

   複製**身分集區 ID** 並記下此 ID 以供稍後使用。在 `awsconfiguration.json`檔案中，這是 `CredentialsProvider.CognitoIdentity.Default.PoolId`。

1. 更新 IAM 角色的許可。

   1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

   1. 在左側導覽中，選擇**角色**。

   1. 尋找並選取您在上面建立的角色。
**注意**  
如有需要，請使用搜尋列。

   1. 選取連接的許可政策。

      選擇 **Edit** (編輯)。

   1. 選取 **JSON** 索引標籤，並以下列內容取代政策：

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

      選取**下一步**。

   1. 如果尚未選取，請選取**此新版本設定為預設值**旁的方塊。

      選取**儲存變更**。