How to choose android Voice Chat SDK
Tags: android, java, api, programming
Published: 2022-09-26 07:16:33

## The rapidly growing Voice Chat market
The popularity of Clubhouse has given a solid push to the **Voice Chat SDK** market, soliciting its spread and integration on other platforms. The voice-based social scene dramatically reduces the pressure on users to express themselves. It makes everyone more relaxed and confident talking to strangers on social media applications using only their voices.

## How to build a Voice Chat Application
A complete Voice Chat App must provide functions such as:
- call invitation
- invitation notification
- random matching
- room management
- call status management
- network status monitoring
- sound waves
And more. The complete realization of these functions requires many human and material resources. Therefore, manufacturers encapsulate the full functions of voice chat into SDKs to provide external services.
Some examples are [LiveAudioRoom](https://www.zegocloud.com/solutions/live-audio-room?_source=dev&article=31), [UIKits](https://www.zegocloud.com/UIKits?_source=dev&article=31), [and Voice Call](http://www.zegocloud.com/product/voice-call?_source=dev&article=31). 
 
## How to choose Android Voice SDK
Each manufacturer provides its voice chat SDK. Given the wide choice, how do developers pick the SDK that suits their business?
Let's take the android voice chat SDK as an example. In general, there are three SDKs categories on the market:
 
### 1) 'Room scene' Voice Chat SDK
![live-audio-room-sdk](https://resource.zegocloud.com/content_resource/2022/09/26/liveaudioroomsdk.jpg)

The scene SDK focuses on the encapsulation logic of business scenarios,  which implements the chat room scene's business logic and UI interface. Users only need to integrate the SDK into the application to realize a complete chat room function.

This type of SDK has the highest level of integration and can complete scene development in one day. Because of the high degree of integration, developers' degree of freedom is relatively low. If the SDK's business requirements and standard functions are pretty different, the cost of secondary development will be high.
For example: [LiveAudioRoom SDK](https://www.zegocloud.com/solutions/live-audio-room?_source=dev&article=31)
 
### 2) Functional Voice Chat SDK
![uikits-sdk](https://resource.zegocloud.com/content_resource/2022/09/26/uikitssdk.jpg)

The functional SDK focuses on encapsulating functions into modules, such as the call function, notification function, voice call function, device management function, etc., required by the voice chat scenario.
Developers can choose the required functions according to their business needs and add business logic. 

Compared with the scene SDK, the functional SDK has smaller granularity. Developers can focus on business logic development, directly integrating functions. This SDK reduces the developer's workload and ensures the developer's degree of freedom.
For example: [UIKits SDK](https://www.zegocloud.com/UIKits?_source=dev&article=31)
 
### 3) Capability Voice Chat SDK
![voice-call-sdk](https://resource.zegocloud.com/content_resource/2022/09/26/voicecallsdk.jpg)

The capability SDK focuses on the support of underlying capabilities.
Such as the call function. The SDK provides audio transmission capabilities, but the developer needs to control when to start the transmission and which device to output audio.

Therefore, this type of SDK gives developers the most significant degree of freedom and can meet almost all the needs of developers.
Aside from implementing business logic, developers need to be responsible for the calling logic of the underlying capabilities. Users with a complete R&D team and particular business logic can choose the ability-based SDK.

For example [Voice Call SDK](http://www.zegocloud.com/product/voice-call?_source=dev&article=31)

## There is no best, only the most suitable option
Each type of SDK has various advantages and disadvantages, depending on specific needs.

Therefore, there is no absolute best SDK but it should be chosen according to what you need.

Now, let's take the functional Voice Chat SDK and see together a step-by-step guide to building an android voice chat app.

## Build an android Voice Chat app

We take ZEGOCLOUD's functional **Voice Chat SDK** Call Kit as an example.

### 1）Integrated SDK

Refers to the [documentation](https://docs.zegocloud.com/article/14820?_source=dev&article=31) to introduce the SDK into the project.
The SDK integration can be completed by displaying the ZegoUIKitPrebuiltCallFragment component to realize the voice chat function.

```java
public class CallActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_call);
 
        addCallFragment();
    }
 
    public void addCallFragment() {
        long appID = yourAppID;
        String appSign = yourAppSign;
 
        String callID = yourCallID;
        String userID = yourUserID;
        String userName = yourUserName;
 
        ZegoUIKitPrebuiltCallConfig config = new ZegoUIKitPrebuiltCallConfig();
        
 
        ZegoUIKitPrebuiltCallFragment fragment = ZegoUIKitPrebuiltCallFragment.newInstance(
            appID, appSign, callID, userID, userName,config);
        
 
        getSupportFragmentManager().beginTransaction()
            .replace(R.id.fragment_container, fragment)
            .commitNow();
    }
}
```
## 2) Custom UI
ZEGOCLOUD's Call Kit provides a wealth of custom interfaces; we only need to configure the parameters according to business requirements.
The configuration items implemented in the example below are:
- camera is not turned on by default when entering a call
- the interface displays the audio call page
- the bottom button only displays the microphone, 
- hang up
- speaker switch buttons.

```java
    ZegoUIKitPrebuiltCallConfig config = new ZegoUIKitPrebuiltCallConfig();
    config.turnOnCameraWhenJoining = false;
    config.audioVideoViewConfig.showCameraStateOnView = false;
    config.bottomMenuBarConfig.buttons = Arrays.asList(
        ZegoMenuBarButtonName.TOGGLE_MICROPHONE_BUTTON,
        ZegoMenuBarButtonName.HANG_UP_BUTTON,
        ZegoMenuBarButtonName.SWITCH_AUDIO_OUTPUT_BUTTON
    );
```

If you are thinking of building a voice chat app, pick up a voice chat SDK and take action.

---

[Sign up](https://console.zegocloud.com/account/signup?_source=dev&article=31) with ZEGOCLOUD, and get **10,000 minutes** free every month.

## Did you know? 👏

> **Like** and **Follow** is the biggest encouragement to me
> **Follow me** to learn more technical knowledge
> Thank you for reading :)

## Learn more

This is one of the live technical articles. Welcome to other articles:

{% embed https://dev.to/zegocloud/how-to-create-avatar-from-photo-57oa %}

{% embed https://dev.to/zegocloud/how-to-build-a-live-streaming-app-81a %}

{% embed https://dev.to/davidrelo/how-to-use-video-call-api-to-build-a-live-video-call-app-4k1b %}