# Android SDK

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

## Installation

Die JARs können manuell von[Maven Central](https://search.maven.org/artifact/com.transloadit.android.sdk/transloadit-android) heruntergeladen werden.

**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>

```

## Verwendung

Alle Interaktionen mit dem SDK beginnen mit der Klasse `com.transloadit.android.sdk.AndroidTransloadit`.

### Authentifizierungsmethoden

Das SDK unterstützt zwei Authentifizierungsmethoden:

#### 1. Herkömmliche Authentifizierung (mit geheimem Schlüssel)

Diese eignet sich für serverseitige oder ausschließlich intern verwendete Apps:

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

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

```

#### 2. Signature Authentication (für Produktions-Apps empfohlen)

Verwenden Sie für mobile Produktions-Apps einen Backend-Signatur-Endpunkt, damit der geheime Schlüssel auf Ihrem Server verbleibt:

![](/_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);

```

### Assembly erstellen

Um eine Assembly zu erstellen, verwenden Sie die Methode `newAssembly`.

Um diese Funktionalität vollständig zu nutzen, implementieren Sie das Interface `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();
  }
}


```

In Ihrer Activity könnte dies beispielsweise so aussehen:

![](/_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();
  }
}


```

## Beispiel

Vollständig funktionsfähige Beispiele finden Sie unter[examples/](https://github.com/transloadit/android-sdk/tree/main/examples).

## Dokumentation

Die vollständige API-Dokumentation finden Sie in der[Javadoc](https://javadoc.io/doc/com.transloadit.android.sdk/transloadit-android/latest/index.html).
