diff --git a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java index 725b956a60b..4057f660899 100644 --- a/src/com/android/settings/display/AdaptiveSleepPreferenceController.java +++ b/src/com/android/settings/display/AdaptiveSleepPreferenceController.java @@ -20,19 +20,16 @@ import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE; import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_DEVICE; +import static com.android.settings.display.UtilsKt.isAdaptiveSleepSupported; import android.Manifest; import android.app.settings.SettingsEnums; import android.content.Context; -import android.content.Intent; import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.hardware.SensorPrivacyManager; import android.os.PowerManager; import android.os.UserManager; import android.provider.Settings; -import android.service.attention.AttentionService; -import android.text.TextUtils; import androidx.preference.PreferenceScreen; @@ -144,25 +141,6 @@ public class AdaptiveSleepPreferenceController { : UNSUPPORTED_ON_DEVICE; } - static boolean isAdaptiveSleepSupported(Context context) { - return context.getResources().getBoolean( - com.android.internal.R.bool.config_adaptive_sleep_available) - && isAttentionServiceAvailable(context); - } - - private static boolean isAttentionServiceAvailable(Context context) { - final PackageManager packageManager = context.getPackageManager(); - final String resolvePackage = packageManager.getAttentionServicePackageName(); - if (TextUtils.isEmpty(resolvePackage)) { - return false; - } - final Intent intent = new Intent(AttentionService.SERVICE_INTERFACE).setPackage( - resolvePackage); - final ResolveInfo resolveInfo = packageManager.resolveService(intent, - PackageManager.MATCH_SYSTEM_ONLY); - return resolveInfo != null && resolveInfo.serviceInfo != null; - } - static boolean hasSufficientPermission(PackageManager packageManager) { final String attentionPackage = packageManager.getAttentionServicePackageName(); return attentionPackage != null && packageManager.checkPermission( diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java index 2d229a3cfe7..c6d4c067541 100644 --- a/src/com/android/settings/display/ScreenTimeoutSettings.java +++ b/src/com/android/settings/display/ScreenTimeoutSettings.java @@ -20,6 +20,8 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.OTHER_OPT import static android.hardware.SensorPrivacyManager.Sensors.CAMERA; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; +import static com.android.settings.display.UtilsKt.isAdaptiveSleepSupported; + import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; @@ -222,7 +224,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment FeatureFactory.getFeatureFactory().getDisplayFeatureProvider() .addToScreen(mAdditionalTogglePreferenceController, screen); - if (isScreenAttentionAvailable(getContext())) { + if (isAdaptiveSleepSupported(getContext())) { mAdaptiveSleepPermissionController.addToScreen(screen); mAdaptiveSleepCameraStatePreferenceController.addToScreen(screen); mAdaptiveSleepController.addToScreen(screen); @@ -352,10 +354,6 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment } } - private static boolean isScreenAttentionAvailable(Context context) { - return AdaptiveSleepPreferenceController.isAdaptiveSleepSupported(context); - } - private static long getTimeoutFromKey(String key) { return Long.parseLong(key); } @@ -423,7 +421,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment new BaseSearchIndexProvider(R.xml.screen_timeout_settings) { public List getRawDataToIndex( Context context, boolean enabled) { - if (!isScreenAttentionAvailable(context)) { + if (!isAdaptiveSleepSupported(context)) { return null; } final Resources res = context.getResources(); diff --git a/src/com/android/settings/display/Utils.kt b/src/com/android/settings/display/Utils.kt new file mode 100644 index 00000000000..7ee63cd9511 --- /dev/null +++ b/src/com/android/settings/display/Utils.kt @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2024 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.settings.display + +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.service.attention.AttentionService + +fun Context.isAdaptiveSleepSupported() = + resources.getBoolean(com.android.internal.R.bool.config_adaptive_sleep_available) && + isAttentionServiceAvailable() + +private fun Context.isAttentionServiceAvailable(): Boolean { + val packageManager = getPackageManager() + val packageName = packageManager.attentionServicePackageName + if (packageName.isNullOrEmpty()) return false + val intent = Intent(AttentionService.SERVICE_INTERFACE).setPackage(packageName) + val resolveInfo = packageManager.resolveService(intent, PackageManager.MATCH_SYSTEM_ONLY) + return resolveInfo != null && resolveInfo.serviceInfo != null +}