Loading packages/SystemUI/res/layout/volume_dialog_row.xml +1 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ android:layout_width="24dp" android:layout_height="24dp" android:background="?android:selectableItemBackgroundBorderless" android:contentDescription="@string/accessibility_output_chooser" style="@style/VolumeButtons" android:layout_centerVertical="true" android:src="@drawable/ic_swap" Loading packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -1272,6 +1272,9 @@ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] --> <string name="accessibility_volume_collapse">Collapse</string> <!-- content description for audio output chooser [CHAR LIMIT=NONE]--> <string name="accessibility_output_chooser">Switch output device</string> <!-- Screen pinning dialog title. --> <string name="screen_pinning_title">Screen is pinned</string> <!-- Screen pinning dialog description. --> Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java +27 −0 Original line number Diff line number Diff line Loading @@ -14,10 +14,14 @@ package com.android.systemui.statusbar.policy; import android.accessibilityservice.AccessibilityServiceInfo; import android.content.Context; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener; import java.util.List; /** * For mocking because AccessibilityManager is final for some reason... */ Loading @@ -39,4 +43,27 @@ public class AccessibilityManagerWrapper implements public void removeCallback(AccessibilityServicesStateChangeListener listener) { mAccessibilityManager.removeAccessibilityServicesStateChangeListener(listener); } public void addAccessibilityStateChangeListener( AccessibilityManager.AccessibilityStateChangeListener listener) { mAccessibilityManager.addAccessibilityStateChangeListener(listener); } public void removeAccessibilityStateChangeListener( AccessibilityManager.AccessibilityStateChangeListener listener) { mAccessibilityManager.removeAccessibilityStateChangeListener(listener); } public boolean isEnabled() { return mAccessibilityManager.isEnabled(); } public void sendAccessibilityEvent(AccessibilityEvent event) { mAccessibilityManager.sendAccessibilityEvent(event); } public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList( int feedbackTypeFlags) { return mAccessibilityManager.getEnabledAccessibilityServiceList(feedbackTypeFlags); } } packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa private static final int DYNAMIC_STREAM_START_INDEX = 100; private static final int VIBRATE_HINT_DURATION = 50; private static final ArrayMap<Integer, Integer> STREAMS = new ArrayMap<>(); static final ArrayMap<Integer, Integer> STREAMS = new ArrayMap<>(); static { STREAMS.put(AudioSystem.STREAM_ALARM, R.string.stream_alarm); STREAMS.put(AudioSystem.STREAM_BLUETOOTH_SCO, R.string.stream_bluetooth_sco); Loading packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +10 −6 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener; import android.view.animation.DecelerateInterpolator; import android.widget.ImageButton; Loading @@ -79,6 +78,7 @@ import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.plugins.VolumeDialogController.State; import com.android.systemui.plugins.VolumeDialogController.StreamState; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import java.io.PrintWriter; import java.util.ArrayList; Loading Loading @@ -111,7 +111,7 @@ public class VolumeDialogImpl implements VolumeDialog { private ConfigurableTexts mConfigurableTexts; private final SparseBooleanArray mDynamic = new SparseBooleanArray(); private final KeyguardManager mKeyguard; private final AccessibilityManager mAccessibilityMgr; private final AccessibilityManagerWrapper mAccessibilityMgr; private final Object mSafetyWarningLock = new Object(); private final Object mOutputChooserLock = new Object(); private final Accessibility mAccessibility = new Accessibility(); Loading @@ -134,8 +134,7 @@ public class VolumeDialogImpl implements VolumeDialog { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mController = Dependency.get(VolumeDialogController.class); mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mAccessibilityMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); mActiveSliderTint = ColorStateList.valueOf(Utils.getColorAccent(mContext)); mInactiveSliderTint = loadColorStateList(R.color.volume_slider_inactive); } Loading Loading @@ -231,6 +230,10 @@ public class VolumeDialogImpl implements VolumeDialog { initRingerH(); } protected ViewGroup getDialogView() { return mDialogView; } private ColorStateList loadColorStateList(int colorResId) { return ColorStateList.valueOf(mContext.getColor(colorResId)); } Loading Loading @@ -258,6 +261,7 @@ public class VolumeDialogImpl implements VolumeDialog { private void addRow(int stream, int iconRes, int iconMuteRes, boolean important, boolean defaultStream, boolean dynamic) { if (D.BUG) Slog.d(TAG, "Adding row for stream " + stream); VolumeRow row = new VolumeRow(); initRow(row, stream, iconRes, iconMuteRes, important, defaultStream); int rowSize; Loading Loading @@ -621,7 +625,7 @@ public class VolumeDialogImpl implements VolumeDialog { } } private void onStateChangedH(State state) { protected void onStateChangedH(State state) { mState = state; mDynamic.clear(); // add any new dynamic rows Loading Loading @@ -894,7 +898,7 @@ public class VolumeDialogImpl implements VolumeDialog { return ss.remoteLabel; } try { return mContext.getString(ss.name); return mContext.getResources().getString(ss.name); } catch (Resources.NotFoundException e) { Slog.e(TAG, "Can't find translation for stream " + ss); return ""; Loading Loading
packages/SystemUI/res/layout/volume_dialog_row.xml +1 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ android:layout_width="24dp" android:layout_height="24dp" android:background="?android:selectableItemBackgroundBorderless" android:contentDescription="@string/accessibility_output_chooser" style="@style/VolumeButtons" android:layout_centerVertical="true" android:src="@drawable/ic_swap" Loading
packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -1272,6 +1272,9 @@ <!-- Content description for accessibility (not shown on the screen): volume dialog collapse button. [CHAR LIMIT=NONE] --> <string name="accessibility_volume_collapse">Collapse</string> <!-- content description for audio output chooser [CHAR LIMIT=NONE]--> <string name="accessibility_output_chooser">Switch output device</string> <!-- Screen pinning dialog title. --> <string name="screen_pinning_title">Screen is pinned</string> <!-- Screen pinning dialog description. --> Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/AccessibilityManagerWrapper.java +27 −0 Original line number Diff line number Diff line Loading @@ -14,10 +14,14 @@ package com.android.systemui.statusbar.policy; import android.accessibilityservice.AccessibilityServiceInfo; import android.content.Context; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener; import java.util.List; /** * For mocking because AccessibilityManager is final for some reason... */ Loading @@ -39,4 +43,27 @@ public class AccessibilityManagerWrapper implements public void removeCallback(AccessibilityServicesStateChangeListener listener) { mAccessibilityManager.removeAccessibilityServicesStateChangeListener(listener); } public void addAccessibilityStateChangeListener( AccessibilityManager.AccessibilityStateChangeListener listener) { mAccessibilityManager.addAccessibilityStateChangeListener(listener); } public void removeAccessibilityStateChangeListener( AccessibilityManager.AccessibilityStateChangeListener listener) { mAccessibilityManager.removeAccessibilityStateChangeListener(listener); } public boolean isEnabled() { return mAccessibilityManager.isEnabled(); } public void sendAccessibilityEvent(AccessibilityEvent event) { mAccessibilityManager.sendAccessibilityEvent(event); } public List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList( int feedbackTypeFlags) { return mAccessibilityManager.getEnabledAccessibilityServiceList(feedbackTypeFlags); } }
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +1 −1 Original line number Diff line number Diff line Loading @@ -76,7 +76,7 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa private static final int DYNAMIC_STREAM_START_INDEX = 100; private static final int VIBRATE_HINT_DURATION = 50; private static final ArrayMap<Integer, Integer> STREAMS = new ArrayMap<>(); static final ArrayMap<Integer, Integer> STREAMS = new ArrayMap<>(); static { STREAMS.put(AudioSystem.STREAM_ALARM, R.string.stream_alarm); STREAMS.put(AudioSystem.STREAM_BLUETOOTH_SCO, R.string.stream_bluetooth_sco); Loading
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +10 −6 Original line number Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener; import android.view.animation.DecelerateInterpolator; import android.widget.ImageButton; Loading @@ -79,6 +78,7 @@ import com.android.systemui.plugins.VolumeDialog; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.plugins.VolumeDialogController.State; import com.android.systemui.plugins.VolumeDialogController.StreamState; import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import java.io.PrintWriter; import java.util.ArrayList; Loading Loading @@ -111,7 +111,7 @@ public class VolumeDialogImpl implements VolumeDialog { private ConfigurableTexts mConfigurableTexts; private final SparseBooleanArray mDynamic = new SparseBooleanArray(); private final KeyguardManager mKeyguard; private final AccessibilityManager mAccessibilityMgr; private final AccessibilityManagerWrapper mAccessibilityMgr; private final Object mSafetyWarningLock = new Object(); private final Object mOutputChooserLock = new Object(); private final Accessibility mAccessibility = new Accessibility(); Loading @@ -134,8 +134,7 @@ public class VolumeDialogImpl implements VolumeDialog { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mController = Dependency.get(VolumeDialogController.class); mKeyguard = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE); mAccessibilityMgr = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); mActiveSliderTint = ColorStateList.valueOf(Utils.getColorAccent(mContext)); mInactiveSliderTint = loadColorStateList(R.color.volume_slider_inactive); } Loading Loading @@ -231,6 +230,10 @@ public class VolumeDialogImpl implements VolumeDialog { initRingerH(); } protected ViewGroup getDialogView() { return mDialogView; } private ColorStateList loadColorStateList(int colorResId) { return ColorStateList.valueOf(mContext.getColor(colorResId)); } Loading Loading @@ -258,6 +261,7 @@ public class VolumeDialogImpl implements VolumeDialog { private void addRow(int stream, int iconRes, int iconMuteRes, boolean important, boolean defaultStream, boolean dynamic) { if (D.BUG) Slog.d(TAG, "Adding row for stream " + stream); VolumeRow row = new VolumeRow(); initRow(row, stream, iconRes, iconMuteRes, important, defaultStream); int rowSize; Loading Loading @@ -621,7 +625,7 @@ public class VolumeDialogImpl implements VolumeDialog { } } private void onStateChangedH(State state) { protected void onStateChangedH(State state) { mState = state; mDynamic.clear(); // add any new dynamic rows Loading Loading @@ -894,7 +898,7 @@ public class VolumeDialogImpl implements VolumeDialog { return ss.remoteLabel; } try { return mContext.getString(ss.name); return mContext.getResources().getString(ss.name); } catch (Resources.NotFoundException e) { Slog.e(TAG, "Can't find translation for stream " + ss); return ""; Loading