Initial commit: HorrorTV Android TV App for Chromecast 4K

Features:
- Horror-themed categories (Scream, Halloween, Conjuring, etc.)
- ExoPlayer native video playback from streamimdb.me
- D-pad navigation with visible focus indicators (8dp border + shadow)
- Custom app icon (Scream mask)
- VideoExtractor for HTML parsing and URL resolution
- FocusRequester crash fixes
- HLS streaming support

Built with:
- Kotlin + Jetpack Compose
- ExoPlayer 1.4.0
- Hilt DI
- Coil image loading
- OMDb API integration

Tested on Chromecast 4K with working video playback.
This commit is contained in:
2026-04-26 21:58:59 -03:00
commit 828086ceb3
70 changed files with 4474 additions and 0 deletions

72
app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,72 @@
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends androidx.lifecycle.ViewModel
-keep class com.horrortv.app.data.remote.omdb.dto.** { *; }
-keep class com.horrortv.app.domain.model.** { *; }
-keep class retrofit2.** { *; }
-keepclassmembernames class * {
@retrofit2.http.* <methods>;
}
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-dontwarn okio.**
-keep class com.google.gson.** { *; }
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-keep class dagger.** { *; }
-keep class * extends dagger.** { *; }
-keep class * implements dagger.** { *; }
-keep class * extends javax.inject.** { *; }
-keep class * implements javax.inject.** { *; }
-dontwarn dagger.**
-keep class io.coil.** { *; }
-keep class coil.** { *; }
-keepclassmembers class kotlinx.coroutines.** {
volatile <fields>;
}
-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepclassmembernames class kotlinx.coroutines.** {
@kotlinx.coroutines.InternalCoroutinesApi <methods>;
}
-keep class kotlin.** { *; }
-keep class * implements kotlin.** { *; }
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(...);
public static int v(...);
public static int d(...);
public static int i(...);
}
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keepattributes RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations
-keepattributes RuntimeVisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations
-keepattributes AnnotationDefault
-renamesourcefileattribute SourceFile
-keepattributes EnclosingMethod
-dontwarn javax.annotation.**
-dontwarn kotlin.Unit
-dontwarn retrofit2.Platform$Java8
-dontwarn kotlin.jvm.internal.Reflection