Loading core/res/res/values/config.xml +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ <item><xliff:g id="id">@string/status_bar_phone_evdo_signal</xliff:g></item> <item><xliff:g id="id">@string/status_bar_phone_signal</xliff:g></item> <item><xliff:g id="id">@string/status_bar_secure</xliff:g></item> <item><xliff:g id="id">@string/status_bar_media</xliff:g></item> <item><xliff:g id="id">@string/status_bar_managed_profile</xliff:g></item> <item><xliff:g id="id">@string/status_bar_cast</xliff:g></item> <item><xliff:g id="id">@string/status_bar_screen_record</xliff:g></item> Loading Loading @@ -96,6 +97,7 @@ <string translatable="false" name="status_bar_airplane">airplane</string> <string translatable="false" name="status_bar_sensors_off">sensors_off</string> <string translatable="false" name="status_bar_screen_record">screen_record</string> <string translatable="false" name="status_bar_media">media</string> <!-- Flag indicating whether the surface flinger has limited alpha compositing functionality in hardware. If set, the window Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2916,6 +2916,7 @@ <java-symbol type="string" name="status_bar_camera" /> <java-symbol type="string" name="status_bar_sensors_off" /> <java-symbol type="string" name="status_bar_screen_record" /> <java-symbol type="string" name="status_bar_media" /> <!-- Locale picker --> <java-symbol type="id" name="locale_search_menu" /> Loading packages/SystemUI/res/drawable/stat_sys_media.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2020 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. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:pathData="M5,7.81l0,8.38l6,-4.19z" android:fillColor="#000000"/> <path android:pathData="M13,8h2v8h-2z" android:fillColor="#000000"/> <path android:pathData="M17,8h2v8h-2z" android:fillColor="#000000"/> </vector> packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -790,6 +790,9 @@ <!-- Accessibility text describing sensors off active. [CHAR LIMIT=NONE] --> <string name="accessibility_sensors_off_active">Sensors off active</string> <!-- Accessibility text describing that media is playing. [CHAR LIMIT=NONE] --> <string name="accessibility_media_active">Media is active</string> <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_clear_all">Clear all notifications.</string> Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +35 −8 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.media.MediaData; import com.android.systemui.media.MediaDataManager; import com.android.systemui.qs.tiles.DndTile; import com.android.systemui.qs.tiles.RotationLockTile; import com.android.systemui.screenrecord.RecordingController; Loading Loading @@ -87,7 +89,7 @@ public class PhoneStatusBarPolicy DeviceProvisionedListener, KeyguardStateController.Callback, LocationController.LocationChangeCallback, RecordingController.RecordingStateChangeCallback { RecordingController.RecordingStateChangeCallback, MediaDataManager.Listener { private static final String TAG = "PhoneStatusBarPolicy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); Loading @@ -108,6 +110,7 @@ public class PhoneStatusBarPolicy private final String mSlotLocation; private final String mSlotSensorsOff; private final String mSlotScreenRecord; private final String mSlotMedia; private final int mDisplayId; private final SharedPreferences mSharedPreferences; private final DateFormatUtil mDateFormatUtil; Loading Loading @@ -135,6 +138,7 @@ public class PhoneStatusBarPolicy private final SensorPrivacyController mSensorPrivacyController; private final RecordingController mRecordingController; private final RingerModeTracker mRingerModeTracker; private final MediaDataManager mMediaDataManager; private boolean mZenVisible; private boolean mVolumeVisible; Loading @@ -159,6 +163,7 @@ public class PhoneStatusBarPolicy SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager, AlarmManager alarmManager, UserManager userManager, RecordingController recordingController, MediaDataManager mediaDataManager, @Nullable TelecomManager telecomManager, @DisplayId int displayId, @Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil, RingerModeTracker ringerModeTracker) { Loading @@ -185,6 +190,7 @@ public class PhoneStatusBarPolicy mUiBgExecutor = uiBgExecutor; mTelecomManager = telecomManager; mRingerModeTracker = ringerModeTracker; mMediaDataManager = mediaDataManager; mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot); Loading @@ -202,6 +208,7 @@ public class PhoneStatusBarPolicy mSlotSensorsOff = resources.getString(com.android.internal.R.string.status_bar_sensors_off); mSlotScreenRecord = resources.getString( com.android.internal.R.string.status_bar_screen_record); mSlotMedia = resources.getString(com.android.internal.R.string.status_bar_media); mDisplayId = displayId; mSharedPreferences = sharedPreferences; Loading Loading @@ -280,6 +287,11 @@ public class PhoneStatusBarPolicy mIconController.setIconVisibility(mSlotSensorsOff, mSensorPrivacyController.isSensorPrivacyEnabled()); // play/pause icon when media is active mIconController.setIcon(mSlotMedia, R.drawable.stat_sys_media, mResources.getString(R.string.accessibility_media_active)); mIconController.setIconVisibility(mSlotMedia, mMediaDataManager.hasActiveMedia()); // screen record mIconController.setIcon(mSlotScreenRecord, R.drawable.stat_sys_screen_record, null); mIconController.setIconVisibility(mSlotScreenRecord, false); Loading @@ -296,6 +308,7 @@ public class PhoneStatusBarPolicy mSensorPrivacyController.addCallback(mSensorPrivacyListener); mLocationController.addCallback(this); mRecordingController.addCallback(this); mMediaDataManager.addListener(this); mCommandQueue.addCallback(this); } Loading Loading @@ -700,4 +713,18 @@ public class PhoneStatusBarPolicy if (DEBUG) Log.d(TAG, "screenrecord: hiding icon"); mHandler.post(() -> mIconController.setIconVisibility(mSlotScreenRecord, false)); } @Override public void onMediaDataLoaded(String key, MediaData data) { updateMediaIcon(); } @Override public void onMediaDataRemoved(String key) { updateMediaIcon(); } private void updateMediaIcon() { mIconController.setIconVisibility(mSlotMedia, mMediaDataManager.hasActiveMedia()); } } Loading
core/res/res/values/config.xml +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ <item><xliff:g id="id">@string/status_bar_phone_evdo_signal</xliff:g></item> <item><xliff:g id="id">@string/status_bar_phone_signal</xliff:g></item> <item><xliff:g id="id">@string/status_bar_secure</xliff:g></item> <item><xliff:g id="id">@string/status_bar_media</xliff:g></item> <item><xliff:g id="id">@string/status_bar_managed_profile</xliff:g></item> <item><xliff:g id="id">@string/status_bar_cast</xliff:g></item> <item><xliff:g id="id">@string/status_bar_screen_record</xliff:g></item> Loading Loading @@ -96,6 +97,7 @@ <string translatable="false" name="status_bar_airplane">airplane</string> <string translatable="false" name="status_bar_sensors_off">sensors_off</string> <string translatable="false" name="status_bar_screen_record">screen_record</string> <string translatable="false" name="status_bar_media">media</string> <!-- Flag indicating whether the surface flinger has limited alpha compositing functionality in hardware. If set, the window Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2916,6 +2916,7 @@ <java-symbol type="string" name="status_bar_camera" /> <java-symbol type="string" name="status_bar_sensors_off" /> <java-symbol type="string" name="status_bar_screen_record" /> <java-symbol type="string" name="status_bar_media" /> <!-- Locale picker --> <java-symbol type="id" name="locale_search_menu" /> Loading
packages/SystemUI/res/drawable/stat_sys_media.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- ~ Copyright (C) 2020 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. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24"> <path android:pathData="M5,7.81l0,8.38l6,-4.19z" android:fillColor="#000000"/> <path android:pathData="M13,8h2v8h-2z" android:fillColor="#000000"/> <path android:pathData="M17,8h2v8h-2z" android:fillColor="#000000"/> </vector>
packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -790,6 +790,9 @@ <!-- Accessibility text describing sensors off active. [CHAR LIMIT=NONE] --> <string name="accessibility_sensors_off_active">Sensors off active</string> <!-- Accessibility text describing that media is playing. [CHAR LIMIT=NONE] --> <string name="accessibility_media_active">Media is active</string> <!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_clear_all">Clear all notifications.</string> Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +35 −8 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.media.MediaData; import com.android.systemui.media.MediaDataManager; import com.android.systemui.qs.tiles.DndTile; import com.android.systemui.qs.tiles.RotationLockTile; import com.android.systemui.screenrecord.RecordingController; Loading Loading @@ -87,7 +89,7 @@ public class PhoneStatusBarPolicy DeviceProvisionedListener, KeyguardStateController.Callback, LocationController.LocationChangeCallback, RecordingController.RecordingStateChangeCallback { RecordingController.RecordingStateChangeCallback, MediaDataManager.Listener { private static final String TAG = "PhoneStatusBarPolicy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); Loading @@ -108,6 +110,7 @@ public class PhoneStatusBarPolicy private final String mSlotLocation; private final String mSlotSensorsOff; private final String mSlotScreenRecord; private final String mSlotMedia; private final int mDisplayId; private final SharedPreferences mSharedPreferences; private final DateFormatUtil mDateFormatUtil; Loading Loading @@ -135,6 +138,7 @@ public class PhoneStatusBarPolicy private final SensorPrivacyController mSensorPrivacyController; private final RecordingController mRecordingController; private final RingerModeTracker mRingerModeTracker; private final MediaDataManager mMediaDataManager; private boolean mZenVisible; private boolean mVolumeVisible; Loading @@ -159,6 +163,7 @@ public class PhoneStatusBarPolicy SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager, AlarmManager alarmManager, UserManager userManager, RecordingController recordingController, MediaDataManager mediaDataManager, @Nullable TelecomManager telecomManager, @DisplayId int displayId, @Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil, RingerModeTracker ringerModeTracker) { Loading @@ -185,6 +190,7 @@ public class PhoneStatusBarPolicy mUiBgExecutor = uiBgExecutor; mTelecomManager = telecomManager; mRingerModeTracker = ringerModeTracker; mMediaDataManager = mediaDataManager; mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot); Loading @@ -202,6 +208,7 @@ public class PhoneStatusBarPolicy mSlotSensorsOff = resources.getString(com.android.internal.R.string.status_bar_sensors_off); mSlotScreenRecord = resources.getString( com.android.internal.R.string.status_bar_screen_record); mSlotMedia = resources.getString(com.android.internal.R.string.status_bar_media); mDisplayId = displayId; mSharedPreferences = sharedPreferences; Loading Loading @@ -280,6 +287,11 @@ public class PhoneStatusBarPolicy mIconController.setIconVisibility(mSlotSensorsOff, mSensorPrivacyController.isSensorPrivacyEnabled()); // play/pause icon when media is active mIconController.setIcon(mSlotMedia, R.drawable.stat_sys_media, mResources.getString(R.string.accessibility_media_active)); mIconController.setIconVisibility(mSlotMedia, mMediaDataManager.hasActiveMedia()); // screen record mIconController.setIcon(mSlotScreenRecord, R.drawable.stat_sys_screen_record, null); mIconController.setIconVisibility(mSlotScreenRecord, false); Loading @@ -296,6 +308,7 @@ public class PhoneStatusBarPolicy mSensorPrivacyController.addCallback(mSensorPrivacyListener); mLocationController.addCallback(this); mRecordingController.addCallback(this); mMediaDataManager.addListener(this); mCommandQueue.addCallback(this); } Loading Loading @@ -700,4 +713,18 @@ public class PhoneStatusBarPolicy if (DEBUG) Log.d(TAG, "screenrecord: hiding icon"); mHandler.post(() -> mIconController.setIconVisibility(mSlotScreenRecord, false)); } @Override public void onMediaDataLoaded(String key, MediaData data) { updateMediaIcon(); } @Override public void onMediaDataRemoved(String key) { updateMediaIcon(); } private void updateMediaIcon() { mIconController.setIconVisibility(mSlotMedia, mMediaDataManager.hasActiveMedia()); } }