Skip to content

Commit a455dcb

Browse files
committed
Initial commit
1 parent f3aea4a commit a455dcb

39 files changed

+1295
-0
lines changed

.gitignore

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Built application files
2+
*.apk
3+
*.ap_
4+
5+
# Files for the ART/Dalvik VM
6+
*.dex
7+
8+
# Java class files
9+
*.class
10+
11+
# Generated files
12+
bin/
13+
gen/
14+
out/
15+
16+
# Gradle files
17+
/.idea
18+
!.idea/codeInsightSettings.xml
19+
.gradle/
20+
build/
21+
22+
# Local configuration file (sdk path, etc)
23+
local.properties
24+
secrets.properties
25+
26+
# Proguard folder generated by Eclipse
27+
proguard/
28+
29+
# Log Files
30+
*.log
31+
32+
# Android Studio Navigation editor temp files
33+
.navigation/
34+
35+
# Android Studio captures folder
36+
captures/
37+
38+
# Intellij
39+
*.iml
40+
.idea/workspace.xml
41+
.idea/tasks.xml
42+
.idea/gradle.xml
43+
.idea/dictionaries
44+
.idea/libraries
45+
app/.idea/
46+
47+
# Mac
48+
*.DS_Store
49+
50+
# Keystore files
51+
*.jks
52+
53+
# External native build folder generated in Android Studio 2.2 and later
54+
.externalNativeBuild
55+
56+
# Google Services (e.g. APIs or Firebase)
57+
google-services.json
58+
59+
# Freeline
60+
freeline.py
61+
freeline/
62+
freeline_project_description.json
63+
64+
# Eclipse
65+
.project
66+
.settings
67+
.classpath
68+
69+
# Kotlin
70+
.kotlin

