Skip to content

Commit 5b679e7

Browse files
committed
Merge branch 'develop'
2 parents 63bd04d + f20298e commit 5b679e7

File tree

195 files changed

+5217
-9421
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

195 files changed

+5217
-9421
lines changed

.github/workflows/android.yml

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,58 @@ jobs:
9797
./gradlew --scan --stacktrace \
9898
assembleDebug
9999
100-
- name: Unit Tests
100+
unitTest:
101+
name: Unit Tests
102+
runs-on: ubuntu-latest
103+
104+
steps:
105+
- name: Checkout
106+
uses: actions/checkout@v3
107+
108+
- name: set up JDK
109+
uses: actions/setup-java@v1
110+
with:
111+
java-version: 11
112+
113+
- name: Cache Gradle and wrapper
114+
uses: actions/cache@v3
115+
with:
116+
path: |
117+
~/.gradle/caches
118+
~/.gradle/wrapper
119+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
120+
restore-keys: |
121+
${{ runner.os }}-gradle-
122+
123+
- name: Run unit tests
101124
run: |
102-
./gradlew --scan --stacktrace \
103-
:stream-video-android-compose:testDebugUnitTest \
104-
# :stream-video-android-core:testDebugUnitTest
105-
106-
# Enable this after merging android manged devices.
107-
# - name: Android Tests
108-
# run: |
109-
# ./gradlew --scan --stacktrace \
110-
# :stream-video-android-core:connectedAndroidTest
125+
./gradlew :stream-video-android-compose:testDebugUnitTest --scan --stacktrace
126+
./gradlew :stream-video-android-core:testDebugUnitTest --scan --stacktrace
127+
128+
androidTest-GMD:
129+
name: Android Test with GMD
130+
if: ${{ false }} # disable for now
131+
runs-on: macOS-latest
132+
timeout-minutes: 55
133+
134+
steps:
135+
- name: Checkout
136+
uses: actions/checkout@v3
137+
138+
- name: Set up JDK 17
139+
uses: actions/setup-java@v3
140+
with:
141+
distribution: 'zulu'
142+
java-version: 17
143+
144+
# Sets gradle up
145+
- name: Setup Gradle
146+
uses: gradle/gradle-build-action@v2
147+
148+
# Cleans managed device if previously settle and space currently is not available
149+
- name: Clean Managed Devices
150+
run: ./gradlew cleanManagedDevices --unused-only
151+
152+
- name: Run instrumented tests with GMD
153+
run: ./gradlew pixel2api31DebugAndroidTest -Dorg.gradle.workers.max=1 -Pandroid.testoptions.manageddevices.emulator.gpu="swiftshader_indirect" -Pandroid.experimental.testOptions.managedDevices.emulator.showKernelLogging=true -Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=60
154+

README.md

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@
44

55
<p align="center">
66
<a href="https://github.com/GetStream/stream-video-android/actions"><img src="https://github.com/GetStream/stream-video-android/workflows/App%20Distribute%20CI/badge.svg" /></a>
7-
<a href="https://android-arsenal.com/api?level=21"><img alt="API" src="https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat"/></a>
7+
<a href="https://android-arsenal.com/api?level=24"><img alt="API" src="https://img.shields.io/badge/API-24%2B-brightgreen.svg?style=flat"/></a>
88
<a href="https://search.maven.org/search?q=stream-video-android"><img src="https://img.shields.io/maven-central/v/io.getstream/stream-video-android-core.svg?label=Maven%20Central" /></a>
99
</p>
1010

11-
This is the official Android SDK for Stream Video.
11+
This is the official Android SDK for Stream Video, a service for building video call, audio room, and live streaming applications. This library includes both a low-level video SDK and a set of reusable UI components.
12+
Most users start with the Compose UI components, and fall back to the lower level API when they want to customize things.
1213

13-
## What is Stream?
14+
<a href="https://getstream.io?utm_source=Github&utm_medium=Github_Repo_Content_Ad&utm_content=Developer&utm_campaign=Github_Android_Video_SDK&utm_term=DevRelOss">
15+
<img src="https://user-images.githubusercontent.com/24237865/138428440-b92e5fb7-89f8-41aa-96b1-71a5486c5849.png" align="right" width="12%"/>
16+
</a>
17+
18+
## 🛥 What is Stream?
1419

1520
Stream allows developers to rapidly deploy scalable feeds, chat messaging and video with an industry leading 99.999% uptime SLA guarantee.
1621

@@ -55,37 +60,73 @@ Here are some of the features we support:
5560
* Call recording
5661
* Broadcasting to HLS
5762

58-
## Roadmap
63+
## 🗺️ Roadmap
5964

