# অ্যান্ড্রয়েডে ভিওআইপি কল

Pushwoosh `pushwoosh-calls` মডিউল ব্যবহার করে অ্যান্ড্রয়েডের জন্য ভিওআইপি-স্টাইল কল নোটিফিকেশন সমর্থন করে। এটি অ্যান্ড্রয়েডের টেলিকম স্ট্যাক ব্যবহার করে নেটিভ কল UI এবং লাইফসাইকেল ম্যানেজমেন্ট সক্ষম করে।


## ১. pushwoosh-calls মডিউল যোগ করুন

আপনার প্রজেক্টে `pushwoosh-calls` ডিপেন্ডেন্সি অন্তর্ভুক্ত করা নিশ্চিত করুন।

**Gradle:**

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

[Maven Central](https://mvnrepository.com/artifact/com.pushwoosh/pushwoosh-calls) থেকে বর্তমান সংস্করণ দিয়ে `<latest-version>` প্রতিস্থাপন করুন।


## ২. কলের অনুমতি অনুরোধ করুন

হেল্পার ফাংশন ব্যবহার করে রানটাইমে প্রয়োজনীয় অনুমতিগুলির জন্য অনুরোধ করুন:

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

PushwooshCallSettings.requestCallPermissions();
```

> এটি `READ_PHONE_NUMBERS`-এর মতো অনুমতিগুলির অনুরোধ পরিচালনা করে, যা সঠিক কল হ্যান্ডলিংয়ের জন্য প্রয়োজনীয়।



## ৩. CallEventListener ইমপ্লিমেন্ট করুন এবং ম্যানিফেস্টে রেজিস্টার করুন

ইনকামিং কল এবং ইভেন্টগুলি পরিচালনা করতে, আপনার অ্যাপে `CallEventListener` ইন্টারফেসটি ইমপ্লিমেন্ট করুন।

#### জাভা উদাহরণ

```java
public class DemoCallEventListener implements CallEventListener {

    @Override
    public void onAnswer(@NonNull PushwooshVoIPMessage voIPMessage, int videoState) {
        // আপনার ইন-কল UI-তে নেভিগেট করার জন্য এই মেথডটি ইমপ্লিমেন্ট করুন 
        Intent intent = new Intent(context, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    @Override
    public void onReject(@NonNull PushwooshVoIPMessage voIPMessage) {
        // বাতিল করা কলগুলি পরিচালনা করতে এই মেথডটি ওভাররাইড করুন 
    }

    @Override
    public void onDisconnect(@NonNull PushwooshVoIPMessage voIPMessage) {
        // সংযোগ বিচ্ছিন্ন কলগুলি পরিচালনা করতে এই মেথডটি ওভাররাইড করুন 
    }

    @Override
    public void onCreateIncomingConnection(@Nullable Bundle payload) {
        // এটিই প্রথম পর্যায় যখন আপনার অ্যাপে কল নোটিফিকেশন পেলোড অ্যাক্সেসযোগ্য হয়,
        // কল নোটিফিকেশনের সাথে ব্যবহারকারীর ইন্টারঅ্যাকশনের জন্য আপনার অ্যাপ UI প্রস্তুত করতে এটি ব্যবহার করুন
    }

    @Override
    public void onCallAdded(@NonNull PushwooshVoIPMessage voIPMessage) {
        // InCallService-এর এক্সটেনশন মেথড, পেয়ার করা ওয়্যারেবল ডিভাইসের জন্য কাস্টমাইজেশন অপশন প্রদান করে
    }

    @Override
    public void onCallRemoved(@NonNull PushwooshVoIPMessage voIPMessage) {
        // InCallService-এর এক্সটেনশন মেথড, পেয়ার করা ওয়্যারেবল ডিভাইসের জন্য কাস্টমাইজেশন অপশন প্রদান করে
    }
}
```

#### AndroidManifest.xml

একটি `<meta-data>` ট্যাগ ব্যবহার করে আপনার লিসেনার ক্লাস ঘোষণা করুন:

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


## ৪. কল সেটিংস কনফিগার করুন (ঐচ্ছিক)

কলের আচরণ, সাউন্ড এবং ডিসপ্লে সেটিংস ফাইন-টিউন করতে `PushwooshCallSettings` ব্যবহার করুন।

#### ব্যবহারের উদাহরণ

```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")
```


## সম্পর্কিত লিঙ্ক

- [Pushwoosh অ্যান্ড্রয়েড SDK ওভারভিউ](/bn/developer/pushwoosh-sdk/android-sdk/)
- [Pushwoosh কল প্লাগইন সোর্স](https://github.com/Pushwoosh/pushwoosh-android-sdk)
- [TelecomManager (অ্যান্ড্রয়েড ডক্স)](https://developer.android.com/reference/android/telecom/TelecomManager)