mirror of
https://github.com/JustinZeus/Wholphin.git
synced 2026-07-08 15:50:16 +02:00
Add support for Android TV 6 & 7.0 (#350)
Adds support for Android TV 6.0 & 7.0 by reduce the min SDK to 23. Going below 23 isn't practical since new releases of Jetpack libs require 23+. Also includes some clean up for better gradle syncs & actually use the datetime APIs available from desugaring on older versions. Needs more testing before merge Closes #341
This commit is contained in:
parent
eca3268a7d
commit
258c50a95e
3 changed files with 26 additions and 54 deletions
|
|
@ -64,7 +64,7 @@ The first time you attempt an update, the OS should guide you through enabling t
|
||||||
|
|
||||||
## Compatibility
|
## Compatibility
|
||||||
|
|
||||||
Requires Android 7.1+ (or Fire TV OS 6+) and Jellyfin server `10.10.x` (tested on primarily `10.10.7`).
|
Requires Android 6+ (or Fire TV OS 6+) and Jellyfin server `10.10.x` or `10.11.x` (tested on primarily `10.11.3`).
|
||||||
|
|
||||||
The app is tested on a variety of Android TV/Fire TV OS devices, but if you encounter issues, please file an issue!
|
The app is tested on a variety of Android TV/Fire TV OS devices, but if you encounter issues, please file an issue!
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import com.google.protobuf.gradle.id
|
import com.google.protobuf.gradle.id
|
||||||
import com.mikepenz.aboutlibraries.plugin.DuplicateMode
|
import com.mikepenz.aboutlibraries.plugin.DuplicateMode
|
||||||
import com.mikepenz.aboutlibraries.plugin.DuplicateRule
|
import com.mikepenz.aboutlibraries.plugin.DuplicateRule
|
||||||
import java.io.ByteArrayOutputStream
|
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||||
import java.util.Base64
|
import java.util.Base64
|
||||||
import java.util.Properties
|
import java.util.Properties
|
||||||
|
|
||||||
|
|
@ -21,31 +21,17 @@ val isCI = if (System.getenv("CI") != null) System.getenv("CI").toBoolean() else
|
||||||
val shouldSign = isCI && System.getenv("KEY_ALIAS") != null
|
val shouldSign = isCI && System.getenv("KEY_ALIAS") != null
|
||||||
val ffmpegModuleExists = project.file("libs/lib-decoder-ffmpeg-release.aar").exists()
|
val ffmpegModuleExists = project.file("libs/lib-decoder-ffmpeg-release.aar").exists()
|
||||||
|
|
||||||
fun getVersionCode(): Int {
|
val gitTags =
|
||||||
val stdout = ByteArrayOutputStream()
|
providers
|
||||||
exec {
|
.exec { commandLine("git", "tag", "--list", "v*", "p*") }
|
||||||
commandLine = listOf("git", "tag", "--list", "v*", "p*")
|
.standardOutput.asText
|
||||||
standardOutput = stdout
|
.get()
|
||||||
}
|
|
||||||
return stdout
|
|
||||||
.toString()
|
|
||||||
.trim()
|
|
||||||
.lines()
|
|
||||||
.size
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getAppVersion(): String {
|
val gitDescribe =
|
||||||
val stdout = ByteArrayOutputStream()
|
providers
|
||||||
exec {
|
.exec { commandLine("git", "describe", "--tags", "--long", "--match=v*") }
|
||||||
commandLine = listOf("git", "describe", "--tags", "--long", "--match=v*")
|
.standardOutput.asText
|
||||||
standardOutput = stdout
|
.getOrElse("v0.0.0")
|
||||||
}
|
|
||||||
return stdout
|
|
||||||
.toString()
|
|
||||||
.trim()
|
|
||||||
.removePrefix("v")
|
|
||||||
.ifBlank { "0.0.0" }
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "com.github.damontecres.wholphin"
|
namespace = "com.github.damontecres.wholphin"
|
||||||
|
|
@ -53,10 +39,10 @@ android {
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "com.github.damontecres.wholphin"
|
applicationId = "com.github.damontecres.wholphin"
|
||||||
minSdk = 25
|
minSdk = 23
|
||||||
targetSdk = 36
|
targetSdk = 36
|
||||||
versionCode = getVersionCode()
|
versionCode = gitTags.trim().lines().size
|
||||||
versionName = getAppVersion()
|
versionName = gitDescribe.trim()
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,8 +65,11 @@ android {
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
isCoreLibraryDesugaringEnabled = true
|
isCoreLibraryDesugaringEnabled = true
|
||||||
}
|
}
|
||||||
kotlinOptions {
|
kotlin {
|
||||||
jvmTarget = "11"
|
compilerOptions {
|
||||||
|
jvmTarget = JvmTarget.JVM_11
|
||||||
|
javaParameters = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
buildConfig = true
|
buildConfig = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.github.damontecres.wholphin.ui
|
package com.github.damontecres.wholphin.ui
|
||||||
|
|
||||||
import android.os.Build
|
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import com.github.damontecres.wholphin.R
|
import com.github.damontecres.wholphin.R
|
||||||
import org.jellyfin.sdk.model.api.BaseItemDto
|
import org.jellyfin.sdk.model.api.BaseItemDto
|
||||||
|
|
@ -12,33 +11,17 @@ import java.time.format.FormatStyle
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
|
||||||
val TimeFormatter: DateTimeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
|
val TimeFormatter: DateTimeFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
|
||||||
|
val DateFormatter: DateTimeFormatter = DateTimeFormatter.ofPattern("MMM d, yyyy")
|
||||||
|
|
||||||
|
// TODO server returns in UTC, but sdk converts to local time
|
||||||
|
// eg 2020-02-14T00:00:00.0000000Z => 2020-02-13T17:00:00 PT => Feb 13, 2020
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a [LocalDateTime] as `Aug 24, 2000`
|
* Format a [LocalDateTime] as `Aug 24, 2000`
|
||||||
*/
|
*/
|
||||||
fun formatDateTime(dateTime: LocalDateTime): String =
|
fun formatDateTime(dateTime: LocalDateTime): String = DateFormatter.format(dateTime)
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
// TODO server returns in UTC, but sdk converts to local time
|
|
||||||
// eg 2020-02-14T00:00:00.0000000Z => 2020-02-13T17:00:00 PT => Feb 13, 2020
|
|
||||||
val formatter = DateTimeFormatter.ofPattern("MMM d, yyyy")
|
|
||||||
formatter.format(dateTime)
|
|
||||||
} else if (dateTime.toString().length >= 10) {
|
|
||||||
dateTime.toString().substring(0, 10)
|
|
||||||
} else {
|
|
||||||
dateTime.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun formatDate(dateTime: LocalDate): String =
|
fun formatDate(dateTime: LocalDate): String = DateFormatter.format(dateTime)
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
||||||
// TODO server returns in UTC, but sdk converts to local time
|
|
||||||
// eg 2020-02-14T00:00:00.0000000Z => 2020-02-13T17:00:00 PT => Feb 13, 2020
|
|
||||||
val formatter = DateTimeFormatter.ofPattern("MMM d, yyyy")
|
|
||||||
formatter.format(dateTime)
|
|
||||||
} else if (dateTime.toString().length >= 10) {
|
|
||||||
dateTime.toString().substring(0, 10)
|
|
||||||
} else {
|
|
||||||
dateTime.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the item has season & episode info, format as `S# E#`
|
* If the item has season & episode info, format as `S# E#`
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue