diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9a5f7f9a..c2235a78 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -16,11 +16,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set up JDK
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
- distribution: 'adopt'
+ distribution: 'temurin'
java-version: '11'
cache: 'gradle'
- name: Copy gradle.properties
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 00000000..a24352f4
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CHANGES.md b/CHANGES.md
index 6397a428..1052d5d3 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -11,6 +11,43 @@
## develop
+## sora-andoroid-sdk-2023.1.0
+
+- [UPDATE] システム条件を更新する
+ - Android Studio 2022.1.1 以降
+ - WebRTC SFU Sora 2022.2.0 以降
+ - Sora Android SDK 2023.1.0 以降
+ - @miosakuma
+- [UPDATE] `compileSdkVersion` を 33 に上げる
+ - @miosakuma
+- [UPDATE] `targetSdkVersion` を 33 に上げる
+ - @miosakuma
+- [UPDATE] Kotlin のバージョンを 1.8.10 に上げる
+ - @miosakuma
+- [UPDATE] Compose Compiler のバージョンを 1.4.3 に上げる
+ - @miosakuma
+- [UPDATE] Gradle を 7.6.1 に上げる
+ - @miosakuma
+- [UPDATE] 依存ライブラリーのバージョンを上げる
+ - com.android.tools.build:gradle を 7.4.2 に上げる
+ - com.github.ben-manes:gradle-versions-plugin を 0.46.0 に上げる
+ - org.jlleitschuh.gradle:ktlint-gradle を 11.3.1 に上げる
+ - com.google.code.gson:gson を 2.10.1 に上げる
+ - androidx.appcompat:appcompat を 1.6.1 に上げる
+ - androidx.recyclerview:recyclerview: を 1.3.0 に上げる
+ - com.google.android.material:material: を 1.8.0 に上げる
+ - androidx.navigation:navigation-fragment-ktx を 2.5.3 に上げる
+ - androidx.navigation:navigation-ui-ktx を 2.5.3 に上げる
+ - androidx.compose.ui:ui:1.4.0 に上げる
+ - androidx.compose.material:material を 1.4.0 に上げる
+ - androidx.compose.material:material-icons-extended を 1.4.0 に上げる
+ - androidx.activity:activity-compose を 1.7.0 に上げる
+
+- [ADD] 映像コーデックに AV1 を追加する
+ - @miosakuma
+- [ADD] ビデオチャットサンプルに音声ストリーミング機能の言語コードを追加する
+ - @miosakuma
+
## sora-andoroid-sdk-2022.4.0
- [UPDATE] `compileSdkVersion` を 32 に上げる
diff --git a/README.md b/README.md
index 2234b979..4a201d6e 100644
--- a/README.md
+++ b/README.md
@@ -15,9 +15,9 @@ Please read https://github.com/shiguredo/oss before use.
## システム条件
- Android 8.0 以降 (エミュレーターでの動作は保証しません)
-- Android Studio 2021.2.1 以降
-- WebRTC SFU Sora 2022.1.1 以降
-- Sora Android SDK 2022.4.0 以降
+- Android Studio 2022.1.1 以降
+- WebRTC SFU Sora 2022.2.2 以降
+- Sora Android SDK 2023.1.0 以降
## サンプルの使い方
@@ -41,6 +41,10 @@ Please read https://github.com/shiguredo/oss before use.
スポットライトのデモです。アクティブ配信数を固定したチャットが可能です。
+### メッセージング
+
+メッセージングのデモです。
+
### スクリーンキャスト
クライアント端末の画面を動画配信するデモです。
@@ -51,6 +55,6 @@ Please read https://github.com/shiguredo/oss before use.
## Copyright
-- Copyright 2022, Shiguredo Inc. and Lyo Kato
+- Copyright 2023, Shiguredo Inc. and Lyo Kato
- LibYuv ライブラリ: Copyright 2011 The LibYuv Project Authors.
diff --git a/build.gradle b/build.gradle
index 3c1fa5ba..ec78887d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,8 +1,8 @@
apply plugin: "com.github.ben-manes.versions"
buildscript {
- ext.kotlin_version = '1.7.10'
- ext.sora_android_sdk_version = '2022.4.0'
+ ext.kotlin_version = '1.8.10'
+ ext.sora_android_sdk_version = '2023.1.0'
repositories {
google()
@@ -10,12 +10,12 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:7.2.2'
+ classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}"
- classpath "com.github.ben-manes:gradle-versions-plugin:0.42.0"
- classpath "org.jlleitschuh.gradle:ktlint-gradle:10.3.0"
+ classpath "com.github.ben-manes:gradle-versions-plugin:0.46.0"
+ classpath "org.jlleitschuh.gradle:ktlint-gradle:11.3.1"
}
// デバッグ用: true に設定すると wss ではなく ws で接続できる
diff --git a/samples/build.gradle b/samples/build.gradle
index 34c8d078..ffd2685d 100644
--- a/samples/build.gradle
+++ b/samples/build.gradle
@@ -4,10 +4,10 @@ apply plugin: 'kotlin-kapt'
apply plugin: 'org.jlleitschuh.gradle.ktlint'
android {
- compileSdkVersion 32
+ compileSdkVersion 33
defaultConfig {
applicationId "jp.shiguredo.sora.sample"
- targetSdkVersion 30
+ targetSdkVersion 33
minSdkVersion 26
versionCode 1
versionName "1.0"
@@ -49,7 +49,7 @@ android {
}
composeOptions {
- kotlinCompilerExtensionVersion '1.3.0'
+ kotlinCompilerExtensionVersion '1.4.3'
}
buildTypes {
@@ -91,21 +91,21 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}"
implementation "org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}"
- implementation 'com.google.code.gson:gson:2.9.1'
+ implementation 'com.google.code.gson:gson:2.10.1'
- implementation 'androidx.appcompat:appcompat:1.5.0'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
implementation "androidx.cardview:cardview:1.0.0"
- implementation 'androidx.recyclerview:recyclerview:1.2.1'
+ implementation 'androidx.recyclerview:recyclerview:1.3.0'
- implementation 'com.google.android.material:material:1.6.1'
+ implementation 'com.google.android.material:material:1.8.0'
implementation 'com.jaredrummler:material-spinner:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
- implementation 'androidx.navigation:navigation-fragment-ktx:2.5.1'
- implementation 'androidx.navigation:navigation-ui-ktx:2.5.1'
- implementation 'androidx.compose.ui:ui:1.2.1'
- implementation 'androidx.compose.material:material:1.2.1'
- implementation "androidx.compose.material:material-icons-extended:1.2.1"
- implementation 'androidx.activity:activity-compose:1.5.1'
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
+ implementation 'androidx.compose.ui:ui:1.4.0'
+ implementation 'androidx.compose.material:material:1.4.0'
+ implementation "androidx.compose.material:material-icons-extended:1.4.0"
+ implementation 'androidx.activity:activity-compose:1.7.0'
ext.pd_version = '4.9.2'
implementation "com.github.permissions-dispatcher:permissionsdispatcher:${pd_version}"
diff --git a/samples/src/main/kotlin/jp/shiguredo/sora/sample/facade/SoraVideoChannel.kt b/samples/src/main/kotlin/jp/shiguredo/sora/sample/facade/SoraVideoChannel.kt
index a4fde73e..296d146a 100644
--- a/samples/src/main/kotlin/jp/shiguredo/sora/sample/facade/SoraVideoChannel.kt
+++ b/samples/src/main/kotlin/jp/shiguredo/sora/sample/facade/SoraVideoChannel.kt
@@ -65,6 +65,7 @@ class SoraVideoChannel(
private val audioStereo: Boolean = false,
private val needLocalRenderer: Boolean = true,
private val audioEnabled: Boolean = true,
+ private val audioStreamingLanguageCode: String? = null,
private val capturerFactory: CameraVideoCapturerFactory =
DefaultCameraVideoCapturerFactory(context, fixedResolution, cameraFacing),
private var listener: Listener?
@@ -330,6 +331,7 @@ class SoraVideoChannel(
this.proxy.password = BuildConfig.PROXY_PASSWORD
}
}
+ audioStreamingLanguageCode = this@SoraVideoChannel.audioStreamingLanguageCode
}
val peerConnectionOption = PeerConnectionOption().apply {
diff --git a/samples/src/main/kotlin/jp/shiguredo/sora/sample/screencast/SoraScreencastService.kt b/samples/src/main/kotlin/jp/shiguredo/sora/sample/screencast/SoraScreencastService.kt
index 5b7e085e..d96c60a0 100644
--- a/samples/src/main/kotlin/jp/shiguredo/sora/sample/screencast/SoraScreencastService.kt
+++ b/samples/src/main/kotlin/jp/shiguredo/sora/sample/screencast/SoraScreencastService.kt
@@ -104,7 +104,7 @@ class SoraScreencastService : Service() {
}
val activityIntent = createBoundActivityIntent()
- val pendingIntent = PendingIntent.getActivity(this, 0, activityIntent, 0)
+ val pendingIntent = PendingIntent.getActivity(this, 0, activityIntent, PendingIntent.FLAG_MUTABLE)
val notification = NotificationCompat.Builder(this, notificationChannelId)
.setContentTitle(req!!.stateTitle)
.setContentText(req!!.stateText)
diff --git a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/ScreencastSetupActivity.kt b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/ScreencastSetupActivity.kt
index daea39c8..2d97d172 100644
--- a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/ScreencastSetupActivity.kt
+++ b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/ScreencastSetupActivity.kt
@@ -21,7 +21,7 @@ class ScreencastSetupActivity : AppCompatActivity() {
val TAG = ScreencastSetupActivity::class.simpleName
}
- private val videoCodecOptions = listOf("VP9", "VP8", "H264")
+ private val videoCodecOptions = listOf("VP9", "VP8", "H264", "AV1")
private val audioCodecOptions = listOf("OPUS")
private val multistreamOptions = listOf("有効", "無効")
diff --git a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/SpotlightRoomSetupActivity.kt b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/SpotlightRoomSetupActivity.kt
index 7b72001a..2fad5066 100644
--- a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/SpotlightRoomSetupActivity.kt
+++ b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/SpotlightRoomSetupActivity.kt
@@ -16,7 +16,7 @@ class SpotlightRoomSetupActivity : AppCompatActivity() {
}
private val spotlightNumberOptions = listOf("未指定", "1", "2", "3", "4", "5", "6", "7", "8")
- private val videoCodecOptions = listOf("VP8", "VP9", "H264")
+ private val videoCodecOptions = listOf("VP8", "VP9", "H264", "AV1")
private val audioCodecOptions = listOf("OPUS")
private val audioBitRateOptions = listOf(
"未指定", "8", "16", "24", "32",
diff --git a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomActivity.kt b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomActivity.kt
index d65530ce..38833966 100644
--- a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomActivity.kt
+++ b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomActivity.kt
@@ -61,6 +61,7 @@ class VideoChatRoomActivity : AppCompatActivity() {
private var bundleId: String? = null
private var dataChannelSignaling: Boolean? = null
private var ignoreDisconnectWebSocket: Boolean? = null
+ private var audioStreamingLanguageCode: String? = null
private var oldAudioMode: Int = AudioManager.MODE_NORMAL
@@ -196,6 +197,13 @@ class VideoChatRoomActivity : AppCompatActivity() {
else -> null
}
+ audioStreamingLanguageCode = when (intent.getStringExtra("AUDIO_STREAMING_LANGUAGE_CODE")) {
+ "ja-JP" -> "ja-JP"
+ "en-US" -> "en-US"
+ "未指定" -> null
+ else -> null
+ }
+
// ステレオでは landscape にしたほうが内蔵マイクを使うときに自然な向きとなる。
if (audioStereo) {
if (resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
@@ -330,6 +338,7 @@ class VideoChatRoomActivity : AppCompatActivity() {
cameraFacing = cameraFacing,
clientId = clientId,
bundleId = bundleId,
+ audioStreamingLanguageCode = audioStreamingLanguageCode,
listener = channelListener,
needLocalRenderer = true
)
diff --git a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomSetupActivity.kt b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomSetupActivity.kt
index 96422c00..46f9b9a0 100644
--- a/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomSetupActivity.kt
+++ b/samples/src/main/kotlin/jp/shiguredo/sora/sample/ui/VideoChatRoomSetupActivity.kt
@@ -15,7 +15,7 @@ class VideoChatRoomSetupActivity : AppCompatActivity() {
val TAG = VideoChatRoomSetupActivity::class.simpleName
}
- private val videoCodecOptions = listOf("VP9", "VP8", "H264")
+ private val videoCodecOptions = listOf("VP9", "VP8", "H264", "AV1")
private val videoEnabledOptions = listOf("有効", "無効")
private val audioCodecOptions = listOf("OPUS")
private val audioEnabledOptions = listOf("有効", "無効")
@@ -39,6 +39,7 @@ class VideoChatRoomSetupActivity : AppCompatActivity() {
private val bundleIdOptions = listOf("なし", "端末情報", "時雨堂", "ランダム")
private val dataChannelSignalingOptions = listOf("未指定", "無効", "有効")
private val ignoreDisconnectWebSocketOptions = listOf("未指定", "無効", "有効")
+ private val audioStreamingLanguageCodeOptions = listOf("未指定", "ja-JP", "en-US")
private lateinit var binding: ActivityVideoChatRoomSetupBinding
@@ -88,6 +89,8 @@ class VideoChatRoomSetupActivity : AppCompatActivity() {
binding.dataChannelSignalingSelection.spinner.setItems(dataChannelSignalingOptions)
binding.ignoreDisconnectWebSocketSelection.name.text = "WS 切断を無視"
binding.ignoreDisconnectWebSocketSelection.spinner.setItems(ignoreDisconnectWebSocketOptions)
+ binding.audioStreamingLanguageCodeSelection.name.text = "文字変換言語コード"
+ binding.audioStreamingLanguageCodeSelection.spinner.setItems(audioStreamingLanguageCodeOptions)
}
private fun startVideoChat() {
@@ -115,6 +118,7 @@ class VideoChatRoomSetupActivity : AppCompatActivity() {
val bundleId = selectedItem(binding.bundleIdSelection.spinner)
val dataChannelSignaling = selectedItem(binding.dataChannelSignalingSelection.spinner)
val ignoreDisconnectWebSocket = selectedItem(binding.ignoreDisconnectWebSocketSelection.spinner)
+ val audioStreamingLanguageCode = selectedItem(binding.audioStreamingLanguageCodeSelection.spinner)
val intent = Intent(this, VideoChatRoomActivity::class.java)
intent.putExtra("CHANNEL_NAME", channelName)
@@ -136,6 +140,7 @@ class VideoChatRoomSetupActivity : AppCompatActivity() {
intent.putExtra("BUNDLE_ID", bundleId)
intent.putExtra("DATA_CHANNEL_SIGNALING", dataChannelSignaling)
intent.putExtra("IGNORE_DISCONNECT_WEBSOCKET", ignoreDisconnectWebSocket)
+ intent.putExtra("AUDIO_STREAMING_LANGUAGE_CODE", audioStreamingLanguageCode)
startActivity(intent)
}
diff --git a/samples/src/main/res/layout/activity_video_chat_room_setup.xml b/samples/src/main/res/layout/activity_video_chat_room_setup.xml
index b7da1d62..658b5d15 100644
--- a/samples/src/main/res/layout/activity_video_chat_room_setup.xml
+++ b/samples/src/main/res/layout/activity_video_chat_room_setup.xml
@@ -97,6 +97,9 @@
+
diff --git a/webrtc-video-effector/build.gradle b/webrtc-video-effector/build.gradle
index 5b657538..e326716c 100644
--- a/webrtc-video-effector/build.gradle
+++ b/webrtc-video-effector/build.gradle
@@ -2,9 +2,9 @@ apply plugin: 'com.android.library'
apply plugin: 'org.jlleitschuh.gradle.ktlint'
android {
- compileSdkVersion 31
+ compileSdkVersion 33
defaultConfig {
- targetSdkVersion 30
+ targetSdkVersion 33
minSdkVersion 26
externalNativeBuild {
cmake {