# VoIP-Anrufe auf Android

Pushwoosh unterstützt VoIP-Anrufbenachrichtigungen für Android über das Modul `pushwoosh-calls`. Dies ermöglicht eine native Anruf-Benutzeroberfläche und die Verwaltung des Lebenszyklus über den Telecom-Stack von Android.


## 1. Das Modul `pushwoosh-calls` hinzufügen

Stellen Sie sicher, dass Sie die Abhängigkeit `pushwoosh-calls` in Ihr Projekt aufnehmen.

**Gradle:**

```groovy
dependencies {
    implementation 'com.pushwoosh:pushwoosh-calls:<latest-version>'
}
```

Ersetzen Sie `<latest-version>` durch die aktuelle Version aus [Maven Central](https://mvnrepository.com/artifact/com.pushwoosh/pushwoosh-calls).


## 2. Anrufberechtigungen anfordern

Fordern Sie die erforderlichen Berechtigungen zur Laufzeit mit der Hilfsfunktion an:

```java
import com.pushwoosh.calls.PushwooshCallSettings;

PushwooshCallSettings.requestCallPermissions();
```

> Dies kümmert sich um die Anforderung von Berechtigungen wie `READ_PHONE_NUMBERS`, die für die ordnungsgemäße Anrufbehandlung erforderlich sind.



## 3. `CallEventListener` implementieren und im Manifest registrieren

Um eingehende Anrufe und Ereignisse zu behandeln, implementieren Sie die Schnittstelle `CallEventListener` in Ihrer App.

#### Java-Beispiel

```java
public class DemoCallEventListener implements CallEventListener {

    @Override
    public void onAnswer(@NonNull PushwooshVoIPMessage voIPMessage, int videoState) {
        // Implementieren Sie diese Methode, um zu Ihrer Anruf-Benutzeroberfläche zu navigieren 
        Intent intent = new Intent(context, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    @Override
    public void onReject(@NonNull PushwooshVoIPMessage voIPMessage) {
        // Überschreiben Sie diese Methode, um abgelehnte Anrufe zu behandeln 
    }

    @Override
    public void onDisconnect(@NonNull PushwooshVoIPMessage voIPMessage) {
        // Überschreiben Sie diese Methode, um getrennte Anrufe zu behandeln 
    }

    @Override
    public void onCreateIncomingConnection(@Nullable Bundle payload) {
        // Dies ist der früheste Zeitpunkt, zu dem die Payload der Anrufbenachrichtigung in Ihrer App zugänglich ist,
        // verwenden Sie sie, um Ihre App-UI auf Benutzerinteraktionen mit Anrufbenachrichtigungen vorzubereiten
    }

    @Override
    public void onCallAdded(@NonNull PushwooshVoIPMessage voIPMessage) {
        // Erweiterungsmethode von InCallService, bietet Anpassungsoptionen für gekoppelte Wearable-Geräte
    }

    @Override
    public void onCallRemoved(@NonNull PushwooshVoIPMessage voIPMessage) {
        // Erweiterungsmethode von InCallService, bietet Anpassungsoptionen für gekoppelte Wearable-Geräte
    }
}
```

#### AndroidManifest.xml

Deklarieren Sie Ihre Listener-Klasse mit einem `<meta-data>`-Tag:

```xml
<meta-data
    android:name="com.pushwoosh.CALL_EVENT_LISTENER"
    android:value="com.pushwoosh.demoapp.DemoCallEventListener" />
```


## 4. Anrufeinstellungen konfigurieren (optional)

Verwenden Sie `PushwooshCallSettings`, um das Anrufverhalten, die Töne und die Anzeigeeinstellungen fein abzustimmen.

#### Anwendungsbeispiel

```kotlin
import com.pushwoosh.calls.PushwooshCallSettings

PushwooshCallSettings.setPhoneAccount("com.pushwoosh.voip")
PushwooshCallSettings.setPhoneAccountHandle("PushwooshCallHandle")
PushwooshCallSettings.setIncomingCallChannelName("Incoming Calls")
PushwooshCallSettings.setOngoingCallChannelName("Ongoing Calls")
PushwooshCallSettings.setCallSound("custom_ringtone.mp3")
```


## Verwandte Links

- [Übersicht über das Pushwoosh Android SDK](/de/developer/pushwoosh-sdk/android-sdk/)
- [Quellcode des Pushwoosh Call-Plugins](https://github.com/Pushwoosh/pushwoosh-android-sdk)
- [TelecomManager (Android-Dokumentation)](https://developer.android.com/reference/android/telecom/TelecomManager)