

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Usa la biblioteca de productores de Android
<a name="producer-sdk-android"></a>

Puede utilizar la biblioteca de productores de Android proporcionada por Amazon Kinesis Video Streams para escribir código de aplicación, con una configuración mínima, para enviar datos multimedia desde un dispositivo Android a una transmisión de vídeo de Kinesis. 

Realice los siguientes pasos para integrar el código con Kinesis Video Streams para que su aplicación pueda empezar a transmitir datos a su transmisión de vídeo de Kinesis:

1. Crear una instancia del objeto `KinesisVideoClient`. 

1. Puede crear un objeto `MediaSource` proporcionando información sobre el origen de medios. Por ejemplo, al crear un origen de medios de cámara, puede proporcionar información como, por ejemplo, la identificación de la cámara y la especificación del método de cifrado que utilice.

   Cuando quiera iniciar el streaming, debe crear un origen de medios personalizado. 

## Procedimiento: utilice el SDK para productores de Android
<a name="producer-sdk-android-using"></a>

Este procedimiento muestra cómo utilizar el cliente de producción de Kinesis Video Streams para Android en su aplicación de Android para enviar datos a su transmisión de vídeo de Kinesis. 

El procedimiento incluye los pasos siguientes:
+ [Requisitos previos](producersdk-android-prerequisites.md)
+ [Descarga y configura el código de la biblioteca del productor de Android](producersdk-android-downloadcode.md)
+ [Examine el código](producersdk-android-writecode.md)
+ [Ejecute y verifique el código](producersdk-android-reviewcode.md)

# Requisitos previos
<a name="producersdk-android-prerequisites"></a>

Recomendamos [Android Studio](https://developer.android.com/studio/index.html) para examinar, editar y ejecutar el código de la aplicación. Recomendamos utilizar la versión estable más reciente.

En el código de ejemplo, proporciona las credenciales de Amazon Cognito.

**Topics**
+ [Configure un grupo de usuarios](#set-up-user-pool)
+ [Configure un grupo de identidades](#set-up-identity-pool)

## Configure un grupo de usuarios
<a name="set-up-user-pool"></a>

**Para configurar un grupo de usuarios**

1. Inicie sesión en la [consola de Amazon Cognito y compruebe que](https://console.aws.amazon.com/cognito/home) la región es correcta.

1. En la barra de navegación de la izquierda, elija **Grupos de usuarios**.

1. En la sección **Grupos de usuarios**, elija **Crear grupo de usuarios**.

1. Complete las siguientes secciones:

   1. **Paso 1: Configurar la experiencia de inicio de sesión**: en la sección de opciones de inicio de **sesión del grupo de usuarios de Cognito**, seleccione las opciones adecuadas.

      Seleccione **Siguiente**.

   1. **Paso 2: Configure los requisitos de seguridad**: seleccione las opciones adecuadas.

      Seleccione **Siguiente**.

   1. **Paso 3: Configure la experiencia de registro**: seleccione las opciones adecuadas.

      Seleccione **Siguiente**.

   1. **Paso 4: Configurar la entrega de mensajes**: selecciona las opciones adecuadas.

      En el campo de **selección de roles de IAM**, seleccione un rol existente o cree uno nuevo.

      Seleccione **Siguiente**.

   1. **Paso 5: Integre su aplicación**: seleccione las opciones adecuadas.

      En el campo **Cliente inicial de la aplicación**, selecciona **Cliente confidencial**.

      Seleccione **Siguiente**.

   1. **Paso 6: Revisar y crear**: revise las selecciones de las secciones anteriores y, a continuación, elija **Crear grupo de usuarios**.

1. En la página **Grupos de usuarios**, seleccione el grupo que acaba de crear.

   Copie el **ID del grupo de usuarios** y anótelo para más adelante. En el `awsconfiguration.json` archivo, esto es`CognitoUserPool.Default.PoolId`.

1. Selecciona la pestaña **Integración de aplicaciones** y ve al final de la página.

1. En la sección de la **lista de clientes de aplicaciones**, elige el **nombre del cliente de aplicaciones** que acabas de crear.

   Copia el **ID de cliente** y anótalo para más adelante. En el `awsconfiguration.json` archivo, esto es`CognitoUserPool.Default.AppClientId`.

1. Muestre el **secreto del cliente** y anótelo para más adelante. En el `awsconfiguration.json` archivo, esto es`CognitoUserPool.Default.AppClientSecret`.

## Configure un grupo de identidades
<a name="set-up-identity-pool"></a>

**Para configurar un grupo de identidades**

1. Inicie sesión en la [consola de Amazon Cognito y compruebe que](https://console.aws.amazon.com/cognito/home) la región es correcta.

1. En la barra de navegación de la izquierda, elija **Identity Pools**.

1. Elija **Crear grupo de identidades**.

1. Configure el grupo de identidades.

   1. **Paso 1: Configurar la confianza en los grupos de identidades**: complete las siguientes secciones:
      + **Acceso de usuario**: seleccione Acceso **autenticado**
      + **Fuentes de identidad autenticadas**: seleccione un grupo de usuarios de **Amazon Cognito**

      Seleccione **Siguiente**.

   1. **Paso 2: Configurar los permisos**: en la sección **Función autenticada**, complete los siguientes campos:
      + **Función de IAM**: seleccione **Crear una nueva** función de IAM
      + **Nombre del rol de IAM**: introduzca un nombre y anótelo para un paso posterior.

      Seleccione **Siguiente**.

   1. **Paso 3: Conectar proveedores de identidad**: en la sección de **detalles del grupo de usuarios**, complete los siguientes campos: 
      + **ID del grupo de usuarios**: seleccione el grupo de usuarios que creó anteriormente.
      + **ID de cliente de aplicación**: seleccione el ID de cliente de aplicación que creó anteriormente.

      Seleccione **Siguiente**.

   1. **Paso 4: Configurar las propiedades**: escriba un nombre en el campo **Nombre del grupo de identidades**.

      Seleccione **Siguiente**.

   1. **Paso 5: Revisar y crear**: revise sus selecciones en cada una de las secciones y, a continuación, seleccione **Crear grupo de identidades**.

1. En la página **Grupos de identidades**, selecciona tu nuevo grupo de identidades.

   Copia el **ID del grupo de identidades** y anótalo para más adelante. En el `awsconfiguration.json` archivo, esto es`CredentialsProvider.CognitoIdentity.Default.PoolId`.

1. Actualice los permisos del rol de IAM.

   1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

   1. En el menú de navegación de la izquierda, selecciona **Roles**.

   1. Busca y selecciona el rol que creaste arriba.
**nota**  
Usa la barra de búsqueda, si es necesario.

   1. Seleccione la política de permisos adjunta.

      Seleccione **Editar**.

   1. Seleccione la pestaña **JSON** y sustituya la política por la siguiente:

------
#### [ JSON ]

****  

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

------

      Seleccione **Siguiente**.

   1. Selecciona la casilla situada junto a **Establecer esta nueva versión como predeterminada** si aún no está seleccionada.

      Seleccione **Guardar cambios**.

# Descarga y configura el código de la biblioteca del productor de Android
<a name="producersdk-android-downloadcode"></a>

En esta sección del procedimiento de la biblioteca para productores de Android, descargas el código de ejemplo de Android y abres el proyecto en Android Studio. 

Para ver los requisitos previos y otros detalles sobre este ejemplo, consulta Cómo [usar la biblioteca de productores de Android](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-android.html).



1. Crea un directorio y, a continuación, clónalo AWS Mobile SDK para Android desde el GitHub repositorio. 

   ```
   git clone https://github.com/awslabs/aws-sdk-android-samples
   ```

1. Abra [Android Studio](https://developer.android.com/studio/index.html).

1. En la pantalla de apertura, elija **Open an existing Android Studio project**.

1. Vaya al directorio `aws-sdk-android-samples/AmazonKinesisVideoDemoApp` y elija **OK**.

1. Abra el archivo `AmazonKinesisVideoDemoApp/src/main/res/raw/awsconfiguration.json`.

   En el `CredentialsProvider` nodo, proporcione el ID del grupo de identidades del procedimiento **Para configurar un grupo de identidades** de la sección [Requisitos previos](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-android.html#producersdk-android-prerequisites) e indique el suyo Región de AWS (por ejemplo,**us-west-2**).

   En el `CognitoUserPool` nodo, introduzca el secreto del cliente de la aplicación, el ID del cliente de la aplicación y el ID del grupo del procedimiento **Para configurar un grupo de usuarios** de la sección [Requisitos previos](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-android.html#producersdk-android-prerequisites) e introduzca el suyo Región de AWS (por ejemplo,**us-west-2**).

1. El archivo `awsconfiguration.json` será similar al siguiente:

   ```
   {
     "Version": "1.0",
     "CredentialsProvider": {
       "CognitoIdentity": {
         "Default": {
           "PoolId": "us-west-2:01234567-89ab-cdef-0123-456789abcdef",
           "Region": "us-west-2"
         }
       }
     },
     "IdentityManager": {
       "Default": {}
     },
     "CognitoUserPool": {
       "Default": {
         "AppClientSecret": "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmno",
         "AppClientId": "0123456789abcdefghijklmnop",
         "PoolId": "us-west-2_qRsTuVwXy",
         "Region": "us-west-2"
       }
     }
   }
   ```

1. Actualízalo `AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/KinesisVideoDemoApp.java` con tu región (en el siguiente ejemplo, se establece en **US\$1WEST\$12**): 

   ```
   public class KinesisVideoDemoApp extends Application {
       public static final String TAG = KinesisVideoDemoApp.class.getSimpleName();
       public static Regions KINESIS_VIDEO_REGION = Regions.US_WEST_2;
   ```

   [Para obtener información sobre las Región de AWS constantes, consulta Regiones.](https://aws-amplify.github.io/aws-sdk-android/docs/reference/com/amazonaws/regions/Regions.html)

# Examine el código
<a name="producersdk-android-writecode"></a>

En esta sección del [procedimiento de la biblioteca de productores de Android](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-android.html), examinarás el código de ejemplo. 

La aplicación de prueba de Android (`AmazonKinesisVideoDemoApp`) muestra el siguiente patrón de codificación:
+ Cree una instancia de `KinesisVideoClient`.
+ Cree una instancia de `MediaSource`.
+ Inicie el streaming. Inicie el `MediaSource` y empezará a enviar datos al cliente.

En las siguientes secciones presentamos más detalles.



## Crea una instancia de KinesisVideoClient
<a name="producersdk-android-review-code-create-client"></a>

Puede crear el objeto `[KinesisVideoClient](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-kinesisvideo/src/main/java/com/amazonaws/kinesisvideo/client/KinesisVideoClient.java)` llamando a la operación `[createKinesisVideoClient](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-kinesisvideo/src/main/java/com/amazonaws/mobileconnectors/kinesisvideo/client/KinesisVideoAndroidClientFactory.java)`.

```
mKinesisVideoClient = KinesisVideoAndroidClientFactory.createKinesisVideoClient(
                    getActivity(),
                    KinesisVideoDemoApp.KINESIS_VIDEO_REGION,
                    KinesisVideoDemoApp.getCredentialsProvider());
```

Para que `KinesisVideoClient` realice llamadas de red, necesita credenciales de autenticación. Pasa una instancia de`AWSCredentialsProvider`, que lee sus credenciales de Amazon Cognito del `awsconfiguration.json` archivo que modificó en la sección anterior.

## Cree una instancia de MediaSource
<a name="producersdk-android-review-code-create-mediasource"></a>

Para enviar bytes a la transmisión de vídeo de Kinesis, debe generar los datos. Amazon Kinesis Video Streams proporciona `[MediaSource](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-kinesisvideo/src/main/java/com/amazonaws/kinesisvideo/internal/client/mediasource/MediaSource.java)` la interfaz, que representa la fuente de datos.

Por ejemplo, la biblioteca de Android de Kinesis Video Streams proporciona `[AndroidCameraMediaSource](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-kinesisvideo/src/main/java/com/amazonaws/mobileconnectors/kinesisvideo/mediasource/android/AndroidCameraMediaSource.java)` la implementación de `MediaSource` la interfaz. Esta clase lee los datos de una de las cámaras del dispositivo.

En el siguiente ejemplo de código (del archivo `[fragment/StreamConfigurationFragment.java](https://github.com/awslabs/aws-sdk-android-samples/blob/main/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamConfigurationFragment.java)`), se crea la configuración del origen multimedia:

```
private AndroidCameraMediaSourceConfiguration getCurrentConfiguration() {
return new AndroidCameraMediaSourceConfiguration(
        AndroidCameraMediaSourceConfiguration.builder()
                .withCameraId(mCamerasDropdown.getSelectedItem().getCameraId())
                .withEncodingMimeType(mMimeTypeDropdown.getSelectedItem().getMimeType())
                .withHorizontalResolution(mResolutionDropdown.getSelectedItem().getWidth())
                .withVerticalResolution(mResolutionDropdown.getSelectedItem().getHeight())
                .withCameraFacing(mCamerasDropdown.getSelectedItem().getCameraFacing())
                .withIsEncoderHardwareAccelerated(
                        mCamerasDropdown.getSelectedItem().isEndcoderHardwareAccelerated())
                .withFrameRate(FRAMERATE_20)
                .withRetentionPeriodInHours(RETENTION_PERIOD_48_HOURS)
                .withEncodingBitRate(BITRATE_384_KBPS)
                .withCameraOrientation(-mCamerasDropdown.getSelectedItem().getCameraOrientation())
                .withNalAdaptationFlags(StreamInfo.NalAdaptationFlags.NAL_ADAPTATION_ANNEXB_CPD_AND_FRAME_NALS)
                .withIsAbsoluteTimecode(false));
}
```

En el siguiente ejemplo de código (del archivo `[fragment/StreamingFragment.java](https://github.com/awslabs/aws-sdk-android-samples/blob/main/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamingFragment.java)`), se crea el origen multimedia:

```
mCameraMediaSource = (AndroidCameraMediaSource) mKinesisVideoClient
    .createMediaSource(mStreamName, mConfiguration);
```

## Inicie la fuente multimedia
<a name="producersdk-android-review-code-start-mediasource"></a>

Inicie el origen de medios para que pueda comenzar a generar los datos y enviarlos al cliente. El siguiente ejemplo de código procede del archivo `[fragment/StreamingFragment.java](https://github.com/awslabs/aws-sdk-android-samples/blob/main/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamingFragment.java)`:

```
mCameraMediaSource.start();
```



# Ejecute y verifique el código
<a name="producersdk-android-reviewcode"></a>

Para ejecutar la aplicación de ejemplo de Android para la [biblioteca de productores de Android](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-android.html), haga lo siguiente.

1. Realice la conexión a un dispositivo Android.

1. Elija **Run**, **Run...** y **Edit configurations...**.

1. Seleccione el icono con el signo más (**\$1**) en **la aplicación Android**. En el campo **Nombre**, escriba **AmazonKinesisVideoDemoApp**. En el menú desplegable del **módulo**, selecciona **AmazonKinesisVideoDemoApp**. Seleccione **Aceptar**.

1. Elija **Run**, **Run**.

1. En la pantalla **Select a Deployment Target**, elija el dispositivo conectado y elija **OK**.

1. En la **AWSKinesisVideoDemoApp**aplicación del dispositivo, selecciona **Crear nueva cuenta**.

1. Escriba los valores de **USERNAME**, **Password**, **Given name**, **Email address** y **Phone number**; a continuación, elija **Sign up**.
**nota**  
Estos valores tienen las siguientes restricciones:  
**Contraseña:** debe contener letras mayúsculas y minúsculas, números y caracteres especiales. Puede cambiar estas restricciones en la página del grupo de usuarios de la consola de [Amazon Cognito](https://console.aws.amazon.com/cognito/home). 
**Dirección de correo electrónico:** debe ser una dirección válida para que pueda recibir un código de confirmación.
**Número de teléfono:** debe tener el formato **\$1*<Country code>**<Number>***; por ejemplo, **\$112065551212**.

1. Introduzca el código que recibirá por correo electrónico y seleccione **Confirmar**. Seleccione **Ok**.

1. En la página siguiente, mantén los valores predeterminados y selecciona **Transmitir**.

1. Inicie sesión en la Consola de administración de AWS consola [Kinesis Video Streams](https://console.aws.amazon.com//kinesisvideo/home/) en la región EE.UU. Oeste (Oregón) y ábrala. 

   En la página **Manage Streams**, elija **demo-stream**. 

1. El vídeo de streaming se reproduce en el reproductor incrustado. Es posible que necesite esperar un poco (hasta diez segundos en condiciones típicas de ancho de banda y procesador) mientras se acumulan los fotogramas hasta que aparece el vídeo.
**nota**  
Si se produce la rotación de la pantalla del dispositivo (por ejemplo, de vertical a horizontal), la aplicación detiene el streaming de vídeo.

El código de ejemplo crea una transmisión. Cuando se inicia el `MediaSource` en el código, comienza a enviar fotogramas desde la cámara a `KinesisVideoClient`. **A continuación, el cliente envía los datos a una transmisión de vídeo de Kinesis denominada demo-stream.** 