initial commit

Signed-off-by: ale <ale@manalejandro.com>
Este commit está contenido en:
ale
2025-06-15 16:19:32 +02:00
commit e8a203a71d
Se han modificado 42 ficheros con 1968 adiciones y 0 borrados

Ver fichero

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/button_background" />
<stroke android:width="1dp" android:color="@color/button_border" />
</shape>

Ver fichero

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/primary_color" />
</shape>

Ver fichero

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#80000000" />
<corners android:radius="24dp" />
</shape>

Ver fichero

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/icon_color">
<path
android:fillColor="@android:color/white"
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z"/>
</vector>

Ver fichero

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/icon_color">
<path
android:fillColor="@android:color/white"
android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM8.5,8C9.33,8 10,8.67 10,9.5S9.33,11 8.5,11S7,10.33 7,9.5S7.67,8 8.5,8zM15.5,8c0.83,0 1.5,0.67 1.5,1.5S16.33,11 15.5,11S14,10.33 14,9.5S14.67,8 15.5,8zM12,17.5c-2.33,0 -4.31,-1.46 -5.11,-3.5h10.22C16.31,16.04 14.33,17.5 12,17.5z"/>
</vector>

Ver fichero

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="@color/icon_color">
<path
android:fillColor="@android:color/white"
android:pathData="M20,5L4,5c-1.1,0 -1.99,0.9 -1.99,2L2,17c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,7c0,-1.1 -0.9,-2 -2,-2zM20,9h-3.5v3.5h2.5c0.83,0 1.5,-0.67 1.5,-1.5L20,9zM20,17h-7v-7h7v7zM4,9h7v7L4,16L4,9zM4,7h16v1L4,8L4,7z"/>
</vector>

Ver fichero

@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path android:fillColor="#00000000"
android:pathData="M9,0L9,108L0,108L0,0L9,0Z"
android:strokeWidth="0"
android:strokeMiterLimit="4"
android:strokeLineCap="butt" />
</vector>

Ver fichero

@@ -0,0 +1,14 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<group android:scaleX="2.61"
android:scaleY="2.61"
android:translateX="22.68"
android:translateY="22.68">
<path
android:fillColor="#FFFFFF"
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z"/>
</group>
</vector>

Ver fichero

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/input_field_background" />
<corners android:radius="24dp" />
<stroke android:width="1dp" android:color="@color/input_border" />
</shape>

Ver fichero

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/message_background" />
<corners android:radius="18dp" />
<stroke android:width="1dp" android:color="@color/message_border" />
</shape>

Ver fichero

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/primary_color" />
<corners android:radius="18dp" />
</shape>

Ver fichero

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/system_background" />
<corners android:radius="12dp" />
</shape>

Ver fichero

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp" />
<stroke android:width="2dp" android:color="@color/white" />
</shape>

Ver fichero

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/background_color">
<!-- Video Views Container -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/video_background">
<!-- Remote Video View (Full Screen) -->
<org.webrtc.SurfaceViewRenderer
android:id="@+id/remote_video_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- Local Video View (Picture in Picture) -->
<org.webrtc.SurfaceViewRenderer
android:id="@+id/local_video_view"
android:layout_width="120dp"
android:layout_height="160dp"
android:layout_gravity="top|end"
android:layout_margin="16dp"
android:background="@drawable/video_border" />
<!-- Video Controls -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_marginBottom="16dp"
android:orientation="horizontal"
android:background="@drawable/control_background"
android:padding="8dp">
<Button
android:id="@+id/btn_toggle_video"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_margin="4dp"
android:background="@drawable/btn_round_background"
android:text="📹"
android:textSize="18sp" />
<Button
android:id="@+id/btn_toggle_audio"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_margin="4dp"
android:background="@drawable/btn_round_background"
android:text="🎤"
android:textSize="18sp" />
<Button
android:id="@+id/btn_switch_camera"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_margin="4dp"
android:background="@drawable/btn_round_background"
android:text="🔄"
android:textSize="18sp" />
</LinearLayout>
</FrameLayout>
<!-- Chat Section -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:orientation="vertical"
android:background="@color/chat_background">
<!-- Chat Messages -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_chat"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="8dp"
android:clipToPadding="false" />
<!-- Message Input -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp"
android:background="@color/input_background"
android:elevation="4dp">
<ImageButton
android:id="@+id/btn_emoji"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginEnd="8dp"
android:background="@drawable/btn_round_background"
android:src="@drawable/ic_emoji"
android:contentDescription="@string/emoji_button" />
<EditText
android:id="@+id/et_message"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:background="@drawable/message_input_background"
android:hint="@string/message_hint"
android:maxLines="3"
android:padding="12dp"
android:textSize="16sp" />
<Button
android:id="@+id/btn_send"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="8dp"
android:background="@drawable/btn_send_background"
android:text="➤"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

