From b7336940e6a838adf4447ac5eb4141bb2fa82b57 Mon Sep 17 00:00:00 2001 From: Kavish Devar Date: Tue, 5 May 2026 13:17:31 +0530 Subject: [PATCH] android: add convo detect broadcast --- .../librepods/services/AirPodsService.kt | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/android/app/src/main/java/me/kavishdevar/librepods/services/AirPodsService.kt b/android/app/src/main/java/me/kavishdevar/librepods/services/AirPodsService.kt index 2468c4c..9c54d90 100644 --- a/android/app/src/main/java/me/kavishdevar/librepods/services/AirPodsService.kt +++ b/android/app/src/main/java/me/kavishdevar/librepods/services/AirPodsService.kt @@ -526,7 +526,7 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList initializeConfig() - ancModeReceiver = object : BroadcastReceiver() { + externalBroadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { if (intent?.action == "me.kavishdevar.librepods.SET_ANC_MODE") { if (intent.hasExtra("mode")) { @@ -555,15 +555,23 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList "Cycling ANC mode from $currentMode to $nextMode" ) } + } else if (intent?.action == "me.kavishdevar.librepods.CONVO_DETECT") { + if (intent.hasExtra("enabled")) { + val enabled = intent.getBooleanExtra("enabled", false) + aacpManager.sendControlCommand( + AACPManager.Companion.ControlCommandIdentifiers.CONVERSATION_DETECT_CONFIG.value, + enabled + ) + } } } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - registerReceiver(ancModeReceiver, ancModeFilter, RECEIVER_EXPORTED) + registerReceiver(externalBroadcastReceiver, externalBroadcastFilter, RECEIVER_EXPORTED) } else { @Suppress("UnspecifiedRegisterReceiverFlag") registerReceiver( - ancModeReceiver, ancModeFilter + externalBroadcastReceiver, externalBroadcastFilter ) } val audioManager = this@AirPodsService.getSystemService(AUDIO_SERVICE) as AudioManager @@ -2397,8 +2405,11 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList } } - val ancModeFilter = IntentFilter("me.kavishdevar.librepods.SET_ANC_MODE") - var ancModeReceiver: BroadcastReceiver? = null + val externalBroadcastFilter = IntentFilter().apply { + addAction("me.kavishdevar.librepods.SET_ANC_MODE") + addAction("me.kavishdevar.librepods.CONVO_DETECT") + } + var externalBroadcastReceiver: BroadcastReceiver? = null @SuppressLint("InlinedApi", "MissingPermission", "UnspecifiedRegisterReceiverFlag") override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { @@ -3104,7 +3115,7 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList e.printStackTrace() } try { - unregisterReceiver(ancModeReceiver) + unregisterReceiver(externalBroadcastReceiver) } catch (e: Exception) { e.printStackTrace() }