Skip to content

Commit b733694

Browse files
committed
android: add convo detect broadcast
1 parent b2ba830 commit b733694

1 file changed

Lines changed: 17 additions & 6 deletions

File tree

android/app/src/main/java/me/kavishdevar/librepods/services/AirPodsService.kt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList
526526

527527
initializeConfig()
528528

529-
ancModeReceiver = object : BroadcastReceiver() {
529+
externalBroadcastReceiver = object : BroadcastReceiver() {
530530
override fun onReceive(context: Context?, intent: Intent?) {
531531
if (intent?.action == "me.kavishdevar.librepods.SET_ANC_MODE") {
532532
if (intent.hasExtra("mode")) {
@@ -555,15 +555,23 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList
555555
"Cycling ANC mode from $currentMode to $nextMode"
556556
)
557557
}
558+
} else if (intent?.action == "me.kavishdevar.librepods.CONVO_DETECT") {
559+
if (intent.hasExtra("enabled")) {
560+
val enabled = intent.getBooleanExtra("enabled", false)
561+
aacpManager.sendControlCommand(
562+
AACPManager.Companion.ControlCommandIdentifiers.CONVERSATION_DETECT_CONFIG.value,
563+
enabled
564+
)
565+
}
558566
}
559567
}
560568
}
561569

562570
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
563-
registerReceiver(ancModeReceiver, ancModeFilter, RECEIVER_EXPORTED)
571+
registerReceiver(externalBroadcastReceiver, externalBroadcastFilter, RECEIVER_EXPORTED)
564572
} else {
565573
@Suppress("UnspecifiedRegisterReceiverFlag") registerReceiver(
566-
ancModeReceiver, ancModeFilter
574+
externalBroadcastReceiver, externalBroadcastFilter
567575
)
568576
}
569577
val audioManager = this@AirPodsService.getSystemService(AUDIO_SERVICE) as AudioManager
@@ -2397,8 +2405,11 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList
23972405
}
23982406
}
23992407

2400-
val ancModeFilter = IntentFilter("me.kavishdevar.librepods.SET_ANC_MODE")
2401-
var ancModeReceiver: BroadcastReceiver? = null
2408+
val externalBroadcastFilter = IntentFilter().apply {
2409+
addAction("me.kavishdevar.librepods.SET_ANC_MODE")
2410+
addAction("me.kavishdevar.librepods.CONVO_DETECT")
2411+
}
2412+
var externalBroadcastReceiver: BroadcastReceiver? = null
24022413

24032414
@SuppressLint("InlinedApi", "MissingPermission", "UnspecifiedRegisterReceiverFlag")
24042415
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
@@ -3104,7 +3115,7 @@ class AirPodsService : Service(), SharedPreferences.OnSharedPreferenceChangeList
31043115
e.printStackTrace()
31053116
}
31063117
try {
3107-
unregisterReceiver(ancModeReceiver)
3118+
unregisterReceiver(externalBroadcastReceiver)
31083119
} catch (e: Exception) {
31093120
e.printStackTrace()
31103121
}

0 commit comments

Comments
 (0)