6065
Video roadmap and changelog is available [here](https://github.com/GetStream/protocol/discussions/127).
6166

62-
### 0.2 milestone
67+
### 0.2.0 milestone
6368

64-
- [ ] bug: screensharing is broken. android doesn’t receive/render (not sure) the screenshare. video shows up as the gray avatar (Thierry)
65-
- [ ] bug: screenshare is not removed after it stops when a participant leaves the call (Thierry) (probably just dont update the state when the participant leaves)
66-
- [ ] Livestream tutorial
69+
- [ ] Local Video disconnects sometimes (ICE restarts issue for the publisher. we're waiting for the backend support)
6770
- [ ] Deeplink support for video call demo & dogfooding app (skip auth for the video demo, keep it for dogfooding)
6871
- [ ] Chat Integration
6972
- [ ] XML version of VideoRenderer
7073
- [ ] Call Analytics stateflow
7174
- [ ] Automatically handle pagination and sorting on > 6 participants
75+
- [ ] Make it easy to test ringing support
76+
- [ ] publish app on play store
77+
- [ ] report version number of SDK on all API calls
78+
- [ ] Bug: java.net.UnknownHostException: Unable to resolve host "hint.stream-io-video.com" isn't throw but instead logged as INFO
79+
- [ ] Bug: screensharing is broken. android doesn’t receive/render (not sure) the screenshare. video shows up as the gray avatar
7280
- [X] Reactions
81+
- [X] bug: screenshare is not removed after it stops when a participant leaves the call (Thierry) (probably just dont update the state when the participant leaves)
7382

74-
### 0.3 milestone
83+
### 0.3.0 milestone
7584

85+
- [ ] Setting to default to speakerphone or earpiece
86+
- [ ] Button to switch speakerphone/earpiece
87+
- [ ] Livestream tutorial (depends on RTMP support)
88+
- [ ] H264 workaround on Samsung 23 (see https://github.com/livekit/client-sdk-android/blob/main/livekit-android-sdk/src/main/java/io/livekit/android/webrtc/SimulcastVideoEncoderFactoryWrapper.kt#L34 and
89+
- https://github.com/react-native-webrtc/react-native-webrtc/issues/983#issuecomment-975624906)
90+
- [ ] Bluetooth reliability
7691
- [ ] Dynascale 2.0 (codecs, f resolution switches, resolution webrtc handling)
7792
- [ ] Test coverage
7893
- [ ] Testing on more devices
7994
- [ ] Speaking while muted stateflow
80-
- [ ] Cleanup the retry behaviour in the RtcSession (see the TODO)
81-
- [ ] Android SDK development.md cleanup
95+
- [X] Cleanup the retry behaviour in the RtcSession
96+
- [ ] Android SDK development.md cleanup (Daniel)
8297
- [X] SDK development guide for all teams
8398

84-
### 0.4 milestone
99+
### 0.4.0 milestone
85100

101+
- [ ] Pagination on query members & query channels
86102
- [ ] Analytics integration
87103
- [ ] Screensharing from mobile
88104
- [ ] Tap to focus
89105
- [ ] Camera controls
90106
- [ ] Audio & Video filters
91-
- [ ] Picture of the video stream at highest resolution
107+
- [ ] Picture of the video stream at highest resolution
108+
- [ ] Review foreground service vs backend for some things like screensharing etc
109+
110+
## 💼 We are hiring!
111+
112+
We've recently closed a [\$38 million Series B funding round](https://techcrunch.com/2021/03/04/stream-raises-38m-as-its-chat-and-activity-feed-apis-power-communications-for-1b-users/) and we keep actively growing.
113+
Our APIs are used by more than a billion end-users, and you'll have a chance to make a huge impact on the product within a team of the strongest engineers all over the world.
114+
Check out our current openings and apply via [Stream's website](https://getstream.io/team/#jobs).
115+
116+
## License
117+
118+
```
119+
Copyright (c) 2014-2023 Stream.io Inc. All rights reserved.
120+
121+
Licensed under the Stream License;
122+
you may not use this file except in compliance with the License.
123+
You may obtain a copy of the License at
124+
125+
https://github.com/GetStream/stream-video-android/blob/main/LICENSE
126+
127+
Unless required by applicable law or agreed to in writing, software
128+
distributed under the License is distributed on an "AS IS" BASIS,
129+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130+
See the License for the specific language governing permissions and
131+
limitations under the License.
132+
```

buildSrc/src/main/kotlin/io/getstream/video/android/Configuration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ object Configuration {
66
const val minSdk = 24
77
const val majorVersion = 0
88
const val minorVersion = 0
9-
const val patchVersion = 17
9+
const val patchVersion = 18
1010
const val versionName = "$majorVersion.$minorVersion.$patchVersion"
1111
const val versionCode = 1
1212
const val snapshotVersionName = "$majorVersion.$minorVersion.${patchVersion}-SNAPSHOT"

demo/src/main/kotlin/io/getstream/video/android/demo/ui/call/CallActivity.kt

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,19 @@ package io.getstream.video.android.demo.ui.call
1818

1919
import android.os.Bundle
2020
import androidx.activity.compose.setContent
21-
import androidx.activity.viewModels
2221
import androidx.compose.foundation.background
2322
import androidx.compose.ui.Modifier
2423
import androidx.lifecycle.lifecycleScope
2524
import io.getstream.video.android.common.AbstractCallActivity
26-
import io.getstream.video.android.common.viewmodel.CallViewModel
27-
import io.getstream.video.android.common.viewmodel.CallViewModelFactory
2825
import io.getstream.video.android.compose.theme.VideoTheme
29-
import io.getstream.video.android.compose.ui.components.call.CallContainer
26+
import io.getstream.video.android.compose.ui.components.call.activecall.CallContent
3027
import io.getstream.video.android.core.Call
3128
import io.getstream.video.android.core.StreamVideo
3229
import io.getstream.video.android.model.StreamCallId
3330
import kotlinx.coroutines.launch
3431

3532
class CallActivity : AbstractCallActivity() {
3633

37-
private val factory by lazy { CallViewModelFactory() }
38-
private val vm by viewModels<CallViewModel> { factory }
39-
4034
override fun onCreate(savedInstanceState: Bundle?) {
4135
super.onCreate(savedInstanceState)
4236

@@ -46,10 +40,9 @@ class CallActivity : AbstractCallActivity() {
4640

4741
setContent {
4842
VideoTheme {
49-
CallContainer(
43+
CallContent(
5044
modifier = Modifier.background(color = VideoTheme.colors.appBackground),
5145
call = call,
52-
callViewModel = vm,
5346
onBackPressed = { finish() },
5447
)
5548
}

development.md

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Typically for development you want to fail fast and loud. For production you wan
123123
### RTC offer/answer cycle
124124

125125
* sessionId is created locally as a random UUID
126-
* create the peer connections
126+
* create two peer connections (publisher and subscriber)
127127
* capture audio and video (if we're not doing so already, in many apps it should already be on for the preview screen)
128128
* execute the join request
129129
* add the audio/video tracks which triggers onNegotiationNeeded
@@ -207,18 +207,6 @@ With the second approach everything is easy to understand and customize.
207207
* Clicking accept or reject fires triggers the accept/reject API endpoints
208208
* Call members have an accepted_at, rejected_at field
209209

210-
Ringing state on a call has the following options
211-
212-
```kotlin
213-
sealed class RingingState() {
214-
object Incoming : RingingState()
215-
object Outgoing : RingingState()
216-
object Active : RingingState()
217-
object RejectedByAll : RingingState()
218-
object TimeoutNoAnswer : RingingState()
219-
}
220-
```
221-
222210
### Media Manager
223211

224212
The media manager should support capturing local video with or without joining a call

docusaurus/docs/Android/01-basics/01-introduction.mdx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ description: Introduction about Stream's video SDK
44
slug: /
55
---
66

7-
## Introduction
8-
97
Welcome to the Stream Video SDK - a comprehensive toolkit designed to help you swiftly implement features such as video calling, audio calling, audio rooms, and livestreaming within your app.
108
Our goal is to ensure an optimal developer experience that enables your application to go live within days.
119

docusaurus/docs/Android/01-basics/02-installation.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description: Install the SDK for video calling
77

88
All Stream Android libraries are available from MavenCentral, so you may not need to do an additional setup.
99

10-
Before you add Stream dependencies, update your repositories in the settings.gradle file to include these two repositories:
10+
Before you add Stream dependencies, update your repositories in the `settings.gradle` file to include these two repositories:
1111

1212
```gradle
1313
dependencyResolutionManagement {
@@ -19,7 +19,7 @@ dependencyResolutionManagement {
1919
}
2020
```
2121

22-
Or if you're using an older project setup, add these repositories in your project level build.gradle file:
22+
Or if you're using an older project setup, add these repositories in your project level `build.gradle` file:
2323

2424
```groovy
2525
allprojects {
@@ -37,7 +37,7 @@ Check the [Releases page](https://github.com/GetStream/stream-video-android/rele
3737
## Available Artifacts
3838

3939
### Core Client
40-
To add the low-level Video client library to your app, open your module's build.gradle script and add the following:
40+
To add the low-level Video client library to your app, open your module's `build.gradle` script and add the following:
4141

4242
```groovy
4343
dependencies {
@@ -58,7 +58,7 @@ Adding the Compose Video Components library as a dependency will automatically i
5858

5959
### Push Notifications
6060

61-
We ship multiple artifacts to easily integrate Stream Chat with third party push notification providers. See the Push Notification page for more details.
61+
We ship multiple artifacts to easily integrate Stream Chat with third party push notification providers. See the [Push Notification](../06-advanced/02-push-notifications/01-overview.mdx) page for more details.
6262

6363
## Snapshot Builds
6464

docusaurus/docs/Android/01-basics/03-quickstart.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ val client = StreamVideoBuilder(
1515
context = context,
1616
apiKey = apiKey,
1717
geo = GEO.GlobalEdgeNetwork,
18-
user,
19-
token,
18+
user = user,
19+
token = token,
2020
).build()
2121

2222
val call = client.call("default", "123")

0 commit comments

Comments
 (0)