Skip to content

Commit ebd52aa

Browse files
authored
Merge pull request #156 from Hepolise/dev
Refactor build config, improve focus handling, extend Android 16 support, and bump SDK
2 parents ac15e8b + 6a62010 commit ebd52aa

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

app/build.gradle.kts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
13
plugins {
24
id("com.android.application")
35
id("org.jetbrains.kotlin.android")
46
id("org.jetbrains.kotlin.plugin.compose")
57
}
68

79
android {
8-
compileSdk = 35
10+
compileSdk = 36
911

1012
defaultConfig {
1113
applicationId = "ru.hepolise.volumekeymusicmanagermodule"
1214
minSdk = 27
13-
targetSdk = 35
15+
targetSdk = 36
1416
versionCode = rootProject.ext["appVersionCode"].toString().toInt()
1517
versionName = rootProject.ext["appVersionName"].toString()
1618
}
@@ -27,8 +29,10 @@ android {
2729
targetCompatibility = JavaVersion.VERSION_17
2830
}
2931

30-
kotlinOptions {
31-
jvmTarget = "17"
32+
kotlin {
33+
compilerOptions {
34+
jvmTarget.set(JvmTarget.JVM_17)
35+
}
3236
}
3337

3438
namespace = "ru.hepolise.volumekeytrackcontrolmodule"

app/src/main/java/ru/hepolise/volumekeytrackcontrol/module/VolumeControlModule.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ class VolumeControlModule : IXposedHookLoadPackage {
3434
}
3535

3636
private val initMethodSignatures = mapOf(
37-
// Android 14 & 15 signature
37+
// Android 14, 15 and 16 signature
3838
// https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-14.0.0_r18/services/core/java/com/android/server/policy/PhoneWindowManager.java#2033
3939
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android15-release/services/core/java/com/android/server/policy/PhoneWindowManager.java#2199
40+
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/services/core/java/com/android/server/policy/PhoneWindowManager.java#2359
4041
arrayOf(
4142
Context::class.java,
4243
CLASS_WINDOW_MANAGER_FUNCS
43-
) to "Using Android 14 or 15 method signature",
44+
) to "Using Android 14, 15 or 16 method signature",
4445

4546
// Android 13 signature
4647
// https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android13-dev/services/core/java/com/android/server/policy/PhoneWindowManager.java#1873
@@ -59,13 +60,13 @@ class VolumeControlModule : IXposedHookLoadPackage {
5960
)
6061

6162
private fun init(classLoader: ClassLoader) {
62-
val foundMethod = initMethodSignatures.any { (params, logMessage) ->
63-
tryHookMethod(classLoader, params, logMessage)
64-
}
65-
66-
if (!foundMethod) {
67-
log("Method hook failed for init!")
68-
return
63+
initMethodSignatures.any { (params, logMessage) ->
64+
tryHookInitMethod(classLoader, params, logMessage)
65+
}.also { hooked ->
66+
if (!hooked) {
67+
log("Method hook failed for init!")
68+
return
69+
}
6970
}
7071

7172
// https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-14.0.0_r18/services/core/java/com/android/server/policy/PhoneWindowManager.java#4117
@@ -79,7 +80,7 @@ class VolumeControlModule : IXposedHookLoadPackage {
7980
)
8081
}
8182

82-
private fun tryHookMethod(
83+
private fun tryHookInitMethod(
8384
classLoader: ClassLoader,
8485
params: Array<Serializable>,
8586
logMessage: String
@@ -91,7 +92,7 @@ class VolumeControlModule : IXposedHookLoadPackage {
9192
)
9293
log(logMessage)
9394
true
94-
} catch (ignored: NoSuchMethodError) {
95+
} catch (_: NoSuchMethodError) {
9596
false
9697
}
9798
}

app/src/main/java/ru/hepolise/volumekeytrackcontrol/module/VolumeKeyControlModuleHandlers.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ object VolumeKeyControlModuleHandlers {
245245

246246
private fun MethodHookParam.abortAll() {
247247
log("Aborting all")
248-
abortEvents(MediaEvent.Prev, MediaEvent.Next, MediaEvent.PlayPause)
248+
abortEvents(*MediaEvent.entries.toTypedArray())
249249
}
250250

251251
private fun MethodHookParam.abortEvents(vararg events: MediaEvent) {

app/src/main/java/ru/hepolise/volumekeytrackcontrol/ui/component/NumberAlertDialog.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@ fun NumberAlertDialog(
3131
) {
3232
fun validate(value: Int) = value in minValue..maxValue
3333
var value by remember { mutableStateOf(defaultValue.toString()) }
34-
val focusRequester = remember { FocusRequester() }
3534
AlertDialog(
3635
onDismissRequest = onDismissRequest,
3736
title = { Text(text = title) },
3837
text = {
38+
val focusRequester = remember { FocusRequester() }
39+
3940
Column {
4041
OutlinedTextField(
4142
value = value,
@@ -45,6 +46,9 @@ fun NumberAlertDialog(
4546
isError = value.toIntOrNull() == null || !validate(value.toInt()),
4647
modifier = Modifier.focusRequester(focusRequester)
4748
)
49+
LaunchedEffect(Unit) {
50+
focusRequester.requestFocus()
51+
}
4852
}
4953
},
5054
confirmButton = {
@@ -63,7 +67,4 @@ fun NumberAlertDialog(
6367
}
6468
},
6569
)
66-
LaunchedEffect(Unit) {
67-
focusRequester.requestFocus()
68-
}
6970
}

0 commit comments

Comments
 (0)