From 1c18828d20807342d37000746b18a3c1696f3b2e Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Mon, 8 Aug 2011 22:27:58 -0700 Subject: [PATCH] Fix 5044158: Integrate music transport control into LockScreen This integrates a new version of TransportControlView into LockScreen and adds plumbing to handle new AudioService events to show/hide the view and updates the required assets for all devices. Updated to use new AudioManager API. Since the current API only supports one RCD, the handler now lives in TransportControlView. Change-Id: I220d4dd760bef35bd84209adc3c5829bf5bc9a2c --- .../internal/widget/TransportControlView.java | 381 +++++++++++++++--- .../ic_lockscreen_player_background.9.png | Bin 0 -> 243 bytes .../res/drawable-hdpi/ic_media_embed_play.png | Bin 1112 -> 5320 bytes .../ic_lockscreen_player_background.9.png | Bin 0 -> 230 bytes .../res/drawable-mdpi/ic_media_embed_play.png | Bin 934 -> 3159 bytes core/res/res/drawable-mdpi/ic_media_ff.png | Bin 929 -> 1410 bytes .../res/drawable-mdpi/ic_media_fullscreen.png | Bin 1396 -> 2125 bytes core/res/res/drawable-mdpi/ic_media_next.png | Bin 864 -> 1211 bytes core/res/res/drawable-mdpi/ic_media_pause.png | Bin 561 -> 1065 bytes core/res/res/drawable-mdpi/ic_media_play.png | Bin 918 -> 1360 bytes .../res/drawable-mdpi/ic_media_previous.png | Bin 858 -> 1211 bytes core/res/res/drawable-mdpi/ic_media_rew.png | Bin 997 -> 1410 bytes .../ic_lockscreen_player_background.9.png | Bin 0 -> 245 bytes .../keyguard_screen_password_landscape.xml | 2 + .../keyguard_screen_password_portrait.xml | 2 + .../res/layout/keyguard_screen_tab_unlock.xml | 2 + .../keyguard_screen_tab_unlock_land.xml | 2 + .../keyguard_screen_unlock_landscape.xml | 2 + .../keyguard_screen_unlock_portrait.xml | 2 + .../res/layout/keyguard_transport_control.xml | 131 ++++-- .../impl/KeyguardStatusViewManager.java | 33 +- .../policy/impl/KeyguardUpdateMonitor.java | 25 +- .../policy/impl/LockPatternKeyguardView.java | 52 ++- .../policy/impl/PasswordUnlockScreen.java | 3 +- 24 files changed, 485 insertions(+), 152 deletions(-) create mode 100644 core/res/res/drawable-hdpi/ic_lockscreen_player_background.9.png create mode 100644 core/res/res/drawable-mdpi/ic_lockscreen_player_background.9.png create mode 100644 core/res/res/drawable-xhdpi/ic_lockscreen_player_background.9.png diff --git a/core/java/com/android/internal/widget/TransportControlView.java b/core/java/com/android/internal/widget/TransportControlView.java index 3961de3195de0..1c47ca88ab7da 100644 --- a/core/java/com/android/internal/widget/TransportControlView.java +++ b/core/java/com/android/internal/widget/TransportControlView.java @@ -16,88 +16,369 @@ package com.android.internal.widget; -import com.android.internal.R; +import java.lang.ref.WeakReference; +import com.android.internal.widget.LockScreenWidgetCallback; +import com.android.internal.widget.LockScreenWidgetInterface; + +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; import android.media.AudioManager; +import android.media.MediaMetadataRetriever; +import android.media.RemoteControlClient; +import android.media.IRemoteControlDisplay; +import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.RemoteException; +import android.text.Spannable; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; import android.util.AttributeSet; +import android.util.Log; +import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; -import android.widget.LinearLayout; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; -/** - * A special widget for displaying audio playback ("transport controls") in LockScreen. - * - */ -public class TransportControlView extends LinearLayout implements LockScreenWidgetInterface, - OnClickListener { - private static final String TAG = "TransportControlView"; - static final int sViewIds[] = { R.id.control_prev, R.id.control_pauseplay, R.id.control_next }; - protected static final int AUDIO_FOCUS_CHANGED = 100; - private LockScreenWidgetCallback mCallback; +import com.android.internal.R; + +public class TransportControlView extends FrameLayout implements OnClickListener, + LockScreenWidgetInterface { + + private static final int MSG_UPDATE_STATE = 100; + private static final int MSG_SET_METADATA = 101; + private static final int MSG_SET_TRANSPORT_CONTROLS = 102; + private static final int MSG_SET_ARTWORK = 103; + private static final int MSG_SET_GENERATION_ID = 104; + private static final int MAXDIM = 512; + protected static final boolean DEBUG = true; + protected static final String TAG = "TransportControlView"; + + private ImageView mAlbumArt; + private TextView mTrackTitle; + private ImageView mBtnPrev; + private ImageView mBtnPlay; + private ImageView mBtnNext; + private int mClientGeneration; + private Metadata mMetadata = new Metadata(); + private boolean mAttached; + private ComponentName mClientName; + private int mTransportControlFlags; + private int mPlayState; + private AudioManager mAudioManager; + private LockScreenWidgetCallback mWidgetCallbacks; + private IRemoteControlDisplayWeak mIRCD; + + /** + * The metadata which should be populated into the view once we've been attached + */ + private Bundle mPopulateMetadataWhenAttached = null; + + // This handler is required to ensure messages from IRCD are handled in sequence and on + // the UI thread. private Handler mHandler = new Handler() { + @Override public void handleMessage(Message msg) { - switch (msg.what){ - case AUDIO_FOCUS_CHANGED: - handleAudioFocusChange(msg.arg1); + switch (msg.what) { + case MSG_UPDATE_STATE: + if (mClientGeneration == msg.arg1) updatePlayPauseState(msg.arg2); + break; + + case MSG_SET_METADATA: + if (mClientGeneration == msg.arg1) updateMetadata((Bundle) msg.obj); + break; + + case MSG_SET_TRANSPORT_CONTROLS: + if (mClientGeneration == msg.arg1) updateTransportControls(msg.arg2); + break; + + case MSG_SET_ARTWORK: + if (mClientGeneration == msg.arg1) { + mMetadata.bitmap = (Bitmap) msg.obj; + mAlbumArt.setImageBitmap(mMetadata.bitmap); + } + break; + + case MSG_SET_GENERATION_ID: + if (mWidgetCallbacks != null) { + boolean clearing = msg.arg2 != 0; + if (DEBUG) Log.v(TAG, "New genId = " + msg.arg1 + ", clearing = " + clearing); + if (!clearing) { + mWidgetCallbacks.requestShow(TransportControlView.this); + } else { + mWidgetCallbacks.requestHide(TransportControlView.this); + } + } + mClientGeneration = msg.arg1; + mClientName = (ComponentName) msg.obj; + break; + } } }; - AudioManager.OnAudioFocusChangeListener mAudioFocusChangeListener = - new AudioManager.OnAudioFocusChangeListener() { - public void onAudioFocusChange(final int focusChange) { - mHandler.obtainMessage(AUDIO_FOCUS_CHANGED, focusChange, 0).sendToTarget(); - } - }; + /** + * This class is required to have weak linkage to the current TransportControlView + * because the remote process can hold a strong reference to this binder object and + * we can't predict when it will be GC'd in the remote process. Without this code, it + * would allow a heavyweight object to be held on this side of the binder when there's + * no requirement to run a GC on the other side. + */ + private static class IRemoteControlDisplayWeak extends IRemoteControlDisplay.Stub { + private WeakReference mLocalHandler; - public TransportControlView(Context context) { - this(context, null); - } + IRemoteControlDisplayWeak(Handler handler) { + mLocalHandler = new WeakReference(handler); + } + + public void setPlaybackState(int generationId, int state) { + Handler handler = mLocalHandler.get(); + if (handler != null) { + handler.obtainMessage(MSG_UPDATE_STATE, generationId, state).sendToTarget(); + } + } + + public void setMetadata(int generationId, Bundle metadata) { + Handler handler = mLocalHandler.get(); + if (handler != null) { + handler.obtainMessage(MSG_SET_METADATA, generationId, 0, metadata).sendToTarget(); + } + } + + public void setTransportControlFlags(int generationId, int flags) { + Handler handler = mLocalHandler.get(); + if (handler != null) { + handler.obtainMessage(MSG_SET_TRANSPORT_CONTROLS, generationId, flags) + .sendToTarget(); + } + } + + public void setArtwork(int generationId, Bitmap bitmap) { + Handler handler = mLocalHandler.get(); + if (handler != null) { + handler.obtainMessage(MSG_SET_ARTWORK, generationId, 0, bitmap).sendToTarget(); + } + } + + public void setAllMetadata(int generationId, Bundle metadata, Bitmap bitmap) { + Handler handler = mLocalHandler.get(); + if (handler != null) { + handler.obtainMessage(MSG_SET_METADATA, generationId, 0, metadata).sendToTarget(); + handler.obtainMessage(MSG_SET_ARTWORK, generationId, 0, bitmap).sendToTarget(); + } + } + + public void setCurrentClientId(int clientGeneration, ComponentName clientEventReceiver, + boolean clearing) throws RemoteException { + Handler handler = mLocalHandler.get(); + if (handler != null) { + handler.obtainMessage(MSG_SET_GENERATION_ID, + clientGeneration, (clearing ? 1 : 0), clientEventReceiver).sendToTarget(); + } + } + }; public TransportControlView(Context context, AttributeSet attrs) { super(context, attrs); + Log.v(TAG, "Create TCV " + this); + mAudioManager = new AudioManager(mContext); + mIRCD = new IRemoteControlDisplayWeak(mHandler); } - protected void handleAudioFocusChange(int focusChange) { - // TODO - } - - public void setCallback(LockScreenWidgetCallback callback) { - mCallback = callback; + private void updateTransportControls(int transportControlFlags) { + mTransportControlFlags = transportControlFlags; } @Override public void onFinishInflate() { - for (int i = 0; i < sViewIds.length; i++) { - View view = findViewById(sViewIds[i]); - if (view != null) { - view.setOnClickListener(this); + super.onFinishInflate(); + mTrackTitle = (TextView) findViewById(R.id.title); + mTrackTitle.setSelected(true); // enable marquee + mAlbumArt = (ImageView) findViewById(R.id.albumart); + mBtnPrev = (ImageView) findViewById(R.id.btn_prev); + mBtnPlay = (ImageView) findViewById(R.id.btn_play); + mBtnNext = (ImageView) findViewById(R.id.btn_next); + final View buttons[] = { mBtnPrev, mBtnPlay, mBtnNext }; + for (View view : buttons) { + view.setOnClickListener(this); + } + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + if (mPopulateMetadataWhenAttached != null) { + updateMetadata(mPopulateMetadataWhenAttached); + mPopulateMetadataWhenAttached = null; + } + if (!mAttached) { + if (DEBUG) Log.v(TAG, "Registering TCV " + this); + mAudioManager.registerRemoteControlDisplay(mIRCD); + } + mAttached = true; + } + + @Override + public void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (mAttached) { + if (DEBUG) Log.v(TAG, "Unregistering TCV " + this); + mAudioManager.unregisterRemoteControlDisplay(mIRCD); + } + mAttached = false; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int dim = Math.min(MAXDIM, Math.max(getWidth(), getHeight())); +// Log.v(TAG, "setting max bitmap size: " + dim + "x" + dim); +// mAudioManager.remoteControlDisplayUsesBitmapSize(mIRCD, dim, dim); + } + + class Metadata { + private String artist; + private String trackTitle; + private String albumTitle; + private Bitmap bitmap; + + public String toString() { + return "Metadata[artist=" + artist + " trackTitle=" + trackTitle + " albumTitle=" + albumTitle + "]"; + } + } + + private String getMdString(Bundle data, int id) { + return data.getString(Integer.toString(id)); + } + + private void updateMetadata(Bundle data) { + if (mAttached) { + mMetadata.artist = getMdString(data, MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST); + mMetadata.trackTitle = getMdString(data, MediaMetadataRetriever.METADATA_KEY_TITLE); + mMetadata.albumTitle = getMdString(data, MediaMetadataRetriever.METADATA_KEY_ALBUM); + populateMetadata(); + } else { + mPopulateMetadataWhenAttached = data; + } + } + + /** + * Populates the given metadata into the view + */ + private void populateMetadata() { + StringBuilder sb = new StringBuilder(); + int trackTitleLength = 0; + if (!TextUtils.isEmpty(mMetadata.trackTitle)) { + sb.append(mMetadata.trackTitle); + trackTitleLength = mMetadata.trackTitle.length(); + } + if (!TextUtils.isEmpty(mMetadata.artist)) { + if (sb.length() != 0) { + sb.append(" - "); + } + sb.append(mMetadata.artist); + } + if (!TextUtils.isEmpty(mMetadata.albumTitle)) { + if (sb.length() != 0) { + sb.append(" - "); + } + sb.append(mMetadata.albumTitle); + } + mTrackTitle.setText(sb.toString(), TextView.BufferType.SPANNABLE); + Spannable str = (Spannable) mTrackTitle.getText(); + if (trackTitleLength != 0) { + str.setSpan(new ForegroundColorSpan(0xffffffff), 0, trackTitleLength, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + trackTitleLength++; + } + if (sb.length() > trackTitleLength) { + str.setSpan(new ForegroundColorSpan(0x7fffffff), trackTitleLength, sb.length(), + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } + + mAlbumArt.setImageBitmap(mMetadata.bitmap); + final int flags = mTransportControlFlags; + setVisibilityBasedOnFlag(mBtnPrev, flags, RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS); + setVisibilityBasedOnFlag(mBtnNext, flags, RemoteControlClient.FLAG_KEY_MEDIA_NEXT); + setVisibilityBasedOnFlag(mBtnPrev, flags, + RemoteControlClient.FLAG_KEY_MEDIA_PLAY + | RemoteControlClient.FLAG_KEY_MEDIA_PAUSE + | RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE + | RemoteControlClient.FLAG_KEY_MEDIA_STOP); + + updatePlayPauseState(mPlayState); + } + + private static void setVisibilityBasedOnFlag(View view, int flags, int flag) { + if ((flags & flag) != 0) { + view.setVisibility(View.VISIBLE); + } else { + view.setVisibility(View.GONE); + } + } + + private void updatePlayPauseState(int state) { + if (DEBUG) Log.v(TAG, + "updatePlayPauseState(), old=" + mPlayState + ", state=" + state); + if (state == mPlayState) { + return; + } + switch (state) { + case RemoteControlClient.PLAYSTATE_PLAYING: + mBtnPlay.setImageResource(com.android.internal.R.drawable.ic_media_pause); + break; + + case RemoteControlClient.PLAYSTATE_BUFFERING: + mBtnPlay.setImageResource(com.android.internal.R.drawable.ic_media_stop); + break; + + case RemoteControlClient.PLAYSTATE_PAUSED: + default: + mBtnPlay.setImageResource(com.android.internal.R.drawable.ic_media_play); + break; + } + mPlayState = state; + } + + public void onClick(View v) { + int keyCode = -1; + if (v == mBtnPrev) { + keyCode = KeyEvent.KEYCODE_MEDIA_PREVIOUS; + } else if (v == mBtnNext) { + keyCode = KeyEvent.KEYCODE_MEDIA_NEXT; + } else if (v == mBtnPlay) { + keyCode = KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE; + + } + if (keyCode != -1) { + sendMediaButtonClick(keyCode); + if (mWidgetCallbacks != null) { + mWidgetCallbacks.userActivity(this); } } } - public void onClick(View v) { - switch (v.getId()) { - case R.id.control_prev: - // TODO - break; + private void sendMediaButtonClick(int keyCode) { + // TODO: target to specific player based on mClientName + KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode); + Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON); + intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); + getContext().sendOrderedBroadcast(intent, null); - case R.id.control_pauseplay: - // TODO - break; + keyEvent = new KeyEvent(KeyEvent.ACTION_UP, keyCode); + intent = new Intent(Intent.ACTION_MEDIA_BUTTON); + intent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent); + getContext().sendOrderedBroadcast(intent, null); + } - case R.id.control_next: - // TODO - break; - } - // Have any button click extend lockscreen's timeout. - if (mCallback != null) { - mCallback.userActivity(this); - } + public void setCallback(LockScreenWidgetCallback callback) { + mWidgetCallbacks = callback; } } diff --git a/core/res/res/drawable-hdpi/ic_lockscreen_player_background.9.png b/core/res/res/drawable-hdpi/ic_lockscreen_player_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b18735871884e1ae8af4b1fe6ddb14e7296ee098 GIT binary patch literal 243 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 diff --git a/core/res/res/drawable-mdpi/ic_lockscreen_player_background.9.png b/core/res/res/drawable-mdpi/ic_lockscreen_player_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfd1afbeff81a0e6c8c142fef8a705d15b448ad GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^tU!E`gAGWs9H_VhqKch7LpXq-h9ji|$mcBZh%9Dc z;O+!rM)Q-W*8&AQJY5_^B3j?haO7)H;9*h!p*a7==9;-*7rABlDs+6@uvb7W_!fis zfio6|81g>bEW6AgmcVvRWM&fr*f+4{9Dm`XefG8N1TJlpyR-CcO*S7tcETw#WbMt3 zit|OeeCM6%GhXFie)aaO`o!nfc^f(+hxZ OV(@hJb6Mw<&;$TDwo_gJ literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/ic_media_embed_play.png b/core/res/res/drawable-mdpi/ic_media_embed_play.png index 3576ce53e4219941a942e5cb5d85ec2dc18061e2..fc5d8c622f6acb78481932c498d51fb70b075dfc 100644 GIT binary patch delta 3122 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 diff --git a/core/res/res/drawable-mdpi/ic_media_fullscreen.png b/core/res/res/drawable-mdpi/ic_media_fullscreen.png index 960aa851053efa97e19da2ed7d2001215f4c2686..1c60e15864779436da107f1792a7ee43f639e671 100644 GIT binary patch delta 2080 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 KMNUMnLSTY_Pr}Ur delta 1345 zcmV-H1-|;t5cCR=8Gi%-007x@vVQ;o00Lr5M??VshmXv^00009a7bBm000XT000XT z0n*)m`~Uy|33hNnX8-^IAOHXWAOMH@oSgsw1XxK#K~zY`#Z^scR96^1-@Wh6Z)Qv~ z`O%3ajXE(_5fub~k}4>O3oXQ2TBH$zo07WHRW~8~y0VroM1M$V>7s3*wiF{$I!)9< zD5hf3IBGO8w)vS%I`PfSoA>Vhx)>)Drzx~_;kUYQ4(EQH@1E}huet~TdJ1PzhB0`F zMP--ndr_>e_>!7jdTQCS5wv%1OTj`3l0200=g)G z1q34zefp#kWX)^@=Mxvd=J14xJTPH$SY+NkRvmLKA`-53zAqWEP_^7R1}hTMFMPsh z1Q#ay2U3>r+I$`an$P>LrL6veg$W}le8MOFBv=*wEq^)x!cNw}?9+S6pvIH{5s?6< zg8E)^_GtlK&Mq4rGaw}E*q$>-=SX!?)T_OkqN;0-&K!;HVJ&2VRjQHzYc{;8CyARR zw2HNLA4*cLQ`M=uTxXKH55?NFB9XY6dSZBW>4g+c1Qh(n{CNMs-Q-!0?bU9q{WN_x zcK8jobgu+}{baJy!p*mC&sjAh{$QP1(+m!;p8R!M zs^Esu8*d6p^8U~#SJsG>bN7L5>POx&L2)h$z<`mm>+&49Nj;E8%c$3 znbVWC?xU9NiR%{zBP=d@X0lOd%5zm(jCje-bAK?Amp*yNS<4j7ofM(h{J&*FW7*FE z|B1zon*)!tdePU%&z{m2Gp9Vt!I`o!5da1ed9rNpTN2ae|x_kE#|XJdNnzWTS{Z=j)vzHMSG z-1_GUdy6xXxAswdX^g^QeK5GwE7MKp_9S&5YH0`7ZJxgUN2Rm+^>9a*kddbK=1&g; zJFJ#fVPj3sRbxWLdC7w`Y#E|c$LcF4oqz7bE$!L`Jsug)cxSvbMKqi3z03;sB|Pd}nSdwnr;rB!)g7T&28U0e08+s#_Y#PEf|2>bfwjGXcHNBF{EVpvGlvE5Zot}W;v(nthoMIv$I+<)a7 zmY4XMEo{Nh734~ENha*HeQ%m2_&D3^L?eIssl99 z=*$9Wbf(if`o)#(ccrCjCM#bO&`uIOtdT5R>!S<;M%fs!cFmWsb!h$4Zu_4f%ikx0 zfBCh&`uYp{hW)u2$)P3y000$qMObu0a%Ew3X>V>IRB3Hx05>l(HZL(T?SB!klez~Q z7dS03HB>P)Ix{gkGBzzRH##sd*y3N~lj{c>OE@htHB>P)Ix{djGdV3VH##sde4qRl z0000SbVXQnQ*UN;cVTj606}DLVr3vkX>w(EZ*psMAVX6%akb+%00000NkvXXu0mjf Dy901| diff --git a/core/res/res/drawable-mdpi/ic_media_next.png b/core/res/res/drawable-mdpi/ic_media_next.png index a6feed0e9e385aa8594d729964218c2830392eda..bbe311b76fdaa0b8acb3bba2a0dca3b7eac725f2 100644 GIT binary patch delta 1159 zcmV;21bF-42D=H68Gi-<0047(dh`GQ00v@9M??Vs0RI60puMM)00009a7bBm0000; z0000;07l7cJ^%m!33hNnX8-^IAOHXWAOMH@oSgsw1HVZ`K~z}7?Uzl6TtyJaf7Sio zd~Ig3yU|@SxkP0T9+ZeExTpsaBRlxD$h*_Z<%+syL{B{OE%YmT?|RFMZH%L1aw zJg-y$qlz@D*nhwxod_SrI1vf@q8bBSW8=#$d0G5IrF$Km&1RGlF^9yuk5Nx;{9^!pSx^aS=oiGmAprgYb^#~ueVBy{r`Y%I^L)LuN-r?n&QsKZ7$pXjy9k{U zQhY^AlYh`^qQs=^fIoq|fdy600;dnW!ev&`YYsGtRmGMZvRH^B3IR7I>(Xmzfem0& z;V^Lao0B}GpRxw1NODz89jk-*5A{Ns2L#2^+M>Xu3s!(JRZfWT2v7sMfT>snEp~qy zfB}%oP?-f{5&i%k03x6Rh&3Z5&|=LrTTf!~4SA{>9>O=<^cd9-<$D%qNU1t)?__YI|@Bvil|L!?O- zG=J0o-$7XzpCdRr&;6mrI?u0bAF{zBVX9O3mYx-QMW-JHK-`Pj6v3+UC2$7#?wM2E zapW%JMLohRz{ zXp5w|A=q|A=j5|EYpI<7f%eB=QEOCCuYYubUN#h?_5%ty5xTJ>e07S+2d9yh4VFak zGUy4!E2dE)IPxB{ypG#HMJ>}06ndZxfLBGW!LN6Sye6#?gQQFyfN`GqwrT9ltw<*# z&U8foDhd0edfism52F`B+R@+^q{d5o!m>)(-|Ta&Iaz;n8Q!)Ak4UOiAAEE)4(M`_JqL@;D1TB8wRq zxP?HN@zUM8KOn)f0>^Y9tpLXDzvj#ZYIE^)aSZV|{&vdgY~etWWBZHK)h2JrOyW_I za1DvtuxN*di;KA6?72}3waphjNPd|7GVGW9jzV>gbuB`H8Lqz$Xe9-dYi(m)sWIt7 z!z{BcXG@;ldz=(BS7ma`rQH2T56rQAUVeUO`j3X(iQk{T`>(-#z@wHY?@DjJ$9LCF zzjL&{In-D)ygTR;`r7E3?$L`;@`V}^QR_Ktw)$um>^{q(GDGOw23bDwN~b9*o(xSB zCmgQ#QAo?QoFdX&vFpN~hMtIYO9{XC@8URE*?1!VWg5Jkb|@i1;dXt2|G_OwZP#~( z%QdW!U&!Qc{`BbS>waFprrs@7-eCV&=b)jJmhluxF3srmCNYuB3<7HudJf;TzV81f zswYJM>G>t4(*(|(5jfKO(>FSSsiVQ;)t{@2-xmkBZh2#@b0g1C*sAmc|B?pg<9T;& zu1CL%yPK&op?=;yE(fLr(Vls`3NpT(tk`%-YrQH1j}l{=-?#Xi=HI8y%qVV%Qg&I> z^I+oThM2F)965n=8P0UI#QrsT8?of$G6t3nOcNvK)E3l#F%|stD*Aq7bWH3id-?xN zZ+N$#%HHhuthIdS%BHUMYog1J{I8K`Fg(DcBfji-+`kSsA^9NvXXh62cV)+0Gl+0% z{Qmspv3cmkm}56S<}dEZ3UFZv`MmxP!wW{sY2RKvJYLlEc=GV3PTpt;s;Mpkur znegk}y{*dmr?1AV&ini`aQW^EV8RkDag8W(E=o--$;{7F2+7P%WiZz_GSfFSd|NNL z9;iSSq#z}+B-JVzq$-uc$iUE0*T6#8&@{x*#LC#v%E(ODz}(8f;Krl)$0!tU1F|7FKdq!Zu_%?nF(p4KRlzN@D78GlD7#p}IoPyt>ti#Z OItEWyKbLh*2~7Y`eP!1G diff --git a/core/res/res/drawable-mdpi/ic_media_pause.png b/core/res/res/drawable-mdpi/ic_media_pause.png index 548ba02193114323c7b497ef388003b0d463f8fb..e4e8d86b62a63c25d6f4b3a60dbceb4ef541068f 100644 GIT binary patch delta 998 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 FO#n9(b*umY diff --git a/core/res/res/drawable-mdpi/ic_media_previous.png b/core/res/res/drawable-mdpi/ic_media_previous.png index 0163d094596d0bbde122ea7cb46f1fd936ca1de6..e9abc7f3bd818f03981517d6c294672bbdfba7f1 100644 GIT binary patch delta 1202 zcmcb`wwrT;WIY=L14D6D)fXVemgMd3!tfsi7wla=87RV8;1O92q&>jc?PRtcNU*HH zF&#)NfN}e;Idd5pnD=|SIEF+VemmW}Lnc(DZGZ9Wu<&wU1)YJ7GcI8Mj!DCa%r(f}4s>8s98xdZ1J&$?4)EIOWLH4!tA;ZsW^obKJ|r zukJnW8d|PpZ2NbH_|N~p=WUmtYkmFAe)gJu1s{a}oYDIQwbw2amp-Z& z)fSk*AN(ikKvzQV!BXT$x!UH^ab|5?0yV{r6_OgFVlu`>gY zwutRkRf~vFEcNP|z_>1c#V^f-h68La;?F(L?Q74KN&obB`AI472x$YhD-96~Gu$;wS%Pmmzp=TUCEB!; zRjU>JPijTyDgWY`_@$X4P}8`2DBfZ#(<)i^%UsGxQt68(1P<9f?ufu&U+D zdS&L#4jQ>if-E0a-C?L%P%!_1(S-+Dw-^J~3$9q_dpM9Ypz5ZE4(FaF8-f#JiXQmM zGJL8LzHlN*Vgn<4>jLqKJUikS1VxqlGYDQ_e6Uz3py#d#8S<;!iLge}CbFV9JI_@eL7v{frSh@QCvr}&h6&3vYEs_s)#2&>Y$3!4}{Bd1Q}99$ZDD$}Zlzmz4Dv zEnNEPaK4FujdRS}1g_Ko)ehyP_lC>Q7rb1^zF@A<jcYRi(LIUL#Nnc;+>To%Vu6+IuqO(<}@i~$0AA1>kN!3c^eCIE+}QMW0YU2`g)au(={ItvDsUK+@qF+yI(t3aN%u3 z*!}mDB!H3v0@tPowC}mLdF%TV*S02}XPsSdx#x?mc+Rz-8V9bgP5#gHT(86|Zo9V@ zFmJ1txJHzuB$lLFB^RXvDF!10LqlByV_id&5JPh-14Aogb6o=zopr0KKsp-2eap literal 858 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 R<2C>Q002ovPDHLkV1g*7ueJaH diff --git a/core/res/res/drawable-xhdpi/ic_lockscreen_player_background.9.png b/core/res/res/drawable-xhdpi/ic_lockscreen_player_background.9.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb0cbc91b95ebb4249b9e6f930f4fdaf7cf24d1 GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^>3c19T#Tr>mdKI;Vst0Mhkc-v9sr literal 0 HcmV?d00001 diff --git a/core/res/res/layout/keyguard_screen_password_landscape.xml b/core/res/res/layout/keyguard_screen_password_landscape.xml index 12df99ef414a9..694db50a84ee4 100644 --- a/core/res/res/layout/keyguard_screen_password_landscape.xml +++ b/core/res/res/layout/keyguard_screen_password_landscape.xml @@ -186,6 +186,8 @@ android:layout_rowSpan="6" android:layout_columnSpan="1" android:layout_gravity="fill" + android:layout_width="0dip" + android:layout_height="0dip" /> diff --git a/core/res/res/layout/keyguard_screen_password_portrait.xml b/core/res/res/layout/keyguard_screen_password_portrait.xml index 6145e47fb871a..cf3bd4239a06c 100644 --- a/core/res/res/layout/keyguard_screen_password_portrait.xml +++ b/core/res/res/layout/keyguard_screen_password_portrait.xml @@ -174,6 +174,8 @@ android:layout_rowSpan="3" android:layout_columnSpan="1" android:layout_gravity="fill" + android:layout_width="0dip" + android:layout_height="0dip" /> diff --git a/core/res/res/layout/keyguard_screen_tab_unlock.xml b/core/res/res/layout/keyguard_screen_tab_unlock.xml index 6016d4e3dc6a6..a42d6cb94a1b4 100644 --- a/core/res/res/layout/keyguard_screen_tab_unlock.xml +++ b/core/res/res/layout/keyguard_screen_tab_unlock.xml @@ -188,6 +188,8 @@ android:layout_rowSpan="4" android:layout_columnSpan="1" android:layout_gravity="fill" + android:layout_width="0dip" + android:layout_height="0dip" /> diff --git a/core/res/res/layout/keyguard_screen_tab_unlock_land.xml b/core/res/res/layout/keyguard_screen_tab_unlock_land.xml index 0568dd9ba82d8..b716c29853202 100644 --- a/core/res/res/layout/keyguard_screen_tab_unlock_land.xml +++ b/core/res/res/layout/keyguard_screen_tab_unlock_land.xml @@ -155,6 +155,8 @@ android:layout_rowSpan="5" android:layout_columnSpan="1" android:layout_gravity="fill" + android:layout_width="0dip" + android:layout_height="0dip" /> diff --git a/core/res/res/layout/keyguard_screen_unlock_landscape.xml b/core/res/res/layout/keyguard_screen_unlock_landscape.xml index 9b287310696de..d71dbffd8f9df 100644 --- a/core/res/res/layout/keyguard_screen_unlock_landscape.xml +++ b/core/res/res/layout/keyguard_screen_unlock_landscape.xml @@ -156,6 +156,8 @@ android:layout_rowSpan="5" android:layout_columnSpan="1" android:layout_gravity="fill" + android:layout_width="0dip" + android:layout_height="0dip" /> diff --git a/core/res/res/layout/keyguard_screen_unlock_portrait.xml b/core/res/res/layout/keyguard_screen_unlock_portrait.xml index 433dda7c4eff8..64c479f32c52d 100644 --- a/core/res/res/layout/keyguard_screen_unlock_portrait.xml +++ b/core/res/res/layout/keyguard_screen_unlock_portrait.xml @@ -167,6 +167,8 @@ android:layout_rowSpan="4" android:layout_columnSpan="1" android:layout_gravity="fill" + android:layout_width="0dip" + android:layout_height="0dip" /> diff --git a/core/res/res/layout/keyguard_transport_control.xml b/core/res/res/layout/keyguard_transport_control.xml index 6308b02dff79e..2ebe5fceddc27 100644 --- a/core/res/res/layout/keyguard_transport_control.xml +++ b/core/res/res/layout/keyguard_transport_control.xml @@ -1,53 +1,102 @@ - + + android:id="@+id/transport_controls" + android:background="@drawable/ic_lockscreen_player_background"> -