From 7c84c375fd1fa7e584010e6bf3d5d769962a3075 Mon Sep 17 00:00:00 2001 From: ahmedmido3330 Date: Sat, 26 Jul 2025 18:44:25 +0300 Subject: [PATCH 1/3] Update Samsung.kt --- .../main/java/me/phh/treble/app/Samsung.kt | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/me/phh/treble/app/Samsung.kt b/app/src/main/java/me/phh/treble/app/Samsung.kt index 9456e30dde18..d94cc2fd5d95 100644 --- a/app/src/main/java/me/phh/treble/app/Samsung.kt +++ b/app/src/main/java/me/phh/treble/app/Samsung.kt @@ -14,6 +14,8 @@ import android.telephony.TelephonyManager import android.util.Log import androidx.annotation.RequiresApi import java.io.File +import android.telephony.SubscriptionManager + class Samsung: EntryStartup { /* @@ -100,17 +102,44 @@ class Samsung: EntryStartup { } } - val telephonyCallback: TelephonyCallback = @RequiresApi(Build.VERSION_CODES.S) - object: TelephonyCallback(), TelephonyCallback.CallStateListener { - override fun onCallStateChanged(p0: Int) { - Log.d("PHH", "Call state changed $p0") - if(p0 == TelephonyManager.CALL_STATE_OFFHOOK) { - AudioSystem.setParameters("g_call_state=514") // CALL_STATUS_VOLTE_CP_VOICE_CALL_ON - } else { - AudioSystem.setParameters("g_call_state=1") // CALL_STATUS_CS_VOICE_CP_VIDEO_CALL_OFF +@RequiresApi(Build.VERSION_CODES.S) +val telephonyCallback: TelephonyCallback = object : TelephonyCallback(), + TelephonyCallback.CallStateListener, + TelephonyCallback.ActiveDataSubscriptionIdListener { + + private var activeSimSlot: Int = 1 // Default SIM slot + + override fun onActiveDataSubscriptionIdChanged(subId: Int) { + + val sm = context.getSystemService(SubscriptionManager::class.java) + val subscriptionInfoList = sm.activeSubscriptionInfoList + for (info in subscriptionInfoList) { + if (info.subscriptionId == subId) { + activeSimSlot = info.simSlotIndex + 1 // simSlotIndex starts from 0 + Log.d("PHH", "Detected active SIM slot: $activeSimSlot") + break + } + } + } + + override fun onCallStateChanged(state: Int) { + Log.d("PHH", "Call state changed $state") + try { + when (state) { + TelephonyManager.CALL_STATE_OFFHOOK -> { + val simSlotHex = "0x%02x".format(activeSimSlot) + AudioSystem.setParameters("g_call_sim_slot=$simSlotHex") + AudioSystem.setParameters("g_call_state=514") + } + else -> { + AudioSystem.setParameters("g_call_state=1") + } } + } catch (e: Exception) { + Log.e("PHH", "Error handling call state", e) } } +} @RequiresApi(Build.VERSION_CODES.S) override fun startup(ctxt: Context) { From 80c8a7773101cb6300aba18324f9b5bae333a4a3 Mon Sep 17 00:00:00 2001 From: ahmedmido3330 Date: Sat, 26 Jul 2025 18:46:44 +0300 Subject: [PATCH 2/3] Update Samsung.kt --- app/src/main/java/me/phh/treble/app/Samsung.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/me/phh/treble/app/Samsung.kt b/app/src/main/java/me/phh/treble/app/Samsung.kt index d94cc2fd5d95..00aa75b7db72 100644 --- a/app/src/main/java/me/phh/treble/app/Samsung.kt +++ b/app/src/main/java/me/phh/treble/app/Samsung.kt @@ -16,7 +16,6 @@ import androidx.annotation.RequiresApi import java.io.File import android.telephony.SubscriptionManager - class Samsung: EntryStartup { /* Here lies some documentations about stuff that cane be done on Samsung devices: From e2f08f89a417131695202845b1ad2505433fcca6 Mon Sep 17 00:00:00 2001 From: ahmedmido3330 Date: Sat, 26 Jul 2025 18:56:10 +0300 Subject: [PATCH 3/3] Update Samsung.kt --- app/src/main/java/me/phh/treble/app/Samsung.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/me/phh/treble/app/Samsung.kt b/app/src/main/java/me/phh/treble/app/Samsung.kt index 00aa75b7db72..d434b645f449 100644 --- a/app/src/main/java/me/phh/treble/app/Samsung.kt +++ b/app/src/main/java/me/phh/treble/app/Samsung.kt @@ -26,6 +26,7 @@ class Samsung: EntryStartup { - accesibility: 0 no, 1 negative, 2 color_blind, 3 screen off, 4 grayscale, 5 grayscale_negative, 6 color blind hbm - night mode 1 <0-10> (enable and set level) or 0 0 (disable) */ + lateinit var context: Context val spListener = SharedPreferences.OnSharedPreferenceChangeListener { sp, key -> when(key) { SamsungSettings.highBrightess -> { @@ -142,6 +143,7 @@ val telephonyCallback: TelephonyCallback = object : TelephonyCallback(), @RequiresApi(Build.VERSION_CODES.S) override fun startup(ctxt: Context) { + context = ctxt if (!SamsungSettings.enabled()) return val handler = Handler(HandlerThread("SamsungThread").apply { start()}.looper)