/* * Copyright (C) 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. */ package com.android.server.bluetooth import android.bluetooth.BluetoothAdapter import android.content.Context import android.os.UserManager import com.android.server.SystemService import com.android.server.SystemService.TargetUser class BluetoothService(context: Context) : SystemService(context) { private val mBluetoothManagerService = BluetoothManagerService(context) private var mInitialized = false private fun initialize() { if (!mInitialized) { mBluetoothManagerService.handleOnBootPhase() mInitialized = true } } override fun onStart() {} override fun onBootPhase(phase: Int) { if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) { publishBinderService( BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE, mBluetoothManagerService ) } } override fun onUserStarting(user: TargetUser) { if (!UserManager.isHeadlessSystemUserMode()) { initialize() } } override fun onUserSwitching(from: TargetUser?, to: TargetUser) { if (!mInitialized) { initialize() } else { mBluetoothManagerService.onSwitchUser(to.userHandle) } } override fun onUserUnlocking(user: TargetUser) { mBluetoothManagerService.handleOnUnlockUser(user.userHandle) } }