mirror of
https://github.com/kavishdevar/librepods.git
synced 2026-04-23 22:54:02 +00:00
android: listen for intents to set anc mode
This commit is contained in:
@@ -901,13 +901,58 @@ class AirPodsService : Service() {
|
|||||||
Log.d("AirPodsService", "Metadata set: $metadataSet")
|
Log.d("AirPodsService", "Metadata set: $metadataSet")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val ancModeFilter = IntentFilter("me.kavishdevar.librepods.SET_ANC_MODE")
|
||||||
|
var ancModeReceiver: BroadcastReceiver? = null
|
||||||
@SuppressLint("InlinedApi", "MissingPermission", "UnspecifiedRegisterReceiverFlag")
|
@SuppressLint("InlinedApi", "MissingPermission", "UnspecifiedRegisterReceiverFlag")
|
||||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||||
Log.d("AirPodsService", "Service started")
|
Log.d("AirPodsService", "Service started")
|
||||||
ServiceManager.setService(this)
|
ServiceManager.setService(this)
|
||||||
startForegroundNotification()
|
startForegroundNotification()
|
||||||
initGestureDetector()
|
initGestureDetector()
|
||||||
|
|
||||||
|
ancModeReceiver = object : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context?, intent: Intent?) {
|
||||||
|
if (intent?.action == "me.kavishdevar.librepods.SET_ANC_MODE") {
|
||||||
|
if (intent.hasExtra("mode")) {
|
||||||
|
// If a specific mode is requested, use it
|
||||||
|
val mode = intent.getIntExtra("mode", -1)
|
||||||
|
if (mode in 1..4) {
|
||||||
|
setANCMode(mode)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val currentMode = ancNotification.status
|
||||||
|
val offListeningMode = sharedPreferences.getBoolean("off_listening_mode", true)
|
||||||
|
|
||||||
|
val nextMode = if (offListeningMode) {
|
||||||
|
when (currentMode) {
|
||||||
|
1 -> 2
|
||||||
|
2 -> 3
|
||||||
|
3 -> 4
|
||||||
|
4 -> 1
|
||||||
|
else -> 1
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
when (currentMode) {
|
||||||
|
1 -> 2
|
||||||
|
2 -> 3
|
||||||
|
3 -> 4
|
||||||
|
4 -> 2
|
||||||
|
else -> 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setANCMode(nextMode)
|
||||||
|
Log.d("AirPodsService", "Cycling ANC mode from $currentMode to $nextMode (offListeningMode: $offListeningMode)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
registerReceiver(ancModeReceiver, ancModeFilter, RECEIVER_EXPORTED)
|
||||||
|
} else {
|
||||||
|
registerReceiver(ancModeReceiver, ancModeFilter)
|
||||||
|
}
|
||||||
val audioManager =
|
val audioManager =
|
||||||
this@AirPodsService.getSystemService(AUDIO_SERVICE) as AudioManager
|
this@AirPodsService.getSystemService(AUDIO_SERVICE) as AudioManager
|
||||||
MediaController.initialize(
|
MediaController.initialize(
|
||||||
@@ -1962,6 +2007,11 @@ class AirPodsService : Service() {
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
unregisterReceiver(ancModeReceiver)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
unregisterReceiver(connectionReceiver)
|
unregisterReceiver(connectionReceiver)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
|||||||
Reference in New Issue
Block a user