Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: update android-core local user section #408

Merged
merged 2 commits into from
Dec 19, 2024
Merged
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
165 changes: 137 additions & 28 deletions docs/android-core/local-user/events.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@ You can subscribe to various events on the local user by implementing `DyteSelfE
Triggered when the user starts/stops the video using `enableVideo()` or
`disableVideo()`.

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onVideoUpdate(videoEnabled: Boolean) {
if (videoEnabled) {
override fun onVideoUpdate(isEnabled: Boolean) {
if (isEnabled) {
// video is enabled, and other participants in room can see local user
} else {
// video is disabled, and other participants in room can not see local user.
Expand All @@ -31,15 +34,38 @@ meeting.addSelfEventsListener(object : DyteSelfEventsListener {
})
```

</TabItem>

<TabItem value="java" label="Java" default>

```java
meeting.addSelfEventsListener(new DyteSelfEventsListener() {
@Override
public void onVideoUpdate(boolean isEnabled) {
if (isEnabled) {
// video is enabled, and other participants in room can see local user
} else {
// video is disabled, and other participants in room can not see local user.
}
}
});
```

</TabItem>
</Tabs>

### Audio update

Triggered when the user starts/stops the audio using `enableAudio()` or
`disableAudio()`.

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onAudioUpdate(audioEnabled: Boolean) {
if (audioEnabled) {
override fun onAudioUpdate(isEnabled: Boolean) {
if (isEnabled) {
// audio is enabled, and other participants in room can hear local user
} else {
// audio is disabled, and other participants in room can not hear local user.
Expand All @@ -48,89 +74,172 @@ meeting.addSelfEventsListener(object : DyteSelfEventsListener {
})
```

### Proximity changed

Triggered whenever there is a change in proximity, indicating if the device is near an earpiece, which subsequently causes the display to turn on or off.
</TabItem>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onProximityChanged(isNear: Boolean) {
// if `isNear` is true, display should be turned off, as user might be speaking through earpiece
// if false, display should be turned on, as user might be looking at display and listening through speaker/earphones.
<TabItem value="java" label="Java" default>

```java
meeting.addSelfEventsListener(new DyteSelfEventsListener() {
override fun onAudioUpdate(boolean isEnabled) {
if (isEnabled) {
// audio is enabled, and other participants in room can hear local user
} else {
// audio is disabled, and other participants in room can not hear local user.
}
}
})
});
```


</TabItem>
</Tabs>

### Waitlist status

For meetings whose waiting room is enabled:

To get status of localUser in waiting room we can use

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
val waitListStatus = meeting.localUser.waitListStatus
```

</TabItem>

<TabItem value="java" label="Java" default>

```java
WaitListStatus waitListStatus = meeting.localUser.getWaitListStatus();
```

</TabItem>
</Tabs>


You can listen to those changes in `onWaitListStatusUpdate()` callbacks

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onWaitListStatusUpdate(waitListStatus: WaitListStatus) {
// handle waitlist status here
}
});
})
```

### Process message within a room
</TabItem>

Manage messages among participants within a room.
<TabItem value="java" label="Java" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onRoomMessage(type: String, payload: Map<String, *>) {
// handle the message here
```java
meeting.addSelfEventsListener(new DyteSelfEventsListener() {
@Override
public void onWaitListStatusUpdate(WaitListStatus waitListStatus) {
// handle waitlist status here
}
});
```

</TabItem>
</Tabs>

### Screenshare callbacks for local user

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onScreenShareStartFailed(reason: String) {
// screenshare failed to start
}

override fun onScreenShareStarted() {
// screenshare started presenting in the meeting
override fun onScreenShareUpdate(isEnabled: Boolean) {
}
})
```

</TabItem>

<TabItem value="java" label="Java" default>

override fun onScreenShareStopped() {
// screenshared stopped by the local user
```java
meeting.addSelfEventsListener(new DyteSelfEventsListener() {
@Override
public void onScreenShareStartFailed(@NonNull String reason) {
}

@Override
public void onScreenShareUpdate(boolean isEnabled) {
}
});
```

</TabItem>
</Tabs>

### Device permission callbacks once local user is joined in the meeting

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onMeetingRoomJoinedWithoutCameraPermission() {
// local user joined without camera permission
}

override fun onMeetingRoomJoinedWithoutMicPermission() {
// local user joined without microphone permission
}
})
```

</TabItem>

<TabItem value="java" label="Java" default>

```kotlin
meeting.addSelfEventsListener(new DyteSelfEventsListener() {
@Override
public void onMeetingRoomJoinedWithoutCameraPermission() {
}

@Override
public void onMeetingRoomJoinedWithoutMicPermission() {
}
});
```

</TabItem>
</Tabs>

### When local user is kicked out from the meeting by a remote user

<Tabs groupId="android-core-local-user">
<TabItem value="kotlin" label="Kotlin" default>

```kotlin
meeting.addSelfEventsListener(object : DyteSelfEventsListener {
override fun onRemovedFromMeeting() {
// removed from meeting
}
}
});
```

</TabItem>

<TabItem value="java" label="Java" default>

```java
meeting.addSelfEventsListener(new DyteSelfEventsListener() {
@Override
public void onRemovedFromMeeting() {
}
})
```

</TabItem>
</Tabs>
Loading
Loading