Merge "Disable keyguard text marquee when the display turns off." into klp-dev
This commit is contained in:
@@ -47,6 +47,14 @@ public class CarrierText extends TextView {
|
|||||||
mSimState = simState;
|
mSimState = simState;
|
||||||
updateCarrierText(mSimState, mPlmn, mSpn);
|
updateCarrierText(mSimState, mPlmn, mSpn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onScreenTurnedOff(int why) {
|
||||||
|
setSelected(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
public void onScreenTurnedOn() {
|
||||||
|
setSelected(true);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* The status of this lock screen. Primarily used for widgets on LockScreen.
|
* The status of this lock screen. Primarily used for widgets on LockScreen.
|
||||||
@@ -79,7 +87,8 @@ public class CarrierText extends TextView {
|
|||||||
protected void onFinishInflate() {
|
protected void onFinishInflate() {
|
||||||
super.onFinishInflate();
|
super.onFinishInflate();
|
||||||
mSeparator = getResources().getString(R.string.kg_text_message_separator);
|
mSeparator = getResources().getString(R.string.kg_text_message_separator);
|
||||||
setSelected(true); // Allow marquee to work.
|
final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
|
||||||
|
setSelected(screenOn); // Allow marquee to work.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -163,6 +163,12 @@ class KeyguardMessageArea extends TextView {
|
|||||||
mBatteryIsLow = status.isBatteryLow();
|
mBatteryIsLow = status.isBatteryLow();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
public void onScreenTurnedOff(int why) {
|
||||||
|
setSelected(false);
|
||||||
|
};
|
||||||
|
public void onScreenTurnedOn() {
|
||||||
|
setSelected(true);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
public KeyguardMessageArea(Context context) {
|
public KeyguardMessageArea(Context context) {
|
||||||
@@ -174,9 +180,6 @@ class KeyguardMessageArea extends TextView {
|
|||||||
|
|
||||||
mLockPatternUtils = new LockPatternUtils(context);
|
mLockPatternUtils = new LockPatternUtils(context);
|
||||||
|
|
||||||
// This is required to ensure marquee works
|
|
||||||
setSelected(true);
|
|
||||||
|
|
||||||
// Registering this callback immediately updates the battery state, among other things.
|
// Registering this callback immediately updates the battery state, among other things.
|
||||||
mUpdateMonitor = KeyguardUpdateMonitor.getInstance(getContext());
|
mUpdateMonitor = KeyguardUpdateMonitor.getInstance(getContext());
|
||||||
mUpdateMonitor.registerCallback(mInfoCallback);
|
mUpdateMonitor.registerCallback(mInfoCallback);
|
||||||
@@ -187,6 +190,12 @@ class KeyguardMessageArea extends TextView {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onFinishInflate() {
|
||||||
|
final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
|
||||||
|
setSelected(screenOn); // This is required to ensure marquee works
|
||||||
|
}
|
||||||
|
|
||||||
public void securityMessageChanged() {
|
public void securityMessageChanged() {
|
||||||
setAlpha(1f);
|
setAlpha(1f);
|
||||||
mShowingMessage = true;
|
mShowingMessage = true;
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.content.res.Resources;
|
|||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.util.Log;
|
||||||
import android.util.Slog;
|
import android.util.Slog;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.GridLayout;
|
import android.widget.GridLayout;
|
||||||
@@ -42,6 +43,8 @@ public class KeyguardStatusView extends GridLayout {
|
|||||||
|
|
||||||
private TextView mAlarmStatusView;
|
private TextView mAlarmStatusView;
|
||||||
|
|
||||||
|
private final int MARQUEE_VIEWS[] = { R.id.alarm_status };
|
||||||
|
|
||||||
private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
|
private KeyguardUpdateMonitorCallback mInfoCallback = new KeyguardUpdateMonitorCallback() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -56,6 +59,14 @@ public class KeyguardStatusView extends GridLayout {
|
|||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public void onScreenTurnedOn() {
|
||||||
|
setEnableMarquee(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
public void onScreenTurnedOff(int why) {
|
||||||
|
setEnableMarquee(false);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
public KeyguardStatusView(Context context) {
|
public KeyguardStatusView(Context context) {
|
||||||
@@ -70,22 +81,23 @@ public class KeyguardStatusView extends GridLayout {
|
|||||||
super(context, attrs, defStyle);
|
super(context, attrs, defStyle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setEnableMarquee(boolean enabled) {
|
||||||
|
if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee");
|
||||||
|
for (int i = 0; i < MARQUEE_VIEWS.length; i++) {
|
||||||
|
View v = findViewById(MARQUEE_VIEWS[i]);
|
||||||
|
if (v != null) {
|
||||||
|
v.setSelected(enabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onFinishInflate() {
|
protected void onFinishInflate() {
|
||||||
super.onFinishInflate();
|
super.onFinishInflate();
|
||||||
|
|
||||||
mAlarmStatusView = (TextView) findViewById(R.id.alarm_status);
|
mAlarmStatusView = (TextView) findViewById(R.id.alarm_status);
|
||||||
mLockPatternUtils = new LockPatternUtils(getContext());
|
mLockPatternUtils = new LockPatternUtils(getContext());
|
||||||
|
final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
|
||||||
// Required to get Marquee to work.
|
setEnableMarquee(screenOn);
|
||||||
final View marqueeViews[] = { mAlarmStatusView };
|
|
||||||
for (int i = 0; i < marqueeViews.length; i++) {
|
|
||||||
View v = marqueeViews[i];
|
|
||||||
if (v == null) {
|
|
||||||
throw new RuntimeException("Can't find widget at index " + i);
|
|
||||||
}
|
|
||||||
v.setSelected(true);
|
|
||||||
}
|
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -84,6 +84,8 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
private AudioManager mAudioManager;
|
private AudioManager mAudioManager;
|
||||||
private RemoteController mRemoteController;
|
private RemoteController mRemoteController;
|
||||||
|
|
||||||
|
private int MARQUEE_VIEWS[] = { R.id.title, R.id.artist_album };
|
||||||
|
|
||||||
private ImageView mBadge;
|
private ImageView mBadge;
|
||||||
|
|
||||||
private boolean mSeekEnabled;
|
private boolean mSeekEnabled;
|
||||||
@@ -198,6 +200,16 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
|
|
||||||
KeyguardHostView.TransportControlCallback mTransportControlCallback;
|
KeyguardHostView.TransportControlCallback mTransportControlCallback;
|
||||||
|
|
||||||
|
private final KeyguardUpdateMonitorCallback mUpdateMonitor
|
||||||
|
= new KeyguardUpdateMonitorCallback() {
|
||||||
|
public void onScreenTurnedOff(int why) {
|
||||||
|
setEnableMarquee(false);
|
||||||
|
};
|
||||||
|
public void onScreenTurnedOn() {
|
||||||
|
setEnableMarquee(true);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
public KeyguardTransportControlView(Context context, AttributeSet attrs) {
|
public KeyguardTransportControlView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
if (DEBUG) Log.v(TAG, "Create TCV " + this);
|
if (DEBUG) Log.v(TAG, "Create TCV " + this);
|
||||||
@@ -250,6 +262,16 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
mTransportControlCallback = transportControlCallback;
|
mTransportControlCallback = transportControlCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setEnableMarquee(boolean enabled) {
|
||||||
|
if (DEBUG) Log.v(TAG, (enabled ? "Enable" : "Disable") + " transport text marquee");
|
||||||
|
for (int i = 0; i < MARQUEE_VIEWS.length; i++) {
|
||||||
|
View v = findViewById(MARQUEE_VIEWS[i]);
|
||||||
|
if (v != null) {
|
||||||
|
v.setSelected(enabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFinishInflate() {
|
public void onFinishInflate() {
|
||||||
super.onFinishInflate();
|
super.onFinishInflate();
|
||||||
@@ -257,9 +279,7 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
mMetadataContainer = (ViewGroup) findViewById(R.id.metadata_container);
|
mMetadataContainer = (ViewGroup) findViewById(R.id.metadata_container);
|
||||||
mBadge = (ImageView) findViewById(R.id.badge);
|
mBadge = (ImageView) findViewById(R.id.badge);
|
||||||
mTrackTitle = (TextView) findViewById(R.id.title);
|
mTrackTitle = (TextView) findViewById(R.id.title);
|
||||||
mTrackTitle.setSelected(true); // enable marquee
|
|
||||||
mTrackArtistAlbum = (TextView) findViewById(R.id.artist_album);
|
mTrackArtistAlbum = (TextView) findViewById(R.id.artist_album);
|
||||||
mTrackArtistAlbum.setSelected(true);
|
|
||||||
mTransientSeek = findViewById(R.id.transient_seek);
|
mTransientSeek = findViewById(R.id.transient_seek);
|
||||||
mTransientSeekBar = (SeekBar) findViewById(R.id.transient_seek_bar);
|
mTransientSeekBar = (SeekBar) findViewById(R.id.transient_seek_bar);
|
||||||
mTransientSeekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
|
mTransientSeekBar.setOnSeekBarChangeListener(mOnSeekBarChangeListener);
|
||||||
@@ -273,6 +293,8 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
view.setOnClickListener(mTransportCommandListener);
|
view.setOnClickListener(mTransportCommandListener);
|
||||||
view.setOnLongClickListener(mTransportShowSeekBarListener);
|
view.setOnLongClickListener(mTransportShowSeekBarListener);
|
||||||
}
|
}
|
||||||
|
final boolean screenOn = KeyguardUpdateMonitor.getInstance(mContext).isScreenOn();
|
||||||
|
setEnableMarquee(screenOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -285,6 +307,7 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
if (DEBUG) Log.v(TAG, "Registering TCV " + this);
|
if (DEBUG) Log.v(TAG, "Registering TCV " + this);
|
||||||
mAudioManager.registerRemoteController(mRemoteController);
|
mAudioManager.registerRemoteController(mRemoteController);
|
||||||
|
KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -301,6 +324,7 @@ public class KeyguardTransportControlView extends FrameLayout {
|
|||||||
super.onDetachedFromWindow();
|
super.onDetachedFromWindow();
|
||||||
if (DEBUG) Log.v(TAG, "Unregistering TCV " + this);
|
if (DEBUG) Log.v(TAG, "Unregistering TCV " + this);
|
||||||
mAudioManager.unregisterRemoteController(mRemoteController);
|
mAudioManager.unregisterRemoteController(mRemoteController);
|
||||||
|
KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitor);
|
||||||
mUserSeeking = false;
|
mUserSeeking = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,8 @@ public class KeyguardUpdateMonitor {
|
|||||||
protected static final int MSG_SET_PLAYBACK_STATE = 316;
|
protected static final int MSG_SET_PLAYBACK_STATE = 316;
|
||||||
protected static final int MSG_USER_INFO_CHANGED = 317;
|
protected static final int MSG_USER_INFO_CHANGED = 317;
|
||||||
protected static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318;
|
protected static final int MSG_REPORT_EMERGENCY_CALL_ACTION = 318;
|
||||||
|
private static final int MSG_SCREEN_TURNED_ON = 319;
|
||||||
|
private static final int MSG_SCREEN_TURNED_OFF = 320;
|
||||||
|
|
||||||
private static KeyguardUpdateMonitor sInstance;
|
private static KeyguardUpdateMonitor sInstance;
|
||||||
|
|
||||||
@@ -127,6 +128,8 @@ public class KeyguardUpdateMonitor {
|
|||||||
|
|
||||||
private boolean mSwitchingUser;
|
private boolean mSwitchingUser;
|
||||||
|
|
||||||
|
private boolean mScreenOn;
|
||||||
|
|
||||||
private final Handler mHandler = new Handler() {
|
private final Handler mHandler = new Handler() {
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message msg) {
|
public void handleMessage(Message msg) {
|
||||||
@@ -185,6 +188,12 @@ public class KeyguardUpdateMonitor {
|
|||||||
case MSG_REPORT_EMERGENCY_CALL_ACTION:
|
case MSG_REPORT_EMERGENCY_CALL_ACTION:
|
||||||
handleReportEmergencyCallAction();
|
handleReportEmergencyCallAction();
|
||||||
break;
|
break;
|
||||||
|
case MSG_SCREEN_TURNED_OFF:
|
||||||
|
handleScreenTurnedOff(msg.arg1);
|
||||||
|
break;
|
||||||
|
case MSG_SCREEN_TURNED_ON:
|
||||||
|
handleScreenTurnedOn();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -411,6 +420,26 @@ public class KeyguardUpdateMonitor {
|
|||||||
return sInstance;
|
return sInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void handleScreenTurnedOn() {
|
||||||
|
final int count = mCallbacks.size();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
|
if (cb != null) {
|
||||||
|
cb.onScreenTurnedOn();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void handleScreenTurnedOff(int arg1) {
|
||||||
|
final int count = mCallbacks.size();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
|
||||||
|
if (cb != null) {
|
||||||
|
cb.onScreenTurnedOff(arg1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IMPORTANT: Must be called from UI thread.
|
* IMPORTANT: Must be called from UI thread.
|
||||||
*/
|
*/
|
||||||
@@ -1041,4 +1070,24 @@ public class KeyguardUpdateMonitor {
|
|||||||
public DisplayClientState getCachedDisplayClientState() {
|
public DisplayClientState getCachedDisplayClientState() {
|
||||||
return mDisplayClientState;
|
return mDisplayClientState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: use these callbacks elsewhere in place of the existing notifyScreen*()
|
||||||
|
// (KeyguardViewMediator, KeyguardHostView)
|
||||||
|
public void dispatchScreenTurnedOn() {
|
||||||
|
synchronized (this) {
|
||||||
|
mScreenOn = true;
|
||||||
|
}
|
||||||
|
mHandler.sendEmptyMessage(MSG_SCREEN_TURNED_ON);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void dispatchScreenTurndOff(int why) {
|
||||||
|
synchronized(this) {
|
||||||
|
mScreenOn = false;
|
||||||
|
}
|
||||||
|
mHandler.sendMessage(mHandler.obtainMessage(MSG_SCREEN_TURNED_OFF, why, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isScreenOn() {
|
||||||
|
return mScreenOn;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import android.app.PendingIntent;
|
|||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
|
import android.view.WindowManagerPolicy;
|
||||||
|
|
||||||
import com.android.internal.telephony.IccCardConstants;
|
import com.android.internal.telephony.IccCardConstants;
|
||||||
|
|
||||||
@@ -137,7 +138,23 @@ class KeyguardUpdateMonitorCallback {
|
|||||||
*/
|
*/
|
||||||
void onEmergencyCallAction() { }
|
void onEmergencyCallAction() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the transport background changes.
|
||||||
|
* @param bitmap
|
||||||
|
*/
|
||||||
public void onSetBackground(Bitmap bitmap) {
|
public void onSetBackground(Bitmap bitmap) {
|
||||||
// THIS SPACE FOR RENT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the screen turns on
|
||||||
|
*/
|
||||||
|
public void onScreenTurnedOn() { }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the screen turns off
|
||||||
|
* @param why {@link WindowManagerPolicy#OFF_BECAUSE_OF_USER},
|
||||||
|
* {@link WindowManagerPolicy#OFF_BECAUSE_OF_TIMEOUT} or
|
||||||
|
* {@link WindowManagerPolicy#OFF_BECAUSE_OF_PROX_SENSOR}.
|
||||||
|
*/
|
||||||
|
public void onScreenTurnedOff(int why) { }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -599,6 +599,7 @@ public class KeyguardViewMediator {
|
|||||||
doKeyguardLocked(null);
|
doKeyguardLocked(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
KeyguardUpdateMonitor.getInstance(mContext).dispatchScreenTurndOff(why);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doKeyguardLaterLocked() {
|
private void doKeyguardLaterLocked() {
|
||||||
@@ -664,6 +665,7 @@ public class KeyguardViewMediator {
|
|||||||
notifyScreenOnLocked(callback);
|
notifyScreenOnLocked(callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
KeyguardUpdateMonitor.getInstance(mContext).dispatchScreenTurnedOn();
|
||||||
maybeSendUserPresentBroadcast();
|
maybeSendUserPresentBroadcast();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user