Merge "Fix b/265746746: Announce "Battery usage for [slot_timestamp]" instead of changing focus when Talk Back on."
diff --git a/res/xml/power_usage_advanced.xml b/res/xml/power_usage_advanced.xml
index 0d89252..2a1a23c 100644
--- a/res/xml/power_usage_advanced.xml
+++ b/res/xml/power_usage_advanced.xml
@@ -38,7 +38,7 @@
</PreferenceCategory>
- <com.android.settings.fuelgauge.batteryusage.AccessibilityFocusablePreferenceCategory
+ <PreferenceCategory
android:key="battery_usage_breakdown"
settings:controller=
"com.android.settings.fuelgauge.batteryusage.BatteryUsageBreakdownController"
@@ -58,5 +58,5 @@
settings:isPreferenceVisible="false"
settings:searchable="false" />
- </com.android.settings.fuelgauge.batteryusage.AccessibilityFocusablePreferenceCategory>
+ </PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/settings/fuelgauge/batteryusage/AccessibilityFocusablePreferenceCategory.java b/src/com/android/settings/fuelgauge/batteryusage/AccessibilityFocusablePreferenceCategory.java
deleted file mode 100644
index f215aae..0000000
--- a/src/com/android/settings/fuelgauge/batteryusage/AccessibilityFocusablePreferenceCategory.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.settings.fuelgauge.batteryusage;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.accessibility.AccessibilityManager;
-
-import androidx.preference.PreferenceCategory;
-import androidx.preference.PreferenceViewHolder;
-
-/**
- * Preference category that supports requesting accessibility focus.
- */
-public class AccessibilityFocusablePreferenceCategory extends PreferenceCategory {
- private PreferenceViewHolder mView;
-
- public AccessibilityFocusablePreferenceCategory(Context context, AttributeSet attrs,
- int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- public AccessibilityFocusablePreferenceCategory(Context context, AttributeSet attrs,
- int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
-
- public AccessibilityFocusablePreferenceCategory(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public AccessibilityFocusablePreferenceCategory(Context context) {
- super(context);
- }
-
- @Override
- public void onBindViewHolder(PreferenceViewHolder view) {
- super.onBindViewHolder(view);
- mView = view;
- }
-
- /**
- * Call this to try to give accessibility focus to the category title.
- */
- public void requestAccessibilityFocus() {
- if (mView == null || mView.itemView == null) {
- return;
- }
- if (!AccessibilityManager.getInstance(getContext()).isEnabled()) {
- return;
- }
- mView.itemView.requestAccessibilityFocus();
- }
-}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
index 004c8bf..d9ac14e 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
@@ -296,6 +296,8 @@
mDailyChartIndex = trapezoidIndex;
mHourlyChartIndex = BatteryChartViewModel.SELECTED_INDEX_ALL;
refreshUi();
+ mHandler.post(() -> mDailyChartView.announceForAccessibility(
+ getAccessibilityAnnounceMessage()));
mMetricsFeatureProvider.action(
mPrefContext,
trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
@@ -311,6 +313,8 @@
Log.d(TAG, "onHourlyChartSelect:" + trapezoidIndex);
mHourlyChartIndex = trapezoidIndex;
refreshUi();
+ mHandler.post(() -> mHourlyChartView.announceForAccessibility(
+ getAccessibilityAnnounceMessage()));
mMetricsFeatureProvider.action(
mPrefContext,
trapezoidIndex == BatteryChartViewModel.SELECTED_INDEX_ALL
@@ -439,6 +443,15 @@
return String.format("%s %s", selectedDayText, selectedHourText);
}
+ private String getAccessibilityAnnounceMessage() {
+ final String slotInformation = getSlotInformation();
+ return slotInformation == null
+ ? mPrefContext.getString(
+ R.string.battery_usage_breakdown_title_since_last_full_charge)
+ : mPrefContext.getString(
+ R.string.battery_usage_breakdown_title_for_slot, slotInformation);
+ }
+
private void animateBatteryChartViewGroup() {
if (mBatteryChartViewGroup != null && mBatteryChartViewGroup.getAlpha() == 0) {
mBatteryChartViewGroup.animate().alpha(1f).setDuration(FADE_IN_ANIMATION_DURATION)
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
index 34a37e3..d44f266 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
@@ -27,6 +27,7 @@
import android.widget.AdapterView;
import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;
@@ -74,7 +75,7 @@
@VisibleForTesting
Context mPrefContext;
@VisibleForTesting
- AccessibilityFocusablePreferenceCategory mRootPreference;
+ PreferenceCategory mRootPreference;
@VisibleForTesting
SpinnerPreference mSpinnerPreference;
@VisibleForTesting
@@ -203,9 +204,6 @@
: mPrefContext.getString(
R.string.battery_usage_breakdown_title_for_slot, slotTimestamp));
mRootPreference.setVisible(true);
- mHandler.post(() -> {
- mRootPreference.requestAccessibilityFocus();
- });
}
private void showFooterPreference(boolean isAllBatteryUsageEmpty, String slotTimestamp) {