# First Time Setup Follow this step-by-step guide to set up the Sinch Voice and Video SDK for the first time. ## Register an Application 1. Register a Sinch Developer account [here](https://dashboard.sinch.com/signup). 2. Set up a new application in the Dashboard to obtain an *Application Key* and an *Application Secret*. ## Download Download the Sinch SDK from the [SDK Downloads](/docs/in-app-calling/sdk-downloads) page. It includes the AAR library, this user guide, reference documentation, and sample apps for calling. ### Add the Sinch library The Sinch SDK library is distributed in [AAR](https://developer.android.com/studio/projects/android-library) format. To use it in your project either: > - Copy the `.aar` file to the `libs` folder and edit the `build.gradle` file to include: ```gradle repositories { flatDir { dirs 'libs' } } dependencies { implementation(name:'sinch-android-rtc', version:'+', ext:'aar') } ``` > - Or, in Android Studio, choose `File → New → New Module → Import .JAR/.AAR Package`. ### Consume from Maven Central Alternatively, you can consume the SDK from Maven Central. See the Android SDK artifact and Gradle instructions in the [SDK Downloads](/docs/in-app-calling/sdk-downloads#android-sdk-on-maven-central) page. ## Running ProGuard If you use ProGuard/R8, we bundle an example `proguard-project.txt` that ensures the Sinch SDK works as expected. ## Permissions A minimum set of permissions is needed for the app to use the Sinch SDK. Specify these in the `AndroidManifest.xml` file. ```xml ``` Native calls and phone state By default, the Sinch SDK hangs up any Sinch call if the regular phone app has an active call. This functionality requires the permission `android.permission.READ_PHONE_STATE`. If you do not want this behavior, disable it by calling [`SinchClient.callController.setRespectNativeCalls(false)`](https://download.sinch.com/android/latest/reference/sinch-rtc/com.sinch.android.rtc.calling/-call-controller/set-respect-native-calls.html) and you can remove the `READ_PHONE_STATE` permission. Automatic audio routing & Bluetooth If you intend to use Automatic Audio Routing (see the [Voice Calling](/docs/in-app-calling/android/calling) section), you must add `android.permission.BLUETOOTH` in the manifest and ensure the user has granted this permission. ## Verify Manifest at Runtime To verify that the manifest has the necessary permissions, use [`SinchClient.checkManifest()`](https://download.sinch.com/android/latest/reference/sinch-rtc/com.sinch.android.rtc/-sinch-client/check-manifest.html). It checks whether required permissions are granted by the user at runtime. Examples of dynamically requesting missing permissions are included in the sample apps that come with the SDK. *Note:* This method considers the features enabled for the app (for example, calling, respecting native calls). Call `SinchClient.checkManifest()` after setup but before starting the `SinchClient`.