Skip to content

Commit 22bc499

Browse files
committed
Feat: Android 16 QPR2 (API 36.1)
Signed-off-by: imknown <imknown@qq.com>
1 parent 308a8fd commit 22bc499

2 files changed

Lines changed: 22 additions & 19 deletions

File tree

app/src/main/java/net/imknown/android/forefrontinfo/ui/common/AndroidVersionExt.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ import kotlin.reflect.KClass
1313

1414
private const val CODENAME_RELEASE = "REL"
1515

16+
/** [Build.VERSION_CODES_FULL].SDK_INT_MULTIPLIER */
17+
private const val SDK_INT_MULTIPLIER = 1_00000
18+
1619
/** See: [Build.VERSION].RESOURCES_SDK_INT */
1720
private fun listCodes(kClass: KClass<*>): List<Pair<String?, Int>> {
1821
val fields = try {
@@ -40,7 +43,7 @@ private fun listCodes(kClass: KClass<*>): List<Pair<String?, Int>> {
4043

4144
private fun latestApiOrNull(kClass: KClass<*>) = listCodes(kClass).lastOrNull()?.second
4245

43-
val sdkInt by lazy {
46+
val sdkInt: Int by lazy {
4447
if (isStableAndroid()) {
4548
Build.VERSION.SDK_INT
4649
} else {
@@ -49,19 +52,30 @@ val sdkInt by lazy {
4952
}
5053
}
5154

52-
val sdkIntFull by lazy {
53-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
55+
private val sdkIntFull: Int by lazy {
56+
if (isAtLeastStableAndroid16()) {
5457
if (isStableAndroid()) {
5558
Build.VERSION.SDK_INT_FULL
5659
} else {
5760
latestApiOrNull(Build.VERSION_CODES_FULL::class)
5861
?: Build.VERSION.SDK_INT_FULL
5962
}
6063
} else {
61-
sdkInt
64+
sdkInt * SDK_INT_MULTIPLIER
6265
}
6366
}
6467

68+
/** E.g.: "36.1" */
69+
val sdkFull: String by lazy {
70+
"$sdkInt.${sdkIntFull.toMinor()}"
71+
}
72+
73+
private fun Int.toMinor(): Int = if (isAtLeastStableAndroid16()) {
74+
Build.getMinorSdkVersion(this)
75+
} else {
76+
this % SDK_INT_MULTIPLIER
77+
}
78+
6579
fun isAtLeastStableAndroid6() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M || sdkInt >= Build.VERSION_CODES.M
6680
fun isAtLeastStableAndroid7() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N || sdkInt >= Build.VERSION_CODES.N
6781
fun isAtLeastStableAndroid8() = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O || sdkInt >= Build.VERSION_CODES.O
@@ -82,7 +96,7 @@ fun isLatestStableAndroid(lld: Lld) = isStableAndroid()
8296
&& Build.VERSION.SDK_INT >= lld.android.stable.api.toInt()
8397

8498
fun isLatestPreviewAndroid(lld: Lld) = isPreviewAndroid()
85-
&& sdkInt >= lld.android.preview.api.toInt()
99+
&& sdkFull >= lld.android.preview.apiFull
86100

87101
fun isSupportedByUpstreamAndroid(lld: Lld) = isStableAndroid()
88102
&& Build.VERSION.SDK_INT >= lld.android.support.api.toInt()
@@ -109,9 +123,6 @@ private fun Context.isLowRamDevice() = ContextCompat.getSystemService(
109123
this, ActivityManager::class.java
110124
)?.isLowRamDevice == true
111125

112-
@RequiresApi(Build.VERSION_CODES.BAKLAVA)
113-
fun getAndroidApiLevelMinor(sdkIntFull: Int): Int = Build.getMinorSdkVersion(sdkIntFull)
114-
115126
@RequiresApi(Build.VERSION_CODES.R)
116127
fun getSdkExtension(extension: Int): Int = SdkExtensions.getExtensionVersion(extension)
117128

app/src/main/java/net/imknown/android/forefrontinfo/ui/home/repository/HomeRepository.kt

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import net.imknown.android.forefrontinfo.base.extension.formatToLocalZonedDateti
1919
import net.imknown.android.forefrontinfo.base.extension.fullMessage
2020
import net.imknown.android.forefrontinfo.ui.base.list.MyModel
2121
import net.imknown.android.forefrontinfo.ui.base.list.toColoredMyModel
22-
import net.imknown.android.forefrontinfo.ui.common.getAndroidApiLevelMinor
2322
import net.imknown.android.forefrontinfo.ui.common.getAndroidDessertPreview
2423
import net.imknown.android.forefrontinfo.ui.common.getBooleanProperty
2524
import net.imknown.android.forefrontinfo.ui.common.getSdkExtension
@@ -29,7 +28,6 @@ import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid10
2928
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid11
3029
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid12
3130
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid13
32-
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid16
3331
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid6
3432
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid7
3533
import net.imknown.android.forefrontinfo.ui.common.isAtLeastStableAndroid8
@@ -39,8 +37,8 @@ import net.imknown.android.forefrontinfo.ui.common.isLatestPreviewAndroid
3937
import net.imknown.android.forefrontinfo.ui.common.isLatestStableAndroid
4038
import net.imknown.android.forefrontinfo.ui.common.isStableAndroid
4139
import net.imknown.android.forefrontinfo.ui.common.isSupportedByUpstreamAndroid
40+
import net.imknown.android.forefrontinfo.ui.common.sdkFull
4241
import net.imknown.android.forefrontinfo.ui.common.sdkInt
43-
import net.imknown.android.forefrontinfo.ui.common.sdkIntFull
4442
import net.imknown.android.forefrontinfo.ui.home.datasource.AndroidDataSource
4543
import net.imknown.android.forefrontinfo.ui.home.datasource.LldDataSource
4644
import net.imknown.android.forefrontinfo.ui.home.datasource.MountDataSource
@@ -80,12 +78,6 @@ class HomeRepository(
8078

8179
fun detectAndroid(lld: Lld): MyModel {
8280
// region [Mine]
83-
val myApiFull = if (isAtLeastStableAndroid16()) {
84-
"$sdkInt.${getAndroidApiLevelMinor(sdkIntFull)}"
85-
} else {
86-
sdkInt.toString()
87-
}
88-
8981
var myNameAndDessert = if (isStableAndroid()) {
9082
val dessert = lld.android.known.find {
9183
it.api.toInt() == sdkInt
@@ -94,7 +86,7 @@ class HomeRepository(
9486
Build.VERSION.RELEASE + ", " + dessert
9587
} else {
9688
val android = lld.android.known.find {
97-
it.apiFull == myApiFull
89+
it.apiFull == sdkFull
9890
}
9991
if (android != null) {
10092
val preview = MyApplication.getMyString(R.string.android_info_preview)
@@ -107,7 +99,7 @@ class HomeRepository(
10799
myNameAndDessert += " (Go)"
108100
}
109101

110-
val mine = MyApplication.getMyString(R.string.android_info, myNameAndDessert, myApiFull)
102+
val mine = MyApplication.getMyString(R.string.android_info, myNameAndDessert, sdkFull)
111103
// endregion [Mine]
112104

113105
fun oneLine(android: Lld.Androids.Android) =

0 commit comments

Comments
 (0)