

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.

# 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();
```

