android-2.1_r1 snapshot
This commit is contained in:
@@ -25,6 +25,7 @@ import android.database.ContentObserver;
|
||||
import static android.os.BatteryManager.BATTERY_STATUS_CHARGING;
|
||||
import static android.os.BatteryManager.BATTERY_STATUS_FULL;
|
||||
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.provider.Settings;
|
||||
@@ -69,9 +70,9 @@ public class KeyguardUpdateMonitor {
|
||||
private boolean mKeyguardBypassEnabled;
|
||||
|
||||
private boolean mDevicePluggedIn;
|
||||
|
||||
|
||||
private boolean mDeviceProvisioned;
|
||||
|
||||
|
||||
private int mBatteryLevel;
|
||||
|
||||
private CharSequence mTelephonyPlmn;
|
||||
@@ -86,7 +87,7 @@ public class KeyguardUpdateMonitor {
|
||||
private ArrayList<InfoCallback> mInfoCallbacks = Lists.newArrayList();
|
||||
private ArrayList<SimStateCallback> mSimStateCallbacks = Lists.newArrayList();
|
||||
private ContentObserver mContentObserver;
|
||||
|
||||
|
||||
|
||||
// messages for the handler
|
||||
private static final int MSG_CONFIGURATION_CHANGED = 300;
|
||||
@@ -94,14 +95,15 @@ public class KeyguardUpdateMonitor {
|
||||
private static final int MSG_BATTERY_UPDATE = 302;
|
||||
private static final int MSG_CARRIER_INFO_UPDATE = 303;
|
||||
private static final int MSG_SIM_STATE_CHANGE = 304;
|
||||
private static final int MSG_RINGER_MODE_CHANGED = 305;
|
||||
|
||||
|
||||
/**
|
||||
* When we receive a
|
||||
* {@link com.android.internal.telephony.TelephonyIntents#ACTION_SIM_STATE_CHANGED} broadcast,
|
||||
* When we receive a
|
||||
* {@link com.android.internal.telephony.TelephonyIntents#ACTION_SIM_STATE_CHANGED} broadcast,
|
||||
* and then pass a result via our handler to {@link KeyguardUpdateMonitor#handleSimStateChange},
|
||||
* we need a single object to pass to the handler. This class helps decode
|
||||
* the intent and provide a {@link SimCard.State} result.
|
||||
* the intent and provide a {@link SimCard.State} result.
|
||||
*/
|
||||
private static class SimArgs {
|
||||
|
||||
@@ -140,7 +142,7 @@ public class KeyguardUpdateMonitor {
|
||||
|
||||
public KeyguardUpdateMonitor(Context context) {
|
||||
mContext = context;
|
||||
|
||||
|
||||
mHandler = new Handler() {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
@@ -160,6 +162,9 @@ public class KeyguardUpdateMonitor {
|
||||
case MSG_SIM_STATE_CHANGE:
|
||||
handleSimStateChange((SimArgs) msg.obj);
|
||||
break;
|
||||
case MSG_RINGER_MODE_CHANGED:
|
||||
handleRingerModeChange(msg.arg1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -169,7 +174,7 @@ public class KeyguardUpdateMonitor {
|
||||
|
||||
mDeviceProvisioned = Settings.Secure.getInt(
|
||||
mContext.getContentResolver(), Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
|
||||
|
||||
|
||||
// Since device can't be un-provisioned, we only need to register a content observer
|
||||
// to update mDeviceProvisioned when we are...
|
||||
if (!mDeviceProvisioned) {
|
||||
@@ -177,7 +182,7 @@ public class KeyguardUpdateMonitor {
|
||||
@Override
|
||||
public void onChange(boolean selfChange) {
|
||||
super.onChange(selfChange);
|
||||
mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
|
||||
if (mDeviceProvisioned && mContentObserver != null) {
|
||||
// We don't need the observer anymore...
|
||||
@@ -187,17 +192,17 @@ public class KeyguardUpdateMonitor {
|
||||
if (DEBUG) Log.d(TAG, "DEVICE_PROVISIONED state = " + mDeviceProvisioned);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
mContext.getContentResolver().registerContentObserver(
|
||||
Settings.Secure.getUriFor(Settings.Secure.DEVICE_PROVISIONED),
|
||||
false, mContentObserver);
|
||||
|
||||
|
||||
// prevent a race condition between where we check the flag and where we register the
|
||||
// observer by grabbing the value once again...
|
||||
mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
mDeviceProvisioned = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.DEVICE_PROVISIONED, 0) != 0;
|
||||
}
|
||||
|
||||
|
||||
mInPortrait = queryInPortrait();
|
||||
mKeyboardOpen = queryKeyboardOpen();
|
||||
|
||||
@@ -217,6 +222,7 @@ public class KeyguardUpdateMonitor {
|
||||
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
|
||||
filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
|
||||
filter.addAction(SPN_STRINGS_UPDATED_ACTION);
|
||||
filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
|
||||
context.registerReceiver(new BroadcastReceiver() {
|
||||
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
@@ -242,15 +248,25 @@ public class KeyguardUpdateMonitor {
|
||||
pluggedInStatus,
|
||||
batteryLevel);
|
||||
mHandler.sendMessage(msg);
|
||||
} else if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(action)){
|
||||
} else if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(action)) {
|
||||
mHandler.sendMessage(mHandler.obtainMessage(
|
||||
MSG_SIM_STATE_CHANGE,
|
||||
new SimArgs(intent)));
|
||||
} else if (AudioManager.RINGER_MODE_CHANGED_ACTION.equals(action)) {
|
||||
mHandler.sendMessage(mHandler.obtainMessage(MSG_RINGER_MODE_CHANGED,
|
||||
intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1), 0));
|
||||
}
|
||||
}
|
||||
}, filter);
|
||||
}
|
||||
|
||||
protected void handleRingerModeChange(int mode) {
|
||||
if (DEBUG) Log.d(TAG, "handleRingerModeChange(" + mode + ")");
|
||||
for (int i = 0; i < mInfoCallbacks.size(); i++) {
|
||||
mInfoCallbacks.get(i).onRingerModeChanged(mode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle {@link #MSG_CONFIGURATION_CHANGED}
|
||||
*/
|
||||
@@ -443,7 +459,7 @@ public class KeyguardUpdateMonitor {
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for general information releveant to lock screen.
|
||||
* Callback for general information relevant to lock screen.
|
||||
*/
|
||||
interface InfoCallback {
|
||||
void onRefreshBatteryInfo(boolean showBatteryInfo, boolean pluggedIn, int batteryLevel);
|
||||
@@ -455,6 +471,13 @@ public class KeyguardUpdateMonitor {
|
||||
* @param spn The service provider name. May be null if it shouldn't be displayed.
|
||||
*/
|
||||
void onRefreshCarrierInfo(CharSequence plmn, CharSequence spn);
|
||||
|
||||
/**
|
||||
* Called when the ringer mode changes.
|
||||
* @param state the current ringer state, as defined in
|
||||
* {@link AudioManager#RINGER_MODE_CHANGED_ACTION}
|
||||
*/
|
||||
void onRingerModeChanged(int state);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -92,7 +92,7 @@ public class KeyguardViewManager implements KeyguardWindowController {
|
||||
* lazily.
|
||||
*/
|
||||
public synchronized void show() {
|
||||
if (DEBUG) Log.d(TAG, "show()");
|
||||
if (DEBUG) Log.d(TAG, "show(); mKeyguardView==" + mKeyguardView);
|
||||
|
||||
if (mKeyguardHost == null) {
|
||||
if (DEBUG) Log.d(TAG, "keyguard host is null, creating it...");
|
||||
|
||||
@@ -105,6 +105,7 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
private static final int KEYGUARD_DONE = 9;
|
||||
private static final int KEYGUARD_DONE_DRAWING = 10;
|
||||
private static final int KEYGUARD_DONE_AUTHENTICATING = 11;
|
||||
private static final int SET_HIDDEN = 12;
|
||||
|
||||
/**
|
||||
* The default amount of time we stay awake (used for all key input)
|
||||
@@ -279,8 +280,9 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
|
||||
/**
|
||||
* Called to let us know the screen was turned off.
|
||||
* @param why either {@link WindowManagerPolicy#OFF_BECAUSE_OF_USER} or
|
||||
* {@link WindowManagerPolicy#OFF_BECAUSE_OF_TIMEOUT}.
|
||||
* @param why either {@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) {
|
||||
synchronized (this) {
|
||||
@@ -311,6 +313,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
sender);
|
||||
if (DEBUG) Log.d(TAG, "setting alarm to turn off keyguard, seq = "
|
||||
+ mDelayedShowingSequence);
|
||||
} else if (why == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR) {
|
||||
// Do not enable the keyguard if the prox sensor forced the screen off.
|
||||
} else {
|
||||
doKeyguard();
|
||||
}
|
||||
@@ -420,14 +424,32 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
return mShowing;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the keyguard currently showing and not being force hidden?
|
||||
*/
|
||||
public boolean isShowingAndNotHidden() {
|
||||
return mShowing && !mHidden;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify us when the keyguard is hidden by another window
|
||||
*/
|
||||
public void setHidden(boolean isHidden) {
|
||||
if (DEBUG) Log.d(TAG, "setHidden " + isHidden);
|
||||
mHandler.removeMessages(SET_HIDDEN);
|
||||
Message msg = mHandler.obtainMessage(SET_HIDDEN, (isHidden ? 1 : 0), 0);
|
||||
mHandler.sendMessage(msg);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles SET_HIDDEN message sent by setHidden()
|
||||
*/
|
||||
private void handleSetHidden(boolean isHidden) {
|
||||
synchronized (KeyguardViewMediator.this) {
|
||||
mHidden = isHidden;
|
||||
adjustUserActivityLocked();
|
||||
if (mHidden != isHidden) {
|
||||
mHidden = isHidden;
|
||||
adjustUserActivityLocked();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -812,6 +834,9 @@ public class KeyguardViewMediator implements KeyguardViewCallback,
|
||||
case KEYGUARD_DONE_AUTHENTICATING:
|
||||
keyguardDone(true);
|
||||
return;
|
||||
case SET_HIDDEN:
|
||||
handleSetHidden(msg.arg1 != 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -160,7 +160,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase
|
||||
} catch (AuthenticatorException e) {
|
||||
}
|
||||
mEnableFallback = !hasSAMLAccount;
|
||||
if (mUnlockScreen instanceof UnlockScreen) {
|
||||
|
||||
if (mUnlockScreen == null) {
|
||||
Log.w(TAG, "no unlock screen when receiving AccountManager information");
|
||||
} else if (mUnlockScreen instanceof UnlockScreen) {
|
||||
((UnlockScreen)mUnlockScreen).setEnableFallback(true);
|
||||
}
|
||||
}
|
||||
@@ -179,18 +182,6 @@ public class LockPatternKeyguardView extends KeyguardViewBase
|
||||
KeyguardWindowController controller) {
|
||||
super(context);
|
||||
|
||||
final boolean hasAccount = AccountManager.get(context).getAccounts().length > 0;
|
||||
if (hasAccount) {
|
||||
/* If we have a SAML account which requires web login we can not use the
|
||||
fallback screen UI to ask the user for credentials.
|
||||
For now we will disable fallback screen in this case.
|
||||
Ultimately we could consider bringing up a web login from GLS
|
||||
but need to make sure that it will work in the "locked screen" mode. */
|
||||
String[] features = new String[] {"saml"};
|
||||
AccountManager.get(context).getAccountsByTypeAndFeatures(
|
||||
"com.google", features, this, null);
|
||||
}
|
||||
|
||||
mEnableFallback = false;
|
||||
|
||||
mRequiresSim =
|
||||
@@ -275,6 +266,9 @@ public class LockPatternKeyguardView extends KeyguardViewBase
|
||||
public void reportFailedPatternAttempt() {
|
||||
mUpdateMonitor.reportFailedAttempt();
|
||||
final int failedAttempts = mUpdateMonitor.getFailedAttempts();
|
||||
if (DEBUG) Log.d(TAG,
|
||||
"reportFailedPatternAttempt: #" + failedAttempts +
|
||||
" (enableFallback=" + mEnableFallback + ")");
|
||||
if (mEnableFallback && failedAttempts ==
|
||||
(LockPatternUtils.FAILED_ATTEMPTS_BEFORE_RESET
|
||||
- LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT)) {
|
||||
@@ -313,8 +307,28 @@ public class LockPatternKeyguardView extends KeyguardViewBase
|
||||
mLockScreen = createLockScreen();
|
||||
addView(mLockScreen);
|
||||
final UnlockMode unlockMode = getUnlockMode();
|
||||
if (DEBUG) Log.d(TAG,
|
||||
"LockPatternKeyguardView ctor: about to createUnlockScreenFor; mEnableFallback="
|
||||
+ mEnableFallback);
|
||||
mUnlockScreen = createUnlockScreenFor(unlockMode);
|
||||
mUnlockScreenMode = unlockMode;
|
||||
|
||||
// Ask the account manager if we have an account that can be used as a
|
||||
// fallback in case the user forgets his pattern. The response comes
|
||||
// back in run() below; don't bother asking until you've called
|
||||
// createUnlockScreenFor(), else the information will go unused.
|
||||
final boolean hasAccount = AccountManager.get(context).getAccounts().length > 0;
|
||||
if (hasAccount) {
|
||||
/* If we have a SAML account which requires web login we can not use the
|
||||
fallback screen UI to ask the user for credentials.
|
||||
For now we will disable fallback screen in this case.
|
||||
Ultimately we could consider bringing up a web login from GLS
|
||||
but need to make sure that it will work in the "locked screen" mode. */
|
||||
String[] features = new String[] {"saml"};
|
||||
AccountManager.get(context).getAccountsByTypeAndFeatures(
|
||||
"com.google", features, this, null);
|
||||
}
|
||||
|
||||
addView(mUnlockScreen);
|
||||
updateScreen(mMode);
|
||||
}
|
||||
@@ -475,6 +489,8 @@ public class LockPatternKeyguardView extends KeyguardViewBase
|
||||
mUpdateMonitor,
|
||||
mKeyguardScreenCallback,
|
||||
mUpdateMonitor.getFailedAttempts());
|
||||
if (DEBUG) Log.d(TAG,
|
||||
"createUnlockScreenFor(" + unlockMode + "): mEnableFallback=" + mEnableFallback);
|
||||
view.setEnableFallback(mEnableFallback);
|
||||
return view;
|
||||
} else if (unlockMode == UnlockMode.SimPin) {
|
||||
|
||||
@@ -17,8 +17,9 @@
|
||||
package com.android.internal.policy.impl;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.telephony.IccCard;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.internal.widget.RotarySelector;
|
||||
import com.android.internal.widget.SlidingTab;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
@@ -33,11 +34,8 @@ import android.util.Log;
|
||||
import android.media.AudioManager;
|
||||
import android.os.SystemProperties;
|
||||
|
||||
import com.android.internal.telephony.IccCard;
|
||||
|
||||
import java.util.Date;
|
||||
import java.io.File;
|
||||
import java.text.SimpleDateFormat;
|
||||
|
||||
/**
|
||||
* The screen within {@link LockPatternKeyguardView} that shows general
|
||||
@@ -46,7 +44,7 @@ import java.text.SimpleDateFormat;
|
||||
*/
|
||||
class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateMonitor.InfoCallback,
|
||||
KeyguardUpdateMonitor.SimStateCallback, KeyguardUpdateMonitor.ConfigurationChangeCallback,
|
||||
RotarySelector.OnDialTriggerListener {
|
||||
SlidingTab.OnTriggerListener {
|
||||
|
||||
private static final boolean DBG = false;
|
||||
private static final String TAG = "LockScreen";
|
||||
@@ -59,7 +57,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
private final KeyguardScreenCallback mCallback;
|
||||
|
||||
private TextView mCarrier;
|
||||
private RotarySelector mRotary;
|
||||
private SlidingTab mSelector;
|
||||
private TextView mTime;
|
||||
private TextView mDate;
|
||||
private TextView mStatus1;
|
||||
@@ -83,7 +81,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
private boolean mSilentMode;
|
||||
private AudioManager mAudioManager;
|
||||
private java.text.DateFormat mDateFormat;
|
||||
private String mDateFormatString;
|
||||
private java.text.DateFormat mTimeFormat;
|
||||
private boolean mCreatedInPortrait;
|
||||
private boolean mEnableMenuKeyInLockScreen;
|
||||
@@ -175,13 +173,12 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
final LayoutInflater inflater = LayoutInflater.from(context);
|
||||
if (mCreatedInPortrait) {
|
||||
inflater.inflate(R.layout.keyguard_screen_rotary_unlock, this, true);
|
||||
inflater.inflate(R.layout.keyguard_screen_tab_unlock, this, true);
|
||||
} else {
|
||||
inflater.inflate(R.layout.keyguard_screen_rotary_unlock_land, this, true);
|
||||
inflater.inflate(R.layout.keyguard_screen_tab_unlock_land, this, true);
|
||||
}
|
||||
|
||||
mCarrier = (TextView) findViewById(R.id.carrier);
|
||||
mTime = (TextView) findViewById(R.id.time);
|
||||
mDate = (TextView) findViewById(R.id.date);
|
||||
mStatus1 = (TextView) findViewById(R.id.status1);
|
||||
mStatus2 = (TextView) findViewById(R.id.status2);
|
||||
@@ -189,7 +186,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
mEmergencyCallButton = (Button) findViewById(R.id.emergencyCallButton);
|
||||
mEmergencyCallButton.setText(R.string.lockscreen_emergency_call);
|
||||
mScreenLocked = (TextView) findViewById(R.id.screenLocked);
|
||||
mRotary = (RotarySelector) findViewById(R.id.rotary);
|
||||
mSelector = (SlidingTab) findViewById(R.id.tab_selector);
|
||||
mSelector.setHoldAfterTrigger(true, false);
|
||||
mSelector.setLeftHintText(R.string.lockscreen_unlock_label);
|
||||
mEmergencyCallButton.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
mCallback.takeEmergencyCallAction();
|
||||
@@ -205,17 +204,35 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
updateMonitor.registerConfigurationChangeCallback(this);
|
||||
|
||||
mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
|
||||
mSilentMode = mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;
|
||||
mSilentMode = isSilentMode();
|
||||
|
||||
mRotary.setOnDialTriggerListener(this);
|
||||
mRotary.setLeftHandleResource(R.drawable.ic_jog_dial_unlock);
|
||||
mRotary.setRightHandleResource(mSilentMode ?
|
||||
R.drawable.ic_jog_dial_sound_off :
|
||||
R.drawable.ic_jog_dial_sound_on);
|
||||
mSelector.setLeftTabResources(
|
||||
R.drawable.ic_jog_dial_unlock,
|
||||
R.drawable.jog_tab_target_green,
|
||||
R.drawable.jog_tab_bar_left_unlock,
|
||||
R.drawable.jog_tab_left_unlock);
|
||||
|
||||
updateRightTabResources();
|
||||
|
||||
mSelector.setOnTriggerListener(this);
|
||||
|
||||
resetStatusInfo(updateMonitor);
|
||||
}
|
||||
|
||||
private boolean isSilentMode() {
|
||||
return mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;
|
||||
}
|
||||
|
||||
private void updateRightTabResources() {
|
||||
mSelector.setRightTabResources(
|
||||
mSilentMode ? R.drawable.ic_jog_dial_sound_off : R.drawable.ic_jog_dial_sound_on,
|
||||
mSilentMode ? R.drawable.jog_tab_target_yellow : R.drawable.jog_tab_target_gray,
|
||||
mSilentMode ? R.drawable.jog_tab_bar_right_sound_on
|
||||
: R.drawable.jog_tab_bar_right_sound_off,
|
||||
mSilentMode ? R.drawable.jog_tab_right_sound_on
|
||||
: R.drawable.jog_tab_right_sound_off);
|
||||
}
|
||||
|
||||
private void resetStatusInfo(KeyguardUpdateMonitor updateMonitor) {
|
||||
mShowingBatteryInfo = updateMonitor.shouldShowBatteryInfo();
|
||||
mPluggedIn = updateMonitor.isDevicePluggedIn();
|
||||
@@ -228,7 +245,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
refreshAlarmDisplay();
|
||||
|
||||
mTimeFormat = DateFormat.getTimeFormat(getContext());
|
||||
mDateFormat = getLockScreenDateFormat();
|
||||
mDateFormatString = getContext().getString(R.string.full_wday_month_day_no_year);
|
||||
refreshTimeAndDateDisplay();
|
||||
updateStatusLines();
|
||||
}
|
||||
@@ -242,24 +259,23 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void onDialTrigger(View v, int whichHandle) {
|
||||
if (whichHandle == RotarySelector.OnDialTriggerListener.LEFT_HANDLE) {
|
||||
public void onTrigger(View v, int whichHandle) {
|
||||
if (whichHandle == SlidingTab.OnTriggerListener.LEFT_HANDLE) {
|
||||
mCallback.goToUnlockScreen();
|
||||
} else if (whichHandle == RotarySelector.OnDialTriggerListener.RIGHT_HANDLE) {
|
||||
} else if (whichHandle == SlidingTab.OnTriggerListener.RIGHT_HANDLE) {
|
||||
// toggle silent mode
|
||||
mSilentMode = !mSilentMode;
|
||||
mAudioManager.setRingerMode(mSilentMode ? AudioManager.RINGER_MODE_SILENT
|
||||
: AudioManager.RINGER_MODE_NORMAL);
|
||||
final int handleIcon = mSilentMode ?
|
||||
R.drawable.ic_jog_dial_sound_off :
|
||||
R.drawable.ic_jog_dial_sound_on;
|
||||
final int toastIcon = mSilentMode ?
|
||||
R.drawable.ic_lock_ringer_off :
|
||||
R.drawable.ic_lock_ringer_on;
|
||||
mRotary.setRightHandleResource(handleIcon);
|
||||
|
||||
updateRightTabResources();
|
||||
|
||||
String message = mSilentMode ?
|
||||
getContext().getString(R.string.global_action_silent_mode_on_status) :
|
||||
getContext().getString(R.string.global_action_silent_mode_off_status);
|
||||
|
||||
final int toastIcon = mSilentMode ? R.drawable.ic_lock_ringer_off
|
||||
: R.drawable.ic_lock_ringer_on;
|
||||
toastMessage(mScreenLocked, message, toastIcon);
|
||||
mCallback.pokeWakelock();
|
||||
}
|
||||
@@ -267,7 +283,12 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void onGrabbedStateChange(View v, int grabbedState) {
|
||||
// TODO: Update onscreen hint text based on the new state.
|
||||
if (grabbedState == SlidingTab.OnTriggerListener.RIGHT_HANDLE) {
|
||||
mSilentMode = isSilentMode();
|
||||
mSelector.setRightHintText(mSilentMode ? R.string.lockscreen_sound_on_label
|
||||
: R.string.lockscreen_sound_off_label);
|
||||
}
|
||||
mCallback.pokeWakelock();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -354,30 +375,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
}
|
||||
|
||||
private void refreshTimeAndDateDisplay() {
|
||||
Date now = new Date();
|
||||
mTime.setText(mTimeFormat.format(now));
|
||||
mDate.setText(mDateFormat.format(now));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return A localized format like "Fri, Sep 18, 2009"
|
||||
*/
|
||||
private java.text.DateFormat getLockScreenDateFormat() {
|
||||
SimpleDateFormat adjusted = null;
|
||||
try {
|
||||
// this call gives us the localized order
|
||||
final SimpleDateFormat dateFormat = (SimpleDateFormat)
|
||||
java.text.DateFormat.getDateInstance(java.text.DateFormat.FULL);
|
||||
adjusted = new SimpleDateFormat(dateFormat.toPattern()
|
||||
.replace("MMMM", "MMM") // we want "Sep", not "September"
|
||||
.replace("EEEE", "EEE")); // we want "Fri", no "Friday"
|
||||
} catch (ClassCastException e) {
|
||||
// in case the library implementation changes and this throws a class cast exception
|
||||
// or anything else that is funky
|
||||
Log.e("LockScreen", "couldn't finnagle our custom date format :(", e);
|
||||
return java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM);
|
||||
}
|
||||
return adjusted;
|
||||
mDate.setText(DateFormat.format(mDateFormatString, new Date()));
|
||||
}
|
||||
|
||||
private void updateStatusLines() {
|
||||
@@ -468,7 +466,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
// layout
|
||||
mScreenLocked.setVisibility(View.VISIBLE);
|
||||
mRotary.setVisibility(View.VISIBLE);
|
||||
mSelector.setVisibility(View.VISIBLE);
|
||||
mEmergencyCallButton.setVisibility(View.GONE);
|
||||
break;
|
||||
case NetworkLocked:
|
||||
@@ -478,7 +476,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
// layout
|
||||
mScreenLocked.setVisibility(View.VISIBLE);
|
||||
mRotary.setVisibility(View.VISIBLE);
|
||||
mSelector.setVisibility(View.VISIBLE);
|
||||
mEmergencyCallButton.setVisibility(View.GONE);
|
||||
break;
|
||||
case SimMissing:
|
||||
@@ -488,9 +486,9 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
// layout
|
||||
mScreenLocked.setVisibility(View.INVISIBLE);
|
||||
mRotary.setVisibility(View.VISIBLE);
|
||||
mSelector.setVisibility(View.VISIBLE);
|
||||
mEmergencyCallButton.setVisibility(View.VISIBLE);
|
||||
putEmergencyBelow(R.id.divider);
|
||||
putEmergencyBelow(R.id.screenLocked);
|
||||
break;
|
||||
case SimMissingLocked:
|
||||
// text
|
||||
@@ -499,7 +497,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
// layout
|
||||
mScreenLocked.setVisibility(View.VISIBLE);
|
||||
mRotary.setVisibility(View.GONE);
|
||||
mSelector.setVisibility(View.GONE);
|
||||
mEmergencyCallButton.setVisibility(View.VISIBLE);
|
||||
putEmergencyBelow(R.id.screenLocked);
|
||||
break;
|
||||
@@ -509,7 +507,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
// layout
|
||||
mScreenLocked.setVisibility(View.INVISIBLE);
|
||||
mRotary.setVisibility(View.VISIBLE);
|
||||
mSelector.setVisibility(View.VISIBLE);
|
||||
mEmergencyCallButton.setVisibility(View.GONE);
|
||||
break;
|
||||
case SimPukLocked:
|
||||
@@ -519,7 +517,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
|
||||
// layout
|
||||
mScreenLocked.setVisibility(View.VISIBLE);
|
||||
mRotary.setVisibility(View.GONE);
|
||||
mSelector.setVisibility(View.GONE);
|
||||
mEmergencyCallButton.setVisibility(View.VISIBLE);
|
||||
putEmergencyBelow(R.id.screenLocked);
|
||||
break;
|
||||
@@ -563,7 +561,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
public boolean needsInput() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void onPause() {
|
||||
|
||||
@@ -578,4 +576,13 @@ class LockScreen extends LinearLayout implements KeyguardScreen, KeyguardUpdateM
|
||||
public void cleanUp() {
|
||||
mUpdateMonitor.removeCallback(this);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void onRingerModeChanged(int state) {
|
||||
boolean silent = AudioManager.RINGER_MODE_SILENT == state;
|
||||
if (silent != mSilentMode) {
|
||||
mSilentMode = silent;
|
||||
updateRightTabResources();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
|
||||
@@ -94,7 +95,6 @@ import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
|
||||
import android.view.WindowManagerImpl;
|
||||
import android.view.WindowManagerPolicy;
|
||||
import android.view.WindowManagerPolicy.WindowState;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.media.IAudioService;
|
||||
@@ -121,25 +121,26 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
static final int PHONE_LAYER = 3;
|
||||
static final int SEARCH_BAR_LAYER = 4;
|
||||
static final int STATUS_BAR_PANEL_LAYER = 5;
|
||||
static final int SYSTEM_DIALOG_LAYER = 6;
|
||||
// toasts and the plugged-in battery thing
|
||||
static final int TOAST_LAYER = 6;
|
||||
static final int STATUS_BAR_LAYER = 7;
|
||||
static final int TOAST_LAYER = 7;
|
||||
static final int STATUS_BAR_LAYER = 8;
|
||||
// SIM errors and unlock. Not sure if this really should be in a high layer.
|
||||
static final int PRIORITY_PHONE_LAYER = 8;
|
||||
static final int PRIORITY_PHONE_LAYER = 9;
|
||||
// like the ANR / app crashed dialogs
|
||||
static final int SYSTEM_ALERT_LAYER = 9;
|
||||
static final int SYSTEM_ALERT_LAYER = 10;
|
||||
// system-level error dialogs
|
||||
static final int SYSTEM_ERROR_LAYER = 10;
|
||||
static final int SYSTEM_ERROR_LAYER = 11;
|
||||
// on-screen keyboards and other such input method user interfaces go here.
|
||||
static final int INPUT_METHOD_LAYER = 11;
|
||||
static final int INPUT_METHOD_LAYER = 12;
|
||||
// on-screen keyboards and other such input method user interfaces go here.
|
||||
static final int INPUT_METHOD_DIALOG_LAYER = 12;
|
||||
static final int INPUT_METHOD_DIALOG_LAYER = 13;
|
||||
// the keyguard; nothing on top of these can take focus, since they are
|
||||
// responsible for power management when displayed.
|
||||
static final int KEYGUARD_LAYER = 13;
|
||||
static final int KEYGUARD_DIALOG_LAYER = 14;
|
||||
static final int KEYGUARD_LAYER = 14;
|
||||
static final int KEYGUARD_DIALOG_LAYER = 15;
|
||||
// things in here CAN NOT take focus, but are shown on top of everything else.
|
||||
static final int SYSTEM_OVERLAY_LAYER = 15;
|
||||
static final int SYSTEM_OVERLAY_LAYER = 16;
|
||||
|
||||
static final int APPLICATION_MEDIA_SUBLAYER = -2;
|
||||
static final int APPLICATION_MEDIA_OVERLAY_SUBLAYER = -1;
|
||||
@@ -154,6 +155,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
static public final String SYSTEM_DIALOG_REASON_KEY = "reason";
|
||||
static public final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
|
||||
static public final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
|
||||
static public final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
|
||||
|
||||
final Object mLock = new Object();
|
||||
|
||||
@@ -441,7 +443,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
if (mGlobalActions == null) {
|
||||
mGlobalActions = new GlobalActions(mContext);
|
||||
}
|
||||
final boolean keyguardShowing = mKeyguardMediator.isShowing();
|
||||
final boolean keyguardShowing = mKeyguardMediator.isShowingAndNotHidden();
|
||||
mGlobalActions.showDialog(keyguardShowing, isDeviceProvisioned());
|
||||
if (keyguardShowing) {
|
||||
// since it took two seconds of long press to bring this up,
|
||||
@@ -686,6 +688,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
return STATUS_BAR_LAYER;
|
||||
case TYPE_STATUS_BAR_PANEL:
|
||||
return STATUS_BAR_PANEL_LAYER;
|
||||
case TYPE_SYSTEM_DIALOG:
|
||||
return SYSTEM_DIALOG_LAYER;
|
||||
case TYPE_SEARCH_BAR:
|
||||
return SEARCH_BAR_LAYER;
|
||||
case TYPE_PHONE:
|
||||
@@ -1108,7 +1112,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
* given the situation with the keyguard.
|
||||
*/
|
||||
void launchHomeFromHotKey() {
|
||||
if (!mHideLockScreen && mKeyguardMediator.isShowing()) {
|
||||
if (mKeyguardMediator.isShowingAndNotHidden()) {
|
||||
// don't launch home if keyguard showing
|
||||
} else if (!mHideLockScreen && mKeyguardMediator.isInputRestricted()) {
|
||||
// when in keyguard restricted mode, must first verify unlock
|
||||
@@ -1120,7 +1124,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
ActivityManagerNative.getDefault().stopAppSwitches();
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
sendCloseSystemWindows();
|
||||
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_HOME_KEY);
|
||||
startDockOrHome();
|
||||
}
|
||||
}
|
||||
@@ -1131,7 +1135,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
ActivityManagerNative.getDefault().stopAppSwitches();
|
||||
} catch (RemoteException e) {
|
||||
}
|
||||
sendCloseSystemWindows();
|
||||
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_HOME_KEY);
|
||||
startDockOrHome();
|
||||
}
|
||||
}
|
||||
@@ -1619,14 +1623,20 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
public int interceptKeyTq(RawInputEvent event, boolean screenIsOn) {
|
||||
int result = ACTION_PASS_TO_USER;
|
||||
final boolean isWakeKey = isWakeKeyTq(event);
|
||||
final boolean keyguardShowing = keyguardIsShowingTq();
|
||||
// If screen is off then we treat the case where the keyguard is open but hidden
|
||||
// the same as if it were open and in front.
|
||||
// This will prevent any keys other than the power button from waking the screen
|
||||
// when the keyguard is hidden by another activity.
|
||||
final boolean keyguardActive = (screenIsOn ?
|
||||
mKeyguardMediator.isShowingAndNotHidden() :
|
||||
mKeyguardMediator.isShowing());
|
||||
|
||||
if (false) {
|
||||
Log.d(TAG, "interceptKeyTq event=" + event + " keycode=" + event.keycode
|
||||
+ " screenIsOn=" + screenIsOn + " keyguardShowing=" + keyguardShowing);
|
||||
+ " screenIsOn=" + screenIsOn + " keyguardActive=" + keyguardActive);
|
||||
}
|
||||
|
||||
if (keyguardShowing) {
|
||||
if (keyguardActive) {
|
||||
if (screenIsOn) {
|
||||
// when the screen is on, always give the event to the keyguard
|
||||
result |= ACTION_PASS_TO_USER;
|
||||
@@ -1644,14 +1654,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
if (!mKeyguardMediator.onWakeKeyWhenKeyguardShowingTq(event.keycode)
|
||||
&& (event.keycode == KeyEvent.KEYCODE_VOLUME_DOWN
|
||||
|| event.keycode == KeyEvent.KEYCODE_VOLUME_UP)) {
|
||||
// when keyguard is showing and screen off, we need
|
||||
// to handle the volume key for calls and music here
|
||||
if (isInCall()) {
|
||||
// if the keyguard didn't wake the device, we are in call, and
|
||||
// it is a volume key, turn on the screen so that the user
|
||||
// can more easily adjust the in call volume.
|
||||
mKeyguardMediator.pokeWakelock();
|
||||
handleVolumeKey(AudioManager.STREAM_VOICE_CALL, event.keycode);
|
||||
} else if (isMusicActive()) {
|
||||
// when keyguard is showing and screen off, we need
|
||||
// to handle the volume key for music here
|
||||
handleVolumeKey(AudioManager.STREAM_MUSIC, event.keycode);
|
||||
}
|
||||
}
|
||||
@@ -1720,7 +1727,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
mShouldTurnOffOnKeyUp = false;
|
||||
boolean gohome = (mEndcallBehavior & ENDCALL_HOME) != 0;
|
||||
boolean sleeps = (mEndcallBehavior & ENDCALL_SLEEPS) != 0;
|
||||
if (keyguardShowing
|
||||
if (keyguardActive
|
||||
|| (sleeps && !gohome)
|
||||
|| (gohome && !goHome() && sleeps)) {
|
||||
// they must already be on the keyguad or home screen,
|
||||
@@ -1923,7 +1930,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public boolean keyguardIsShowingTq() {
|
||||
return mKeyguardMediator.isShowing();
|
||||
return mKeyguardMediator.isShowingAndNotHidden();
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@@ -1997,8 +2004,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
try {
|
||||
int menuState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_MENU);
|
||||
int sState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_S);
|
||||
int dpadState = mWindowManager.getKeycodeState(KeyEvent.KEYCODE_DPAD_CENTER);
|
||||
int trackballState = mWindowManager.getScancodeState(RawInputEvent.BTN_MOUSE);
|
||||
int dpadState = mWindowManager.getDPadKeycodeState(KeyEvent.KEYCODE_DPAD_CENTER);
|
||||
int trackballState = mWindowManager.getTrackballScancodeState(RawInputEvent.BTN_MOUSE);
|
||||
mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0;
|
||||
performHapticFeedbackLw(null, mSafeMode
|
||||
? HapticFeedbackConstants.SAFE_MODE_ENABLED
|
||||
@@ -2193,7 +2200,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) {
|
||||
final boolean hapticsDisabled = Settings.System.getInt(mContext.getContentResolver(),
|
||||
Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) == 0;
|
||||
if (!always && (hapticsDisabled || mKeyguardMediator.isShowing())) {
|
||||
if (!always && (hapticsDisabled || mKeyguardMediator.isShowingAndNotHidden())) {
|
||||
return false;
|
||||
}
|
||||
switch (effectId) {
|
||||
@@ -2221,7 +2228,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
}
|
||||
|
||||
public void screenOnStoppedLw() {
|
||||
if (!mKeyguardMediator.isShowing()) {
|
||||
if (!mKeyguardMediator.isShowingAndNotHidden() && mPowerManager.isScreenOn()) {
|
||||
long curTime = SystemClock.uptimeMillis();
|
||||
mPowerManager.userActivity(curTime, false, LocalPowerManager.OTHER_EVENT);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.widget.Button;
|
||||
import android.widget.TextView;
|
||||
import android.text.format.DateFormat;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.telephony.IccCard;
|
||||
import com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient;
|
||||
@@ -45,6 +46,7 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
implements KeyguardScreen, KeyguardUpdateMonitor.ConfigurationChangeCallback,
|
||||
KeyguardUpdateMonitor.InfoCallback, KeyguardUpdateMonitor.SimStateCallback {
|
||||
|
||||
private static final boolean DEBUG = false;
|
||||
private static final String TAG = "UnlockScreen";
|
||||
|
||||
// how long before we clear the wrong pattern
|
||||
@@ -71,10 +73,10 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
|
||||
private boolean mCreatedInPortrait;
|
||||
|
||||
private String mDateFormatString;
|
||||
|
||||
private TextView mCarrier;
|
||||
private TextView mCenterDot;
|
||||
private TextView mDate;
|
||||
private TextView mTime;
|
||||
|
||||
// are we showing battery information?
|
||||
private boolean mShowingBatteryInfo = false;
|
||||
@@ -102,7 +104,7 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
* Keeps track of the last time we poked the wake lock during dispatching
|
||||
* of the touch event, initalized to something gauranteed to make us
|
||||
* poke it when the user starts drawing the pattern.
|
||||
* @see #dispatchTouchEvent(android.view.MotionEvent)
|
||||
* @see #dispatchTouchEvent(android.view.MotionEvent)
|
||||
*/
|
||||
private long mLastPokeTime = -UNLOCK_PATTERN_WAKE_INTERVAL_MS;
|
||||
|
||||
@@ -162,6 +164,12 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
mTotalFailedPatternAttempts = totalFailedAttempts;
|
||||
mFailedPatternAttemptsSinceLastTimeout = totalFailedAttempts % LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT;
|
||||
|
||||
if (DEBUG) Log.d(TAG,
|
||||
"UnlockScreen() ctor: totalFailedAttempts="
|
||||
+ totalFailedAttempts + ", mFailedPat...="
|
||||
+ mFailedPatternAttemptsSinceLastTimeout
|
||||
);
|
||||
|
||||
if (mUpdateMonitor.isInPortrait()) {
|
||||
LayoutInflater.from(context).inflate(R.layout.keyguard_screen_unlock_portrait, this, true);
|
||||
} else {
|
||||
@@ -169,11 +177,9 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
}
|
||||
|
||||
mCarrier = (TextView) findViewById(R.id.carrier);
|
||||
mCenterDot = (TextView) findViewById(R.id.centerDot);
|
||||
mDate = (TextView) findViewById(R.id.date);
|
||||
mTime = (TextView) findViewById(R.id.time);
|
||||
|
||||
mCenterDot.setText("|");
|
||||
mDateFormatString = getContext().getString(R.string.full_wday_month_day_no_year);
|
||||
refreshTimeAndDateDisplay();
|
||||
|
||||
mStatus1 = (TextView) findViewById(R.id.status1);
|
||||
@@ -241,9 +247,10 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
}
|
||||
|
||||
public void setEnableFallback(boolean state) {
|
||||
if (DEBUG) Log.d(TAG, "setEnableFallback(" + state + ")");
|
||||
mEnableFallback = state;
|
||||
}
|
||||
|
||||
|
||||
private void resetStatusInfo() {
|
||||
mInstructions = null;
|
||||
mShowingBatteryInfo = mUpdateMonitor.shouldShowBatteryInfo();
|
||||
@@ -322,9 +329,7 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
|
||||
|
||||
private void refreshTimeAndDateDisplay() {
|
||||
Date now = new Date();
|
||||
mTime.setText(DateFormat.getTimeFormat(getContext()).format(now));
|
||||
mDate.setText(DateFormat.getMediumDateFormat(getContext()).format(now));
|
||||
mDate.setText(DateFormat.format(mDateFormatString, new Date()));
|
||||
}
|
||||
|
||||
|
||||
@@ -363,6 +368,11 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
mCarrier.setText(LockScreen.getCarrierString(plmn, spn));
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void onRingerModeChanged(int state) {
|
||||
// not currently used
|
||||
}
|
||||
|
||||
// ---------- SimStateCallback
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@@ -386,7 +396,7 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
public boolean needsInput() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/** {@inheritDoc} */
|
||||
public void onPause() {
|
||||
if (mCountdownTimer != null) {
|
||||
@@ -404,9 +414,9 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
mLockPatternView.enableInput();
|
||||
mLockPatternView.setEnabled(true);
|
||||
mLockPatternView.clearPattern();
|
||||
|
||||
|
||||
// show "forgot pattern?" button if we have an alternate authentication method
|
||||
mForgotPatternButton.setVisibility(mCallback.doesFallbackUnlockScreenExist()
|
||||
mForgotPatternButton.setVisibility(mCallback.doesFallbackUnlockScreenExist()
|
||||
? View.VISIBLE : View.INVISIBLE);
|
||||
|
||||
// if the user is currently locked out, enforce it.
|
||||
@@ -452,7 +462,7 @@ class UnlockScreen extends LinearLayoutWithDefaultTouchRecepient
|
||||
|
||||
public void onPatternCellAdded(List<Cell> pattern) {
|
||||
// To guard against accidental poking of the wakelock, look for
|
||||
// the user actually trying to draw a pattern of some minimal length.
|
||||
// the user actually trying to draw a pattern of some minimal length.
|
||||
if (pattern.size() > MIN_PATTERN_BEFORE_POKE_WAKELOCK) {
|
||||
mCallback.pokeWakelock(UNLOCK_PATTERN_WAKE_INTERVAL_MS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user