Overview¶
Warning
Android SDK 1.1 is intended to use on Android 8 and newer devices
Resources¶
Use Android SDK to develop mobile applications for streaming video and calls.
Download full WCS Android SDK build including examples and API documentation: Release notes
Read API documentation online: API docs
Download the source code of the examples: GitHub
The source code of the examples is located at GitHub and is used to comment the examples in the present documentation. For instance, this link line 34 refers to the thirty fourth line in the TwoPlayersActivity.java
class of the 2players example, the revision with the hash of 4ed4c6d77.
To test compiled applications, download the full build bundle with the examples and install the ...-debug.apk
file to your Android device.
Differences between Android SDK versions¶
In Android SDK 1.1 WebRTC library libjingle_peerconnection.jar
is updated to actual version. So Android SDK 1.1 requires Android API 26, i.e. application built with Android SDK 1.1 will run only on Android 8 and higher. Use Android SDK 1.0 only to support previous Android versions.
When publishing in Google Play, two APKs can be deployed - one for each of the Android SDK versions - for compatibility with devices with API lower and higher than 26.
Preparing examples for building¶
If you have some experience in developing Android apps, you can simply download the aar-library and link it to the project manually, then configure building.
Below is how to do this automatically using the export.sh
script:
1. Download the examples¶
2. Download the aar library¶
Download the aar library and put it to the export
folder
Example (replace x
by the actual build number):
wget http://flashphoner.com/downloads/builds/flashphoner_client/wcs-android-sdk/1.0/wcs-android-sdk-1.1.0.x.aar
cp wcs-android-sdk-1.1.0.x.aar export
3. Execute the export.sh
script¶
Open the export
folder and execute the export.sh
script.
The export.sh
script will prepare configs for further building. The result is placed into the output
folder.
Warning
This step is very important because application examples source code is the same for different versions of Android SDK. export.sh
script automatically sets minimal required Android API version for building examples depending on Android SDK version
4. Edit the local.properties
file¶
Edit the local.properties
file and specify paths to Android SDK and NDK.
Linux environment example:
Building examples with Gradle¶
Prepare examples for building, then go to the output
folder and start building:
Since Android SDK build 1.1.0.55,it is necessary to use Gradle 7 and above, or build examples with Gradle wrapper
Also, JDK 11 should be installed.
Building examples in Android Studio¶
Prepare examples for building, then rename the output
folder to wcs_android_sdk_samples
, for instance.
1. Install the necessary programs¶
2. Open the project in Android Studio¶
Open the project from the output
folder in Android Studio
3. Add Gradle run configuration¶
Add Gradle run configuration to the Run / Debug Configurations
menu
4. Configure the build¶
In the run configuration specify the build.gradle
file, the name of the build and set the purpose to build
5. Run building of examples¶
The building result is .apk
files located in the corresponding folders: 2players/build
, click-to-call/build
, and so on. The Android SDK file is located in the following path in the project: libs/wcs-android-sdk-1.1.0.x.aar
Building a separate example¶
If you cannot run export script for all the examples, or wish to build a separate example, it can be prepared for building as follows:
1. Download examples source code¶
2. Copy an example needed to a separate folder¶
3. Download aar library and put it to libs
subfolder¶
Download aar library and put it to libs
subfolder in the example folder
wget https://flashphoner.com/downloads/builds/flashphoner_client/wcs-android-sdk/1.1/wcs-android-sdk-1.1.0.x.aar
mkdir ~/streaming-min/libs
cp wcs-android-sdk-1.1.0.x.aar ~/streaming-min/libs
4. Add the buildscript
section to the build.gradle
file¶
Add the buildscript
section to the beginning of build.gradle
file in the example folder:
buildscript {
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
classpath 'com.github.triplet.gradle:play-publisher:1.1.5'
}
}
5. Add the repositories
section to the build.gradle
file¶
Add the repositories
section to the build.gradle
file in the example folder:
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
google()
flatDir{
dirs 'libs'
}
}
6. Replace the string in dependencies
section of the build.gradle
file¶
Replace the string in dependencies
section of the build.gradle
file in the example folder
to
where wcs-android-sdk-1.1.0.x
is the aar file name downloaded at step 3.
7. The build.gradle
file example¶
build.gradle Expand source
build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.github.triplet.play'
buildscript {
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
classpath 'com.github.triplet.gradle:play-publisher:1.1.5'
}
}
Properties signingProps = null
android {
compileSdkVersion 31
buildToolsVersion '31.0.0'
defaultConfig {
applicationId "com.flashphoner.wcsexample.two_way_streaming"
minSdkVersion 26
targetSdkVersion 31
versionCode 2600001
versionName "1.1"
}
def signingPropsFile = System.getenv('SIGNING_PROPERTIES')
if (signingPropsFile && new File(signingPropsFile).exists()) {
signingProps = new Properties()
signingProps.load(new FileInputStream(file(signingPropsFile)))
signingConfigs {
release {
storeFile file(signingProps['keystore'])
storePassword signingProps['keystore.password']
keyAlias signingProps['key.alias']
keyPassword signingProps['key.password']
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
if (signingProps) {
signingConfig signingConfigs.release
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
google()
flatDir{
dirs 'libs'
}
}
dependencies {
implementation 'com.flashphoner.fpwcsapi:wcs-android-sdk-1.1.0.x@aar'
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'com.google.android.material:material:1.4.0'
}
play {
if(signingProps) {
track = 'production'
serviceAccountEmail = signingProps['service.account.email']
pk12File = file(signingProps['service.account.pk12file'])
}
}
8. Building the example in Android Studio¶
Open the example folder in Android Studio to build the example. Android Studio will do Gradle sync and install gradle version needed
9. Building the example with Gradle¶
To build the example with Gradle install Gradle wrapper and run
Known issues¶
- It is impossible now to set microphone gain in Android SDK while publishing stream.