Skip to content

Commit 281a6ef

Browse files
committed
Merge branch 'develop'
2 parents 14d3085 + 00b4ce4 commit 281a6ef

File tree

76 files changed

+3190
-1082
lines changed

Some content is hidden

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

76 files changed

+3190
-1082
lines changed

.github/CODEOWNERS

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
# Common
66

77
# Core
8-
stream-video-android @GetStream/android-developers-core
9-
stream-video-android-pushprovider-firebase @GetStream/android-developers-core
8+
stream-video-android @GetStream/android-developers
9+
stream-video-android-pushprovider-firebase @GetStream/android-developers
1010

1111
# UI
12-
app @GetStream/android-developers-ui
13-
dogfooding @GetStream/android-developers-ui
14-
stream-video-android-compose @GetStream/android-developers-ui
12+
app @GetStream/android-developers
13+
dogfooding @GetStream/android-developers
14+
stream-video-android-compose @GetStream/android-developers
1515

1616
### Top level files and directories
1717
# Git and GitHub
@@ -40,4 +40,4 @@ DokkaRoot.md @GetStream/android-developers
4040
docusaurus @GetStream/android-developers
4141

4242
# Misc
43-
.idea @GetStream/android-developers
43+
.idea @GetStream/android-developers

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ Video roadmap and changelog is available [here](https://github.com/GetStream/pro
139139

140140
### 0.5.0 milestone
141141

142+
- [X] Development token to support a development environment
142143
- [ ] 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
143144
- https://github.com/react-native-webrtc/react-native-webrtc/issues/983#issuecomment-975624906)
144145
- [ ] Test coverage

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ object Configuration {
66
const val minSdk = 24
77
const val majorVersion = 0
88
const val minorVersion = 4
9-
const val patchVersion = 0
9+
const val patchVersion = 1
1010
const val versionName = "$majorVersion.$minorVersion.$patchVersion"
11-
const val versionCode = 10
11+
const val versionCode = 11
1212
const val snapshotVersionName = "$majorVersion.$minorVersion.${patchVersion + 1}-SNAPSHOT"
1313
const val artifactGroup = "io.getstream"
14-
const val streamVideoCallGooglePlayVersion = "1.0.1"
14+
const val streamVideoCallGooglePlayVersion = "1.0.2"
1515
}

docusaurus/docs/Android/02-tutorials/01-video-calling.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ If you're new to android, note that there are 2 `build.gradle` files, you want t
3131
```kotlin
3232
dependencies {
3333
// Stream Video Compose SDK
34-
implementation("io.getstream:stream-video-android-compose:0.4.0")
34+
implementation("io.getstream:stream-video-android-compose:0.4.1")
3535

3636
// Optionally add Jetpack Compose if Android studio didn't automatically include them
3737
implementation(platform("androidx.compose:compose-bom:2023.08.00"))

docusaurus/docs/Android/02-tutorials/02-audio-room.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ If you're new to android, note that there are 2 `build.gradle` files, you want t
3535
```groovy
3636
dependencies {
3737
// Stream Video Compose SDK
38-
implementation("io.getstream:stream-video-android-compose:0.4.0")
38+
implementation("io.getstream:stream-video-android-compose:0.4.1")
3939
4040
// Jetpack Compose (optional/ android studio typically adds them when you create a new project)
4141
implementation(platform("androidx.compose:compose-bom:2023.08.00"))

docusaurus/docs/Android/02-tutorials/03-livestream.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ If you're new to android, note that there are 2 `build.gradle` files, you want t
3535
```kotlin
3636
dependencies {
3737
// Stream Video Compose SDK
38-
implementation("io.getstream:stream-video-android-compose:0.4.0")
38+
implementation("io.getstream:stream-video-android-compose:0.4.1")
3939

4040
// Jetpack Compose (optional/ android studio typically adds them when you create a new project)
4141
implementation(platform("androidx.compose:compose-bom:2023.08.00"))

docusaurus/docs/Android/04-ui-components/05-participants/02-participants-grid.mdx

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,47 @@
1-
# ParticipantsGrid
1+
# ParticipantsLayout
22

3-
The `ParticipantsGrid` component is one of our most versatile and complex UI components, designed to render a list of participants in a call. It handles different UI layouts based on the number of participants and different screen orientations. Additionally, it can also render screen sharing content when there is an active session.
3+
The `ParticipantsLayout` component is one of our most versatile and complex UI components, designed to render a list of participants in a call. It handles different UI layouts based on the number of participants and different screen orientations. Additionally, it can also render screen sharing content when there is an active session.
44

55
Before jumping into how to use the component and how to customize it, let's review what some of these features mean.
66

7-
What you can do with the `ParticipantsGrid` are:
7+
What you can do with the `ParticipantsLayout` are:
88

9-
- Displays a grid list of the remote/local participants.
10-
- Supports landscape configuration.
11-
- Renders [Screensharing](../04-call/05-screen-share-content.mdx).
9+
- Displays a list of the remote/local participants.
10+
- There are two available layouts, Grid and [Spotlight](04-participants-spotlight.mdx)
11+
- There is also a dynamic option where the layout will switch automatically based on any pinned participants.
12+
- All the layout variants are supported in portrait and in landscape mode
13+
- Renders [Screensharing](../04-call/05-screen-share-content.mdx) on demand, regardless of selected layout.
1214

1315
### Flexible Layout
1416

15-
The `ParticipantsGrid` changes the UI layout based on the number of participants. In calls with fewer than four people, the local participant video is rendered in a floating item, using the [FloatingParticipantVideo](03-floating-participant-video.mdx). In calls with four or more people, it's rendered with other participants in a grid.
17+
The `ParticipantsLayout` changes the UI layout based on the number of participants. In calls with fewer than four people, the local participant video is rendered in a floating item, using the [FloatingParticipantVideo](03-floating-participant-video.mdx). In calls with six or more people, it's rendered with other participants in a grid.
1618

1719
Additionally, the participants are rendered in the following way:
1820

19-
* **One participant**: Rendered as the only single item in the "grid", taking up the full component space.
21+
* **One participant**: Rendered as the only single item in the layout, taking up the full component space.
2022
* **Two participants** (1 remote + local): The remote participant is rendered within the full component space while the local participant is a floating item.
21-
* **Three participants** (2 remote + local): Remote participants are in a vertical split-screen, while the local participant is a floating item.
22-
* **Four or more participants**: (4 or more remote): Participants are rendered as a grid of items, in a paginated way. Up to 6 participants per page, with the sorted participant.
23+
* **Three to four participants** (2-3 remote + local): Remote participants are in a vertical split-screen, while the local participant is a floating item.
24+
* **Five or more** (4 remote + local): Participants are rendered as a grid of items, in a paginated way. Up to 6 participants per page, with the sorted participant.
2325

2426
Sorted participants gives you the list of participants sorted by:
25-
2627
* anyone who is pinned
27-
* dominant speaker
2828
* if you are screensharing
29-
* last speaking at
29+
30+
If the participants are not visible on the screen they are also sorted by:
31+
* is dominant speaker
32+
* has video enabled
33+
* has audio enabled
3034
* all other video participants by when they joined
31-
* audio only participants by when they joined
3235

3336
### Orientation
3437

3538
The component handles both Landscape and Portrait orientations by rendering different UI. In Portrait mode, the video layout is optimized for standard mobile device rendering, while the landscape mode offers more screen real estate to render video by adding a transparent app bar and pushing the call controls to the side. This is helpful when you need to pay attention to details of the video content of other participants.
3639

3740
Additionally, both of these orientations work for screen sharing and adjust the UI accordingly.
3841

39-
| Portrait ParticipantsGrid | Landscape ParticipantsGrid |
42+
| Portrait ParticipantsLayout | Landscape ParticipantsLayout |
4043
| ------- | ------------------------------------------------------------ |
41-
| ![Portrait ParticipantsGrid](../../assets/compose_single_participant.png) | ![Landscape ParticipantsGrid](../../assets/compose_call_landscape.png) |
44+
| ![Portrait ParticipantsLayout](../../assets/compose_single_participant.png) | ![Landscape ParticipantsLayout](../../assets/compose_call_landscape.png) |
4245

4346
### Screen Sharing
4447

@@ -50,19 +53,19 @@ Users can then focus on the shared content more or choose to enter the full scre
5053
| ------- | ------------------------------------------------------------ |
5154
| ![Portrait Screensharing](../../assets/compose_screensharing.png) | ![Landscape Screensharing](../../assets/compose_screensharing_landscape.png) |
5255

53-
Now that you've learned a lot about the `ParticipantsGrid` internal works, let's see how to use the component to add it to your UI.
56+
Now that you've learned a lot about the `ParticipantsLayout` internal works, let's see how to use the component to add it to your UI.
5457

5558
## Usage
5659

5760
To use the component in your UI, once you have the required state, you can render `CallParticipants` like so:
5861

5962
```kotlin
6063
@Composable
61-
public fun MyParticipantsGridScreen() {
64+
public fun MyParticipantsLayoutScreen() {
6265
Scaffold(
6366
topBar = { /* Custom top bar */ },
6467
) { padding ->
65-
ParticipantsGrid(
68+
ParticipantsLayout(
6669
modifier = Modifier.fillMaxSize(),
6770
call = call
6871
)
@@ -107,7 +110,7 @@ In terms of UI customization, you can very easily customize each participant vid
107110

108111
```kotlin
109112
@Composable
110-
public fun ParticipantsGrid(
113+
public fun ParticipantsLayout(
111114
modifier: Modifier = Modifier.fillMaxSize(),
112115
call = call,
113116
style = RegularVideoRendererStyle(
@@ -125,7 +128,7 @@ With these options, you have more than enough space to customize how the compone
125128
You can also custom the entire video renderer by implementing your own video renderer:
126129

127130
```kotlin
128-
ParticipantsGrid(
131+
ParticipantsLayout(
129132
call = call,
130133
modifier = Modifier.fillMaxSize(),
131134
videoRenderer = { modifier, call, participant, style ->
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# ParticipantsSpotlight
2+
3+
The `ParticipantsSpotlight` is a Composable component that allows you to highlight one participant and this one participant takes much of the screen, while the rest are rendered
4+
either as a horizontal or vertical list depending on orientation.
5+
6+
Let's see how to use the `ParticipantsSpotlight`.
7+
8+
## Usage
9+
10+
To use the `ParticipantsSpotlight` component in your app you can use it direcyly as a component or you can configure the [ParticipantsLayout](02-participants-grid.mdx) to display the spotlight.
11+
12+
### Use it directly
13+
```kotlin
14+
ParticipantsSpotlight(call = call)
15+
```
16+
The only mandatory parameter is `call` which represents the call for which the participants are being displayed.
17+
18+
### Use it via [ParticipantsLayout](02-participants-grid.mdx)
19+
20+
If you are using the `ParticipantsLayout` you can use an enum value `LayoutType` with one of three options.
21+
22+
Those are:
23+
```kotlin
24+
//Automatically choose between Grid and Spotlight based on pinned participants and dominant speaker.
25+
DYNAMIC
26+
27+
//Force a spotlight view, showing the dominant speaker or the first speaker in the list.
28+
SPOTLIGHT
29+
30+
//Always show a grid layout, regardless of pinned participants.
31+
GRID
32+
```
33+
34+
Here is how it looks in action:
35+
```kotlin
36+
ParticipantsLayout(
37+
layoutType = LayoutType.SPOTLIGHT,
38+
call = call
39+
)
40+
```
41+
42+
The [ParticipantsLayout](02-participants-grid.mdx) internally displays the `ParticipantSpotlight` in two cases.
43+
1. You have set the `layoutType` to `LayoutType.SPOTLIGHT` in which case a participant is always spotlighted. The participant shown in the spotlight is chosen based on the following order:
44+
1. is pinned
45+
2. is dominantSpeaker
46+
3. is first in the participants list
47+
2. You have set the `LayoutType` to `LayoutType.DYNAMIC` in which case if there is a "pinned" participant, the spotlight view will be chosen in favor of grid.
48+
49+
*Note*: `ParticipantLayout` will always prioritize screensharing regardless of the `LayoutType` if there is a [screensharing session](../04-call/05-screen-share-content.mdx).s
50+
51+
52+
Using this component, you'll likely see something similar to the following UI:
53+
54+
![Spotlight portrait](../../assets/spotlight_portrait.png)
55+
56+
![Spotlight landscape](../../assets/spotlight_landscape.png)
57+
58+
59+
Let's see how to customize this component.
60+
61+
## Customization
62+
63+
This is a very simple component so it doesn't have replaceable slots, but it still offers ways to customize its appearance.
64+
65+
- `modifier`: Modifier for styling.
66+
- `isZoomable`: Decide if this spotlight video renderer is zoomable or not.
67+
- `style`: Defined properties for styling a single video call track.
68+
- `videoRenderer`: A single video renderer renders each individual participant.
69+
70+
If you're looking for guides on how to override and customize this UI, we have various [UI Cookbook](../../05-ui-cookbook/01-overview.mdx) recipes for you and we cover a portion of customization within the [Video Android SDK Tutorial](../../02-tutorials/01-video-calling.mdx).

docusaurus/docs/Android/06-advanced/07-chat-with-video.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Let the project sync. It should have all the dependencies required for you to fi
3131
```groovy
3232
dependencies {
3333
// Stream Video Compose SDK
34-
implementation("io.getstream:stream-video-android-compose:0.4.0")
34+
implementation("io.getstream:stream-video-android-compose:0.4.1")
3535
3636
// Stream Chat
3737
implementation(libs.stream.chat.compose)
189 KB
Loading

0 commit comments

Comments
 (0)