Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 31 additions & 25 deletions Android/APIExample-Compose/app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import com.android.build.gradle.internal.api.ApkVariantOutputImpl

import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Properties

plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid)
alias(libs.plugins.kotlinCompose)
}

val sdkVersionFile = file("../gradle.properties")
Expand All @@ -17,12 +18,12 @@ val localSdkPath = "${rootProject.projectDir.absolutePath}/../../sdk"

android {
namespace = "io.agora.api.example.compose"
compileSdk = 35
compileSdk = 37

defaultConfig {
applicationId = "io.agora.api.example.compose"
minSdk = 24
targetSdk = 35
targetSdk = 37
versionCode = 1
versionName = "1.0"

Expand Down Expand Up @@ -62,6 +63,7 @@ android {
}
release {
isMinifyEnabled = true
isShrinkResources = true
signingConfig = signingConfigs.getByName("myConfig")
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
Expand All @@ -73,41 +75,45 @@ android {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
composeOptions {
kotlinCompilerExtensionVersion = "1.5.14"
}

packaging {
jniLibs {
pickFirsts += "**/libaosl.so"
pickFirsts += "**/libc++_shared.so"
}
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
android.applicationVariants.all {
outputs.all {
if (this is ApkVariantOutputImpl) {
this.outputFileName =
"${rootProject.name}_${agoraSdkVersion}_${
SimpleDateFormat("yyyyMMddHHmm").format(
Date()
)
}.apk"
}
}
}
}
base {
archivesName.set(
"${rootProject.name}_${agoraSdkVersion}_${
SimpleDateFormat("yyyyMMddHHmm").format(
Date()
)
}"
)
}

android {
sourceSets {
getByName("main") {
if (File(localSdkPath).exists()) {
jniLibs.srcDirs(localSdkPath)
jniLibs.directories.add(localSdkPath)
}
}

}
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
}

dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
Expand Down Expand Up @@ -135,4 +141,4 @@ dependencies {
implementation("io.agora.rtc:full-sdk:${agoraSdkVersion}")
implementation("io.agora.rtc:full-screen-sharing:${agoraSdkVersion}")
}
}
}
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
package io.agora.api.example.compose

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import org.junit.Assert.assertEquals
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onNodeWithContentDescription
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.test.performClick
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith

/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
@get:Rule
val composeRule = createAndroidComposeRule<MainActivity>()

@Test
fun useAppContext() {
// Context of the app under test.
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("io.agora.api.example.compose", appContext.packageName)
fun homeAndSettingsNavigation_renderExpectedContent() {
composeRule.onNodeWithText("Agora API Example").assertIsDisplayed()
composeRule.onNodeWithText("Basic").assertIsDisplayed()
composeRule.onNodeWithText("Join Video Channel").assertIsDisplayed()

composeRule.onNodeWithContentDescription("Open settings").performClick()

composeRule.onNodeWithText("Settings").assertIsDisplayed()
composeRule.onNodeWithContentDescription("Navigate back").performClick()
composeRule.onNodeWithText("Agora API Example").assertIsDisplayed()
}
}
}
16 changes: 6 additions & 10 deletions Android/APIExample-Compose/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-feature
android:name="android.hardware.camera"
android:required="false" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Expand Down Expand Up @@ -30,22 +34,14 @@
android:theme="@style/Theme.APIExampleCompose"
android:supportsPictureInPicture="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"
android:configChanges="screenSize|screenLayout|orientation|smallestScreenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<!--
<activity
android:name=".samples.PictureInPictureActivity"
android:supportsPictureInPicture="true"
android:launchMode="singleTask"
android:configChanges="screenSize|screenLayout|orientation|smallestScreenSize"/>
-->

</application>

</manifest>
</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.RectangleShape
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.unit.dp
import io.agora.api.example.compose.utils.AgoraConfig
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import io.agora.api.example.compose.utils.AgoraConfig
import io.agora.api.example.compose.R
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import io.agora.api.example.compose.utils.AgoraConfig
import io.agora.api.example.compose.R
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import io.agora.api.example.compose.utils.AgoraConfig
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.material3.Button
import androidx.compose.material3.Divider
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
Expand All @@ -28,7 +28,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
Expand Down Expand Up @@ -445,7 +445,7 @@ private fun LiveStreamingSettingView(
onValueChanged("videoScenario", option.second)
}
)
Divider(modifier = Modifier.padding(horizontal = 16.dp))
HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp))
if (role == Constants.CLIENT_ROLE_AUDIENCE) {
SwitchRaw(
title = stringResource(id = R.string.open_low_latency_live),
Expand All @@ -460,7 +460,7 @@ private fun LiveStreamingSettingView(
}

if (role == Constants.CLIENT_ROLE_BROADCASTER) {
Divider(modifier = Modifier.padding(horizontal = 16.dp))
HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp))
SwitchRaw(
title = stringResource(id = R.string.watermark),
checked = values["watermark"] as? Boolean ?: false
Expand All @@ -481,7 +481,7 @@ private fun LiveStreamingSettingView(
}


Divider(modifier = Modifier.padding(horizontal = 16.dp))
HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp))
SwitchRaw(
title = stringResource(id = R.string.low_stream),
checked = values["stream"] as? Boolean ?: false
Expand All @@ -497,7 +497,7 @@ private fun LiveStreamingSettingView(
}


Divider(modifier = Modifier.padding(horizontal = 16.dp))
HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp))
DropdownMenuRaw(
title = stringResource(id = R.string.encoder_type),
options = listOf(
Expand All @@ -516,7 +516,7 @@ private fun LiveStreamingSettingView(
})
}

Divider(modifier = Modifier.padding(horizontal = 16.dp))
HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp))
SwitchRaw(
title = stringResource(id = R.string.b_frame),
checked = values["BFrame"] as? Boolean ?: false
Expand All @@ -535,7 +535,7 @@ private fun LiveStreamingSettingView(
}


Divider(modifier = Modifier.padding(horizontal = 16.dp))
HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp))
SwitchRaw(
title = stringResource(id = R.string.video_image),
checked = values["padding"] as? Boolean ?: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import io.agora.api.example.compose.utils.AgoraConfig
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
Expand Down
Loading
Loading