Code:
diff --git a/phone/com/android/internal/policy/impl/LockScreen.java b/phone/com/android/internal/policy/impl/LockScreen.java
index 65629f6..6c63ff6 100644
--- a/phone/com/android/internal/policy/impl/LockScreen.java
+++ b/phone/com/android/internal/policy/impl/LockScreen.java
@@ -516,8 +516,11 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
if (keyCode == KeyEvent.KEYCODE_HOLD) {
if (!mHoldPressed) {
mHoldPressed = true;
- mHandler.postDelayed(mHoldCallback, 1000);
+ mHandler.postDelayed(mHoldCallback, 400);
}
+ } else if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER && mLockMusicControls
+ && (mWasMusicActive || mLockAlwaysMusic || mIsMusicActive)) {
+ refreshMusicStatus();
}
return false;
}
@@ -677,17 +680,23 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
}
private void refreshMusicStatus() {
if ((mWasMusicActive || mIsMusicActive || mLockAlwaysMusic) && (mLockMusicControls)) {
- if(am.isMusicActive()) {
- mPauseIcon.setVisibility(View.VISIBLE);
- mPlayIcon.setVisibility(View.GONE);
- mRewindIcon.setVisibility(View.VISIBLE);
- mForwardIcon.setVisibility(View.VISIBLE);
- } else {
- mPlayIcon.setVisibility(View.VISIBLE);
- mPauseIcon.setVisibility(View.GONE);
- mRewindIcon.setVisibility(View.GONE);
- mForwardIcon.setVisibility(View.GONE);
- }
+ mHandler.postDelayed(
+ new Runnable() {
+ public void run() {
+ if(am.isMusicActive()) {
+ mPauseIcon.setVisibility(View.VISIBLE);
+ mPlayIcon.setVisibility(View.GONE);
+ mRewindIcon.setVisibility(View.VISIBLE);
+ mForwardIcon.setVisibility(View.VISIBLE);
+ } else {
+ mPlayIcon.setVisibility(View.VISIBLE);
+ mPauseIcon.setVisibility(View.GONE);
+ mRewindIcon.setVisibility(View.GONE);
+ mForwardIcon.setVisibility(View.GONE);
+ }
+ }
+ }
+ , 200);
} else {
mPlayIcon.setVisibility(View.GONE);
mPauseIcon.setVisibility(View.GONE);
diff --git a/phone/com/android/internal/policy/impl/PhoneWindowManager.java b/phone/com/android/internal/policy/impl/PhoneWindowManager.java
index 87a5854..fe065bb 100644
--- a/phone/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/phone/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -1960,6 +1960,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
return false;
}
+
+ private boolean mWasMusicActive = false;
/** {@inheritDoc} */
public int interceptKeyTq(RawInputEvent event, boolean screenIsOn) {
@@ -2221,6 +2223,26 @@ public class PhoneWindowManager implements WindowManagerPolicy {
Log.w(TAG, "VOLUME button: RemoteException from getPhoneInterface()", ex);
}
}
+ } else if (down && keyguardActive && isMovementKeyTi(code) && isMusicActive()) {
+ switch (code) {
+ case KeyEvent.KEYCODE_DPAD_UP:
+ handleVolumeKey(AudioManager.STREAM_MUSIC, KeyEvent.KEYCODE_VOLUME_UP);
+ break;
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ handleVolumeKey(AudioManager.STREAM_MUSIC, KeyEvent.KEYCODE_VOLUME_DOWN);
+ break;
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ sendMediaButtonEvent(KeyEvent.KEYCODE_MEDIA_PREVIOUS);
+ break;
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ sendMediaButtonEvent(KeyEvent.KEYCODE_MEDIA_NEXT);
+ break;
+ }
+ } else if (down && keyguardActive && code == KeyEvent.KEYCODE_DPAD_CENTER
+ && (mWasMusicActive || isMusicActive())) {
+ mWasMusicActive = true;
+ sendMediaButtonEvent(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
+ result = ACTION_PASS_TO_USER;
} else if (code == KeyEvent.KEYCODE_HOLD) {
result = ACTION_PASS_TO_USER;
if (down) {
@@ -2309,6 +2331,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
} else if (keycode == KeyEvent.KEYCODE_HOLD) {
flags |= WindowManagerPolicy.FLAG_WAKE;
}
+ if ((!mTrackballWakeScreen && keycode == KeyEvent.KEYCODE_DPAD_CENTER) || isMovementKeyTi(keycode)) {
+ flags &= ~WindowManagerPolicy.FLAG_WAKE;
+ }
return (flags
& (WindowManagerPolicy.FLAG_WAKE | WindowManagerPolicy.FLAG_WAKE_DROPPED)) != 0;
}
@@ -2321,6 +2346,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mScreenOn = false;
updateOrientationListenerLp();
updateLockScreenTimeout();
+ if (!mKeyguardMediator.isShowing()) {
+ mWasMusicActive = isMusicActive();
+ }
}
}
Bookmarks