Add remaining default media icons.
- Fix issue where strings were only in overlay and not in base resources Bug: 36778575 Test: Launch PiP activity with media session, ensure actions show Change-Id: I062b6c37ff4789bf375670e8ce872f28c578ffca
This commit is contained in:
28
packages/SystemUI/res/drawable/ic_skip_next_white.xml
Normal file
28
packages/SystemUI/res/drawable/ic_skip_next_white.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2017 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:fillColor="#FFFFFF"
|
||||
android:pathData="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z" />
|
||||
<path
|
||||
android:pathData="M0 0h24v24H0z" />
|
||||
</vector>
|
||||
28
packages/SystemUI/res/drawable/ic_skip_previous_white.xml
Normal file
28
packages/SystemUI/res/drawable/ic_skip_previous_white.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2017 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:fillColor="#FFFFFF"
|
||||
android:pathData="M6 6h2v12H6zm3.5 6l8.5 6V6z" />
|
||||
<path
|
||||
android:pathData="M0 0h24v24H0z" />
|
||||
</vector>
|
||||
@@ -40,7 +40,7 @@
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="-50dp"
|
||||
android:src="@drawable/ic_pause_white_24dp"
|
||||
android:src="@drawable/ic_pause_white"
|
||||
android:text="@string/pip_pause"
|
||||
android:visibility="gone" />
|
||||
</merge>
|
||||
|
||||
@@ -1897,6 +1897,18 @@
|
||||
<!-- PiP minimize description. [CHAR LIMIT=NONE] -->
|
||||
<string name="pip_minimize_description" translatable="false">Drag or fling the PIP to the edges of the screen to minimize it.</string>
|
||||
|
||||
<!-- Button to play the current media on picture-in-picture (PIP) [CHAR LIMIT=30] -->
|
||||
<string name="pip_play">Play</string>
|
||||
|
||||
<!-- Button to pause the current media on picture-in-picture (PIP) [CHAR LIMIT=30] -->
|
||||
<string name="pip_pause">Pause</string>
|
||||
|
||||
<!-- Button to skip to the next media on picture-in-picture (PIP) [CHAR LIMIT=30] -->
|
||||
<string name="pip_skip_to_next">Skip to next</string>
|
||||
|
||||
<!-- Button to skip to the prev media on picture-in-picture (PIP) [CHAR LIMIT=30] -->
|
||||
<string name="pip_skip_to_prev">Skip to previous</string>
|
||||
|
||||
<!-- Tuner string -->
|
||||
<string name="change_theme_reboot" translatable="false">Changing the theme requires a restart.</string>
|
||||
<!-- Tuner string -->
|
||||
|
||||
@@ -23,8 +23,4 @@
|
||||
<string name="pip_close">Close PIP</string>
|
||||
<!-- Button to move picture-in-picture (PIP) screen to the fullscreen in PIP menu [CHAR LIMIT=30] -->
|
||||
<string name="pip_fullscreen">Full screen</string>
|
||||
<!-- Button to play the current media on picture-in-picture (PIP) [CHAR LIMIT=30] -->
|
||||
<string name="pip_play">Play</string>
|
||||
<!-- Button to pause the current media on picture-in-picture (PIP) [CHAR LIMIT=30] -->
|
||||
<string name="pip_pause">Pause</string>
|
||||
</resources>
|
||||
|
||||
@@ -48,6 +48,8 @@ public class PipMediaController {
|
||||
|
||||
private static final String ACTION_PLAY = "com.android.systemui.pip.phone.PLAY";
|
||||
private static final String ACTION_PAUSE = "com.android.systemui.pip.phone.PAUSE";
|
||||
private static final String ACTION_NEXT = "com.android.systemui.pip.phone.NEXT";
|
||||
private static final String ACTION_PREV = "com.android.systemui.pip.phone.PREV";
|
||||
|
||||
/**
|
||||
* A listener interface to receive notification on changes to the media actions.
|
||||
@@ -67,6 +69,8 @@ public class PipMediaController {
|
||||
|
||||
private RemoteAction mPauseAction;
|
||||
private RemoteAction mPlayAction;
|
||||
private RemoteAction mNextAction;
|
||||
private RemoteAction mPrevAction;
|
||||
|
||||
private BroadcastReceiver mPlayPauseActionReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
@@ -76,6 +80,10 @@ public class PipMediaController {
|
||||
mMediaController.getTransportControls().play();
|
||||
} else if (action.equals(ACTION_PAUSE)) {
|
||||
mMediaController.getTransportControls().pause();
|
||||
} else if (action.equals(ACTION_NEXT)) {
|
||||
mMediaController.getTransportControls().skipToNext();
|
||||
} else if (action.equals(ACTION_PREV)) {
|
||||
mMediaController.getTransportControls().skipToPrevious();
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -95,6 +103,8 @@ public class PipMediaController {
|
||||
IntentFilter mediaControlFilter = new IntentFilter();
|
||||
mediaControlFilter.addAction(ACTION_PLAY);
|
||||
mediaControlFilter.addAction(ACTION_PAUSE);
|
||||
mediaControlFilter.addAction(ACTION_NEXT);
|
||||
mediaControlFilter.addAction(ACTION_PREV);
|
||||
mContext.registerReceiver(mPlayPauseActionReceiver, mediaControlFilter);
|
||||
|
||||
createMediaActions();
|
||||
@@ -143,11 +153,21 @@ public class PipMediaController {
|
||||
int state = mMediaController.getPlaybackState().getState();
|
||||
boolean isPlaying = MediaSession.isActiveState(state);
|
||||
long actions = mMediaController.getPlaybackState().getActions();
|
||||
|
||||
// Prev action
|
||||
mPrevAction.setEnabled((actions & PlaybackState.ACTION_SKIP_TO_PREVIOUS) != 0);
|
||||
mediaActions.add(mPrevAction);
|
||||
|
||||
// Play/pause action
|
||||
if (!isPlaying && ((actions & PlaybackState.ACTION_PLAY) != 0)) {
|
||||
mediaActions.add(mPlayAction);
|
||||
} else if (isPlaying && ((actions & PlaybackState.ACTION_PAUSE) != 0)) {
|
||||
mediaActions.add(mPauseAction);
|
||||
}
|
||||
|
||||
// Next action
|
||||
mNextAction.setEnabled((actions & PlaybackState.ACTION_SKIP_TO_NEXT) != 0);
|
||||
mediaActions.add(mNextAction);
|
||||
return mediaActions;
|
||||
}
|
||||
|
||||
@@ -157,15 +177,27 @@ public class PipMediaController {
|
||||
private void createMediaActions() {
|
||||
String pauseDescription = mContext.getString(R.string.pip_pause);
|
||||
mPauseAction = new RemoteAction(Icon.createWithResource(mContext,
|
||||
R.drawable.ic_pause_white_24dp), pauseDescription, pauseDescription,
|
||||
R.drawable.ic_pause_white), pauseDescription, pauseDescription,
|
||||
PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_PAUSE),
|
||||
FLAG_UPDATE_CURRENT));
|
||||
|
||||
String playDescription = mContext.getString(R.string.pip_play);
|
||||
mPlayAction = new RemoteAction(Icon.createWithResource(mContext,
|
||||
R.drawable.ic_play_arrow_white_24dp), playDescription, playDescription,
|
||||
R.drawable.ic_play_arrow_white), playDescription, playDescription,
|
||||
PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_PLAY),
|
||||
FLAG_UPDATE_CURRENT));
|
||||
|
||||
String nextDescription = mContext.getString(R.string.pip_skip_to_next);
|
||||
mNextAction = new RemoteAction(Icon.createWithResource(mContext,
|
||||
R.drawable.ic_skip_next_white), nextDescription, nextDescription,
|
||||
PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_NEXT),
|
||||
FLAG_UPDATE_CURRENT));
|
||||
|
||||
String prevDescription = mContext.getString(R.string.pip_skip_to_prev);
|
||||
mPrevAction = new RemoteAction(Icon.createWithResource(mContext,
|
||||
R.drawable.ic_skip_previous_white), prevDescription, prevDescription,
|
||||
PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_PREV),
|
||||
FLAG_UPDATE_CURRENT));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -186,10 +186,10 @@ public class PipControlsView extends LinearLayout {
|
||||
} else {
|
||||
mPlayPauseButtonView.setVisibility(View.VISIBLE);
|
||||
if (state == PipManager.PLAYBACK_STATE_PLAYING) {
|
||||
mPlayPauseButtonView.setImageResource(R.drawable.ic_pause_white_24dp);
|
||||
mPlayPauseButtonView.setImageResource(R.drawable.ic_pause_white);
|
||||
mPlayPauseButtonView.setText(R.string.pip_pause);
|
||||
} else {
|
||||
mPlayPauseButtonView.setImageResource(R.drawable.ic_play_arrow_white_24dp);
|
||||
mPlayPauseButtonView.setImageResource(R.drawable.ic_play_arrow_white);
|
||||
mPlayPauseButtonView.setText(R.string.pip_play);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user