Getting Started with ConoStream SDK
ConoStream SDK provides a simple and powerful way to add real-time audio and video streaming capabilities to your Android application. This guide will walk you through the installation and basic setup process.
Requirements
- Android Studio Arctic Fox (2020.3.1) or later
- Android SDK 21 (Lollipop) or higher
- Kotlin 1.6.0 or higher (for Kotlin projects)
- Java 8 or higher
Installation
Step 1: Add the AAR file
Copy the conostream-android-sdk-release.aar file to your project's
app/libs directory.
app/
├── libs/
│ └── conostream-android-sdk-release.aar
├── src/
└── build.gradle
Step 2: Configure build.gradle
Add the following dependencies to your app-level build.gradle file:
android {
// Enable ViewBinding (recommended)
buildFeatures {
viewBinding true
}
}
dependencies {
// ConoStream SDK
implementation files('libs/conostream-android-sdk-release.aar')
// Required dependencies
implementation 'io.github.webrtc-sdk:android-prefixed:137.7151.05'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'
// OkHttp for networking
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
// Protobuf for protocol
implementation 'com.google.protobuf:protobuf-javalite:3.21.12'
}
Step 3: Add Permissions
Add the required permissions to your AndroidManifest.xml:
<manifest>
<!-- Internet permission -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Audio permissions -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Camera permission (for video) -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- Bluetooth permissions (for headsets) -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<application>
...
</application>
</manifest>
Basic Setup
Initialize in Application Class
Create a manager instance in your Application class for app-wide access:
public class MyApplication extends Application {
private ConoStreamManager conoStreamManager;
@Override
public void onCreate() {
super.onCreate();
initConoStreamManager();
}
private void initConoStreamManager() {
conoStreamManager = new ConoStreamManager(this);
}
public ConoStreamManager getConoStreamManager() {
return conoStreamManager;
}
public void releaseConoStreamManager() {
if (conoStreamManager != null) {
conoStreamManager.release();
conoStreamManager = null;
}
}
}
Register in Manifest
<application
android:name=".MyApplication"
...
>
Connect to a Room
Now you can connect to a streaming room from any Activity:
public class LiveActivity extends AppCompatActivity {
private ConoStreamManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get manager from Application
manager = ((MyApplication) getApplication()).getConoStreamManager();
// Connect to room
String serverUrl = "wss://your-server.com";
String token = "your-access-token";
manager.connect(serverUrl, token, new ConoStreamEventListener() {
@Override
public void onConnected() {
Log.d("ConoStream", "Connected to room!");
// Start publishing audio
manager.publishMicrophone();
}
@Override
public void onDisconnected() {
Log.d("ConoStream", "Disconnected from room");
}
@Override
public void onError(String error) {
Log.e("ConoStream", "Error: " + error);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
manager.leaveRoom();
}
}
Note: You need a valid access token to connect to a room. See the Authentication guide for details on token generation.