blob: 37009b1137afcf78cfa44fe41b38d9522dcab381 [file]
/*
* Copyright 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@file:JvmName("SatelliteModeListener")
package com.android.server.bluetooth.satellite
import android.content.ContentResolver
import android.os.Looper
import com.android.server.bluetooth.Log
import com.android.server.bluetooth.initializeRadioModeListener
/**
* constant copied from {@link Settings.Global}
*
* TODO(b/274636414): Migrate to official API in Android V.
*/
internal const val SETTINGS_SATELLITE_MODE_RADIOS = "satellite_mode_radios"
/**
* constant copied from {@link Settings.Global}
*
* TODO(b/274636414): Migrate to official API in Android V.
*/
internal const val SETTINGS_SATELLITE_MODE_ENABLED = "satellite_mode_enabled"
private const val TAG = "SatelliteModeListener"
public var isOn = false
private set
/** Listen on satellite mode and trigger the callback if it has changed */
public fun initialize(looper: Looper, resolver: ContentResolver, callback: (m: Boolean) -> Unit) {
isOn =
initializeRadioModeListener(
looper,
resolver,
SETTINGS_SATELLITE_MODE_RADIOS,
SETTINGS_SATELLITE_MODE_ENABLED,
fun(newMode: Boolean) {
val previousMode = isOn
isOn = newMode
if (previousMode == isOn) {
Log.d(TAG, "Ignore satellite mode change because is already: " + isOn)
return
}
Log.i(TAG, "Trigger callback with state: $isOn")
callback(isOn)
}
)
Log.i(TAG, "Initialized successfully with state: $isOn")
}