# SDK para Android

[transloadit/android-sdk](https://github.com/transloadit/android-sdk)

## Instalación

Puedes descargar manualmente los archivos JAR desde[Maven Central](https://search.maven.org/artifact/com.transloadit.android.sdk/transloadit-android).

**Gradle:**

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```groovy
implementation 'com.transloadit.android.sdk:transloadit-android:0.2.0'

```

**Maven:**

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```xml
<dependency>
  <groupId>com.transloadit.android.sdk</groupId>
  <artifactId>transloadit-android</artifactId>
  <version>0.2.0</version>
</dependency>

```

## Uso

Todas las interacciones con el SDK comienzan con la clase `com.transloadit.android.sdk.AndroidTransloadit`.

### Métodos de autenticación

El SDK admite dos métodos de autenticación:

#### 1. Autenticación tradicional (con clave secreta)

Este método es adecuado para aplicaciones del lado del servidor o de uso exclusivamente interno:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```java
AndroidTransloadit transloadit = new AndroidTransloadit("YOUR_KEY", "YOUR_SECRET");

```

#### 2. Signature Authentication (recomendada para aplicaciones en producción)

Para aplicaciones móviles en producción, usa un endpoint de firmas en el backend para que el secreto permanezca en tu servidor:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```java
SignatureProvider signatureProvider = new SignatureProvider() {
  @Override
  public String generateSignature(String paramsJson) throws Exception {
    // Fetch a precomputed Transloadit signature from your backend.
    return "sha384:...";
  }
};

AndroidTransloadit transloadit = new AndroidTransloadit("YOUR_KEY", signatureProvider);

```

### Crear una Assembly

Para crear una Assembly, usa el método `newAssembly`.

Para aprovechar plenamente esta funcionalidad, implementa la interfaz `AndroidAssemblyListener`.

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```java
public class MyAssemblyListener implements AndroidAssemblyListener {

  @Override
  public void onUploadFinished() {
    System.out.println("upload finished!!! waiting for execution ...");
  }

  @Override
  public void onUploadProgress(long uploadedBytes, long totalBytes) {
    System.out.println("uploaded: " + uploadedBytes + " of: " + totalBytes);
  }

  @Override
  public void onAssemblyFinished(AssemblyResponse response) {
    System.out.println("Assembly finished with status: " + response.json().getString("ok"));
  }

  @Override
  public void onUploadFailed(Exception exception) {
    System.out.println("upload failed :(");
    exception.printStackTrace();
  }

  @Override
  public void onAssemblyStatusUpdateFailed(Exception exception) {
    System.out.println("unable to fetch status update :(");
    exception.printStackTrace();
  }
}


```

En tu actividad, puedes tener algo como lo siguiente:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_3z41v8VuCJJKgtsQfSKB6o2uiSXL)

```java
public class MainActivity extends AppCompatActivity {

  private ProgressBar progressBar;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    progressBar = (ProgressBar) findViewById(R.id.progressBar);

    AndroidAssemblyListener listener = new MyAssemblyListener();

    AndroidTransloadit transloadit = new AndroidTransloadit("key", "secret");
    AndroidAssembly assembly = transloadit.newAssembly(listener, this /* activity context */);
    assembly.addFile(new File("path/to/file.jpg"), "file");

    Map<String, Object> stepOptions = new HashMap<>();
    stepOptions.put("width", 75);
    stepOptions.put("height", 75);
    stepOptions.put("resize_strategy", "pad");
    assembly.addStep("resize", "/image/resize", stepOptions);

    assembly.saveAsync();
  }
}


```

## Ejemplo

Para consultar ejemplos completamente funcionales, revisa[examples/](https://github.com/transloadit/android-sdk/tree/main/examples).

## Documentación

Consulta[Javadoc](https://javadoc.io/doc/com.transloadit.android.sdk/transloadit-android/latest/index.html)para ver la documentación completa de la API.