Ver fichero

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="24dp"
android:gravity="center"
android:background="@color/background_color">
<ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:src="@drawable/ic_chat"
android:layout_marginBottom="32dp"
android:contentDescription="@string/app_name" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_title"
android:textSize="28sp"
android:textStyle="bold"
android:textColor="@color/primary_text_color"
android:layout_marginBottom="8dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome_subtitle"
android:textSize="16sp"
android:textColor="@color/secondary_text_color"
android:layout_marginBottom="32dp"
android:gravity="center" />
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:hint="@string/nickname_hint"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_nickname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:maxLines="1"
android:imeOptions="actionDone" />
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/btn_join_chat"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="@string/join_chat"
android:textSize="16sp"
android:textStyle="bold"
style="@style/Widget.MaterialComponents.Button" />
</LinearLayout>

Ver fichero

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp"
android:gravity="start">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="48dp"
android:orientation="vertical"
android:background="@drawable/other_message_background"
android:padding="12dp">
<TextView
android:id="@+id/tv_nickname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/primary_color"
android:textSize="14sp"
android:textStyle="bold"
android:layout_marginBottom="2dp" />
<com.vanniktech.emoji.EmojiTextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/primary_text_color"
android:textSize="16sp"
android:lineSpacingExtra="2dp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="4dp"
android:textColor="@color/secondary_text_color"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>

Ver fichero

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp"
android:gravity="end">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="48dp"
android:orientation="vertical"
android:background="@drawable/own_message_background"
android:padding="12dp">
<com.vanniktech.emoji.EmojiTextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="16sp"
android:lineSpacingExtra="2dp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="4dp"
android:textColor="@color/message_time_color"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>

Ver fichero

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp"
android:gravity="center">
<TextView
android:id="@+id/tv_system_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/system_message_background"
android:textColor="@color/system_text_color"
android:textSize="14sp"
android:textStyle="italic"
android:padding="8dp" />
</LinearLayout>

Ver fichero

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Ver fichero

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Ver fichero

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary_color">#2196F3</color>
<color name="primary_color_dark">#1976D2</color>
<color name="accent_color">#FF4081</color>
<color name="background_color">#FAFAFA</color>
<color name="chat_background">#FFFFFF</color>
<color name="video_background">#000000</color>
<color name="input_background">#FFFFFF</color>
<color name="primary_text_color">#212121</color>
<color name="secondary_text_color">#757575</color>
<color name="system_text_color">#9E9E9E</color>
<color name="message_background">#F5F5F5</color>
<color name="message_border">#E0E0E0</color>
<color name="message_time_color">#B0BEC5</color>
<color name="system_background">#E8F5E8</color>
<color name="input_field_background">#FFFFFF</color>
<color name="input_border">#E0E0E0</color>
<color name="button_background">#FFFFFF</color>
<color name="button_border">#E0E0E0</color>
<color name="button_enabled">#4CAF50</color>
<color name="button_disabled">#F44336</color>
<color name="icon_color">#616161</color>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
</resources>

Ver fichero

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">ChatRTC</string>
<!-- Main Activity -->
<string name="welcome_title">Welcome to ChatRTC</string>
<string name="welcome_subtitle">Connect with others using audio and video chat</string>
<string name="nickname_hint">Enter your nickname</string>
<string name="join_chat">Join Chat</string>
<!-- Chat Activity -->
<string name="message_hint">Type your message...</string>
<string name="emoji_button">Emoji</string>
<!-- Permissions -->
<string name="permission_camera">Camera permission is required for video chat</string>
<string name="permission_microphone">Microphone permission is required for audio chat</string>
<!-- Errors -->
<string name="error_nickname_empty">Please enter your nickname</string>
<string name="error_connection">Connection failed. Please try again.</string>
<string name="error_webrtc">WebRTC error occurred</string>
</resources>

Ver fichero

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme -->
<style name="Theme.ChatRTC" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color -->
<item name="colorPrimary">@color/primary_color</item>
<item name="colorPrimaryVariant">@color/primary_color_dark</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color -->
<item name="colorSecondary">@color/accent_color</item>
<item name="colorSecondaryVariant">@color/accent_color</item>
<item name="colorOnSecondary">@color/white</item>
<!-- Status bar color -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here -->
<item name="android:windowBackground">@color/background_color</item>
</style>
</resources>

Ver fichero

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="device_prefs.xml"/>
</full-backup-content>

Ver fichero

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
<exclude domain="root" />
<exclude domain="device_transfer" />
</cloud-backup>
<device-transfer>
<exclude domain="root" />
</device-transfer>
</data-extraction-rules>

Ver fichero

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
<domain includeSubdomains="true">10.0.2.2</domain>
<domain includeSubdomains="true">192.168.1.1</domain>
</domain-config>
</network-security-config>