CODE_OF_CONDUCT.md

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, religion, or sexual identity
10+
and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the
26+
overall community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or
31+
advances of any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email
35+
address, without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official e-mail address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the community leaders responsible for enforcement at
63+
GetStream.
64+
All complaints will be reviewed and investigated promptly and fairly.
65+
66+
All community leaders are obligated to respect the privacy and security of the
67+
reporter of any incident.
68+
69+
## Enforcement Guidelines
70+
71+
Community leaders will follow these Community Impact Guidelines in determining
72+
the consequences for any action they deem in violation of this Code of Conduct:
73+
74+
### 1. Correction
75+
76+
**Community Impact**: Use of inappropriate language or other behavior deemed
77+
unprofessional or unwelcome in the community.
78+
79+
**Consequence**: A private, written warning from community leaders, providing
80+
clarity around the nature of the violation and an explanation of why the
81+
behavior was inappropriate. A public apology may be requested.
82+
83+
### 2. Warning
84+
85+
**Community Impact**: A violation through a single incident or series
86+
of actions.
87+
88+
**Consequence**: A warning with consequences for continued behavior. No
89+
interaction with the people involved, including unsolicited interaction with
90+
those enforcing the Code of Conduct, for a specified period of time. This
91+
includes avoiding interactions in community spaces as well as external channels
92+
like social media. Violating these terms may lead to a temporary or
93+
permanent ban.
94+
95+
### 3. Temporary Ban
96+
97+
**Community Impact**: A serious violation of community standards, including
98+
sustained inappropriate behavior.
99+
100+
**Consequence**: A temporary ban from any sort of interaction or public
101+
communication with the community for a specified period of time. No public or
102+
private interaction with the people involved, including unsolicited interaction
103+
with those enforcing the Code of Conduct, is allowed during this period.
104+
Violating these terms may lead to a permanent ban.
105+
106+
### 4. Permanent Ban
107+
108+
**Community Impact**: Demonstrating a pattern of violation of community
109+
standards, including sustained inappropriate behavior, harassment of an
110+
individual, or aggression toward or disparagement of classes of individuals.
111+
112+
**Consequence**: A permanent ban from any sort of public interaction within
113+
the community.
114+
115+
## Attribution
116+
117+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118+
version 2.0, available at
119+
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120+
121+
Community Impact Guidelines were inspired by [Mozilla's code of conduct
122+
enforcement ladder](https://github.com/mozilla/diversity).
123+
124+
[homepage]: https://www.contributor-covenant.org
125+
126+
For answers to common questions about this code of conduct, see the FAQ at
127+
https://www.contributor-covenant.org/faq. Translations are available at
128+
https://www.contributor-covenant.org/translations.

CONTRIBUTING.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
## How to contribute
2+
We'd love to accept your patches and contributions to this project. There are just a few small guidelines you need to follow.
3+
4+
## Preparing a pull request for review
5+
Ensure your change is properly formatted by running:
6+
7+
```gradle
8+
./gradlew spotlessApply
9+
```
10+
11+
Please correct any failures before requesting a review.
12+
13+
## Code reviews
14+
All submissions, including submissions by project members, require review. We use GitHub pull requests for this purpose. Consult [GitHub Help](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) for more information on using pull requests.

README.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<h1 align="center">Android XR Video</h1></br>
2+
3+
<p align="center">
4+
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"/></a>
5+
<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>
6+
<a href="https://github.com/GetStream/android-xr-video/actions/workflows/android.yml"><img alt="Build Status" src="https://github.com/GetStream/android-xr-video/actions/workflows/android.yml/badge.svg"/></a>
7+
<a href="https://getstream.io?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss"><img src="https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/HayesGordon/e7f3c4587859c17f3e593fd3ff5b13f4/raw/11d9d9385c9f34374ede25f6471dc743b977a914/badge.json" alt="Stream Feeds"></a>
8+
</p>
9+
10+
This is a real-time video call app that demonstrates [Android XR](https://www.android.com/xr/) built with Jetpack Compose and [Stream Video SDK for Compose](https://getstream.io/video/docs/android?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss).
11+
12+
The primary objective of this repository is to showcase the following:
13+
14+
- Demonstrates Android XR features with [Android XR SDK](https://developer.android.com/develop/xr).
15+
- Complete implementation of UI components using Jetpack Compose.
16+
- Development of a real-time video call application with [Stream Video Android SDK](https://getstream.io/video/sdk/android/tutorial/video-calling/?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss).
17+
- Illustration of multiple participants connecting from various platforms, such as web and Android.
18+
19+
## 📷 Previews
20+
21+
![previews](previews/gif0.gif)
22+
23+
## :bulb: Additional Repositories
24+
25+
If you're interested in exploring more repositories that utilize Jetpack Compose and Stream SDK, take a look at the following repositories:
26+
27+
- [ChatGPT Android](https://github.com/skydoves/chatgpt-android): 📱 ChatGPT Android demonstrates OpenAI's ChatGPT on Android with Stream Chat SDK for Compose.
28+
- [Gemini Android](https://github.com/skydoves/gemini-android): ✨ Gemini Android demonstrates Google's Generative AI on Android with Stream Chat SDK for Compose.
29+
- [ai-chat-android](https://github.com/GetStream/ai-chat-android): 💬 AI Chat Bot demo app showcasing the integration of Gemini SDK with Firebase Realtime Database for real-time chat functionality.
30+
- [Whats App Clone Compose](https://github.com/getStream/whatsApp-clone-compose): 📱 WhatsApp clone project demonstrates modern Android development built with Jetpack Compose and Stream Chat SDK for Compose.
31+
- [Slack Clone Android](https://github.com/GetStream/stream-slack-clone-android): 📱 A chat demo app built with Jetpack Compose and Stream Chat SDK following clean architecture principles.
32+
33+
## 🛥 Stream Video SDK
34+
35+
**Android XR Videoe** is built with __[Stream Video SDK for Compose](https://getstream.io/video/docs/android?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss)__ to implement real-time video room features.
36+
If you’re interested in adding powerful In-App Video Calling, Audio Room, Livestream features to your app, check out the __[Android Video Calling Tutorial](https://getstream.io/video/docs/android/tutorials/video-calling?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss)__!
37+
38+
- [Stream Video SDK for Android on GitHub](https://github.com/getStream/stream-video-android)
39+
- [Video Call Tutorials](https://getstream.io/video/docs/android/tutorials/video-calling?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss)
40+
- [Audio Room Tutorials](https://getstream.io/video/docs/android/tutorials/audio-room?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss)
41+
- [Livestream Tutorials](https://getstream.io/video/docs/android/tutorials/livestream/?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2024_Jaewoong_Android_XR&utm_term=DevRelOss)
42+
43+
## 🤝 Contribution
44+
45+
Most of the features are not completed except the chat feature, so anyone can contribute and improve this project following the [Contributing Guideline](https://github.com/GetStream/android-xr-video/blob/main/CONTRIBUTING.md).
46+
47+
## Find this repository useful? 💙
48+
Support it by joining __[stargazers](https://github.com/GetStream/android-xr-video/stargazers)__ for this repository. :star: <br>
49+
Also, follow __[maintainers](https://github.com/skydoves)__ on GitHub for our next creations! 🤩
50+
51+
# License
52+
```xml
53+
Copyright 2024 Stream.IO, Inc. All Rights Reserved.
54+
55+
Licensed under the Apache License, Version 2.0 (the "License");
56+
you may not use this file except in compliance with the License.
57+
You may obtain a copy of the License at
58+
59+
http://www.apache.org/licenses/LICENSE-2.0
60+
61+
Unless required by applicable law or agreed to in writing, software
62+
distributed under the License is distributed on an "AS IS" BASIS,
63+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
64+
See the License for the specific language governing permissions and
65+
limitations under the License.
66+
```

app/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

app/build.gradle.kts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
plugins {
2+
alias(libs.plugins.android.application)
3+
alias(libs.plugins.kotlin.android)
4+
alias(libs.plugins.kotlin.compose)
5+
}
6+
7+
android {
8+
namespace = "io.getstream.android.xr.video"
9+
compileSdk = 35
10+
11+
defaultConfig {
12+
applicationId = "io.getstream.android.xr.video"
13+
minSdk = 31
14+
targetSdk = 35
15+
versionCode = 1
16+
versionName = "1.0"
17+
}
18+
19+
compileOptions {
20+
sourceCompatibility = JavaVersion.VERSION_11
21+
targetCompatibility = JavaVersion.VERSION_11
22+
}
23+
24+
kotlinOptions {
25+
jvmTarget = "11"
26+
}
27+
28+
buildFeatures {
29+
compose = true
30+
}
31+
}
32+
33+
dependencies {
34+
// androidx
35+
implementation(libs.androidx.core.ktx)
36+
implementation(libs.androidx.lifecycle.runtime.ktx)
37+
implementation(libs.androidx.lifecycle.runtime.compose)
38+
implementation(libs.androidx.lifecycle.viewmodel.compose)
39+
implementation(libs.androidx.activity.compose)
40+
implementation(libs.androidx.runtime)
41+
42+
// compose
43+
implementation(platform(libs.androidx.compose.bom))
44+
implementation(libs.androidx.ui)
45+
implementation(libs.androidx.ui.graphics)
46+
implementation(libs.androidx.ui.tooling.preview)
47+
implementation(libs.androidx.material3)
48+
implementation(libs.androidx.compose)
49+
implementation(libs.runtime)
50+
51+
// xr
52+
implementation(libs.androidx.scenecore)
53+
54+
// stream video sdk
55+
implementation(libs.stream.video.android.ui.compose)
56+
}

app/src/main/AndroidManifest.xml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools">
4+
5+
<uses-permission android:name="android.permission.INTERNET" />
6+
7+
<application
8+
android:name=".XRApp"
9+
android:allowBackup="true"
10+
android:dataExtractionRules="@xml/data_extraction_rules"
11+
android:fullBackupContent="@xml/backup_rules"
12+
android:icon="@mipmap/ic_launcher"
13+
android:label="@string/app_name"
14+
android:roundIcon="@mipmap/ic_launcher_round"
15+
android:supportsRtl="true"
16+
android:theme="@style/Theme.Androidxrvideo"
17+
tools:targetApi="31">
18+
<activity
19+
android:name=".MainActivity"
20+
android:exported="true"
21+
android:theme="@style/Theme.Androidxrvideo">
22+
<intent-filter>
23+
<action android:name="android.intent.action.MAIN" />
24+
25+
<category android:name="android.intent.category.LAUNCHER" />
26+
</intent-filter>
27+
</activity>
28+
</application>
29+
30+
</manifest>

0 commit comments

Comments
 (0)