This commit is contained in:
@@ -18,5 +18,6 @@ See [StreamPack](https://github.com/ThibaultBee/StreamPack) for more settings an
|
|||||||
1. Click on "Use this template" to create a new repository from this template.
|
1. Click on "Use this template" to create a new repository from this template.
|
||||||
2. Clone your new repository.
|
2. Clone your new repository.
|
||||||
3. Open the project with Android Studio.
|
3. Open the project with Android Studio.
|
||||||
4. Set your RTMP or SRT server URL in `MainActivity.kt`.
|
4. Replace default `rtmp://my.server.url:1935/app/streamKey` by your RTMP or SRT server URL in
|
||||||
|
`MainViewModel.kt`.
|
||||||
5. Run the application on a device or an emulator.
|
5. Run the application on a device or an emulator.
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
plugins {
|
|
||||||
id 'com.android.application'
|
|
||||||
id 'org.jetbrains.kotlin.android'
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
namespace 'io.github.thibaultbee.streampack.example'
|
|
||||||
compileSdk 36
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "io.github.thibaultbee.streampack.example"
|
|
||||||
minSdk 26
|
|
||||||
targetSdk 36
|
|
||||||
versionCode 1
|
|
||||||
versionName "1.0"
|
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
minifyEnabled false
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
|
||||||
}
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = '1.8'
|
|
||||||
}
|
|
||||||
packagingOptions {
|
|
||||||
jniLibs {
|
|
||||||
pickFirsts += ['**/*.so']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
buildFeatures {
|
|
||||||
viewBinding true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
|
|
||||||
implementation 'androidx.core:core-ktx:1.17.0'
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.7.1'
|
|
||||||
implementation 'com.google.android.material:material:1.13.0'
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
|
||||||
|
|
||||||
implementation "io.github.thibaultbee.streampack:streampack-core:${streampackVersion}"
|
|
||||||
// For the `PreviewView`
|
|
||||||
implementation "io.github.thibaultbee.streampack:streampack-ui:${streampackVersion}"
|
|
||||||
// TODO: Only needed for RTMP live streaming: remove if you don't need it
|
|
||||||
implementation "io.github.thibaultbee.streampack:streampack-rtmp:${streampackVersion}"
|
|
||||||
// TODO: Only needed for SRT live streaming: remove if you don't need it
|
|
||||||
implementation "io.github.thibaultbee.streampack:streampack-srt:${streampackVersion}"
|
|
||||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.9.4'
|
|
||||||
|
|
||||||
testImplementation 'junit:junit:4.13.2'
|
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.3.0'
|
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.7.0'
|
|
||||||
}
|
|
||||||
65
app/build.gradle.kts
Normal file
65
app/build.gradle.kts
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.application)
|
||||||
|
alias(libs.plugins.kotlin.android)
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "io.github.thibaultbee.streampack.app"
|
||||||
|
compileSdk {
|
||||||
|
version = release(36)
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId = "io.github.thibaultbee.streampack.app"
|
||||||
|
minSdk = 24
|
||||||
|
targetSdk = 36
|
||||||
|
versionCode = 1
|
||||||
|
versionName = "1.0"
|
||||||
|
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
isMinifyEnabled = false
|
||||||
|
proguardFiles(
|
||||||
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
|
"proguard-rules.pro"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_18
|
||||||
|
targetCompatibility = JavaVersion.VERSION_18
|
||||||
|
}
|
||||||
|
kotlin {
|
||||||
|
compilerOptions {
|
||||||
|
jvmTarget.set(JvmTarget.JVM_18)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buildFeatures {
|
||||||
|
viewBinding = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(libs.streampack.core)
|
||||||
|
// For the `PreviewView`
|
||||||
|
implementation(libs.streampack.ui)
|
||||||
|
// TODO: Only needed for RTMP live streaming: remove if you don't need it
|
||||||
|
implementation(libs.streampack.rtmp)
|
||||||
|
// TODO: Only needed for SRT live streaming: remove if you don't need it
|
||||||
|
implementation(libs.streampack.srt)
|
||||||
|
|
||||||
|
implementation(libs.core.ktx)
|
||||||
|
implementation(libs.appcompat)
|
||||||
|
implementation(libs.material)
|
||||||
|
implementation(libs.constraintlayout)
|
||||||
|
implementation(libs.lifecycle.runtime.ktx)
|
||||||
|
|
||||||
|
testImplementation(libs.junit)
|
||||||
|
androidTestImplementation(libs.ext.junit)
|
||||||
|
androidTestImplementation(libs.espresso.core)
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thibaultbee.streampack.example
|
package io.github.thibaultbee.streampack.app
|
||||||
|
|
||||||
import android.content.pm.ActivityInfo
|
import android.content.pm.ActivityInfo
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thibaultbee.streampack.example
|
package io.github.thibaultbee.streampack.app
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
@@ -9,12 +9,12 @@ import androidx.activity.viewModels
|
|||||||
import androidx.annotation.RequiresPermission
|
import androidx.annotation.RequiresPermission
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import io.github.thibaultbee.streampack.app.databinding.ActivityMainBinding
|
||||||
import io.github.thibaultbee.streampack.core.elements.sources.video.camera.extensions.defaultCameraId
|
import io.github.thibaultbee.streampack.core.elements.sources.video.camera.extensions.defaultCameraId
|
||||||
import io.github.thibaultbee.streampack.core.streamers.lifecycle.StreamerActivityLifeCycleObserver
|
import io.github.thibaultbee.streampack.core.streamers.lifecycle.StreamerActivityLifeCycleObserver
|
||||||
import io.github.thibaultbee.streampack.example.databinding.ActivityMainBinding
|
import io.github.thibaultbee.streampack.app.utils.PermissionsManager
|
||||||
import io.github.thibaultbee.streampack.example.utils.PermissionsManager
|
import io.github.thibaultbee.streampack.app.utils.showDialog
|
||||||
import io.github.thibaultbee.streampack.example.utils.showDialog
|
import io.github.thibaultbee.streampack.app.utils.toast
|
||||||
import io.github.thibaultbee.streampack.example.utils.toast
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thibaultbee.streampack.example
|
package io.github.thibaultbee.streampack.app
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.media.AudioFormat
|
import android.media.AudioFormat
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thibaultbee.streampack.example
|
package io.github.thibaultbee.streampack.app
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thibaultbee.streampack.example.utils
|
package io.github.thibaultbee.streampack.app.utils
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.DialogInterface
|
import android.content.DialogInterface
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package io.github.thibaultbee.streampack.example.utils
|
package io.github.thibaultbee.streampack.app.utils
|
||||||
|
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
12
build.gradle
12
build.gradle
@@ -1,12 +0,0 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
||||||
buildscript {
|
|
||||||
ext {
|
|
||||||
// Upgrade StreamPack version here
|
|
||||||
streampackVersion = '3.1.1'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
plugins {
|
|
||||||
id 'com.android.application' version '9.0.0' apply false
|
|
||||||
id 'org.jetbrains.kotlin.android' version '2.2.20' apply false
|
|
||||||
}
|
|
||||||
5
build.gradle.kts
Normal file
5
build.gradle.kts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
|
plugins {
|
||||||
|
alias(libs.plugins.android.application) apply false
|
||||||
|
alias(libs.plugins.kotlin.android) apply false
|
||||||
|
}
|
||||||
31
gradle/libs.versions.toml
Normal file
31
gradle/libs.versions.toml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
[versions]
|
||||||
|
agp = "9.0.0"
|
||||||
|
appcompat = "1.7.1"
|
||||||
|
constraintlayout = "2.2.1"
|
||||||
|
coreKtx = "1.17.0"
|
||||||
|
espressoCore = "3.7.0"
|
||||||
|
junit = "4.13.2"
|
||||||
|
junitVersion = "1.3.0"
|
||||||
|
kotlin = "2.3.0"
|
||||||
|
lifecycleRuntimeKtx = "2.10.0"
|
||||||
|
material = "1.13.0"
|
||||||
|
streampack = "3.1.1"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
|
||||||
|
constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
|
||||||
|
core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
|
||||||
|
espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" }
|
||||||
|
ext-junit = { module = "androidx.test.ext:junit", version.ref = "junitVersion" }
|
||||||
|
junit = { module = "junit:junit", version.ref = "junit" }
|
||||||
|
lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
||||||
|
material = { module = "com.google.android.material:material", version.ref = "material" }
|
||||||
|
streampack-core = { group = "io.github.thibaultbee.streampack", name = "streampack-core", version.ref = "streampack" }
|
||||||
|
streampack-ui = { group = "io.github.thibaultbee.streampack", name = "streampack-ui", version.ref = "streampack" }
|
||||||
|
streampack-rtmp = { group = "io.github.thibaultbee.streampack", name = "streampack-rtmp", version.ref = "streampack" }
|
||||||
|
streampack-srt = { group = "io.github.thibaultbee.streampack", name = "streampack-srt", version.ref = "streampack" }
|
||||||
|
|
||||||
|
[plugins]
|
||||||
|
android-application = { id = "com.android.application", version.ref = "agp" }
|
||||||
|
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
|
||||||
|
|
||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
|||||||
#Sun Mar 26 13:16:11 CEST 2023
|
#Sun Mar 26 13:16:11 CEST 2023
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
@@ -1,8 +1,14 @@
|
|||||||
pluginManagement {
|
pluginManagement {
|
||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
google {
|
||||||
google()
|
content {
|
||||||
|
includeGroupByRegex("com\\.android.*")
|
||||||
|
includeGroupByRegex("com\\.google.*")
|
||||||
|
includeGroupByRegex("androidx.*")
|
||||||
|
}
|
||||||
|
}
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencyResolutionManagement {
|
dependencyResolutionManagement {
|
||||||
@@ -12,5 +18,6 @@ dependencyResolutionManagement {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = "MyStreamingApp"
|
rootProject.name = "MyStreamingApp"
|
||||||
include ':app'
|
include(":app")
|
||||||
Reference in New Issue
Block a user