1dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller/* 2dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Copyright (C) 2012 The Android Open Source Project 3dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * 4dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Licensed under the Apache License, Version 2.0 (the "License"); 5dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * you may not use this file except in compliance with the License. 6dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * You may obtain a copy of the License at 7dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * 8dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * http://www.apache.org/licenses/LICENSE-2.0 9dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * 10dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * Unless required by applicable law or agreed to in writing, software 11dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * distributed under the License is distributed on an "AS IS" BASIS, 12dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * See the License for the specific language governing permissions and 14dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller * limitations under the License. 15dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller */ 165ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerpackage com.android.keyguard; 17dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 18dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.animation.ObjectAnimator; 19d54281061c1d610fde54cbc4e7408b73a82e6378Jim Millerimport android.app.ActivityManager; 2042c3e02c52fb487676251b297461f6ff7beff3efSandeep Siddharthaimport android.app.PendingIntent; 21dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.app.SearchManager; 2248b9b0d068844af9eb37c215484831c4d6b831b0Jim Millerimport android.app.admin.DevicePolicyManager; 23dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.content.ComponentName; 24dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.content.Context; 25dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.content.Intent; 26efbfa685b678c010342f28ebed1b3b70efae201cChris Wrenimport android.graphics.drawable.Drawable; 2742c3e02c52fb487676251b297461f6ff7beff3efSandeep Siddharthaimport android.os.Bundle; 28f4d922b2d9c2011bcdc0543b5cdf2dd53ca04b25Sandeep Siddharthaimport android.os.PowerManager; 29dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.os.UserHandle; 30fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlockimport android.provider.Settings; 31f4d922b2d9c2011bcdc0543b5cdf2dd53ca04b25Sandeep Siddharthaimport android.telephony.TelephonyManager; 32dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.util.AttributeSet; 33dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.util.Log; 34dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.util.Slog; 35dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.view.View; 36dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport android.widget.LinearLayout; 37dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 3847df44aad773fb2a46d4c07e20278c7d8c0b16beJim Millerimport com.android.internal.telephony.IccCardConstants.State; 39dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.widget.LockPatternUtils; 40dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.widget.multiwaveview.GlowPadView; 41dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerimport com.android.internal.widget.multiwaveview.GlowPadView.OnTriggerListener; 42dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 43dcb3d84b82cc2448d04e73359a716581bfb657dbJim Millerpublic class KeyguardSelectorView extends LinearLayout implements KeyguardSecurityView { 44dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private static final boolean DEBUG = KeyguardHostView.DEBUG; 45dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private static final String TAG = "SecuritySelectorView"; 46dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private static final String ASSIST_ICON_METADATA_NAME = 47dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller "com.android.systemui.action_assist_icon"; 48d54281061c1d610fde54cbc4e7408b73a82e6378Jim Miller 49dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private KeyguardSecurityCallback mCallback; 50dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private GlowPadView mGlowPadView; 51dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private ObjectAnimator mAnim; 52109f1fd80c90409c0d7f21d49989641dfdf2ad1bJim Miller private View mFadeView; 53efbfa685b678c010342f28ebed1b3b70efae201cChris Wren private boolean mIsBouncing; 54dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private boolean mCameraDisabled; 55dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private boolean mSearchDisabled; 56dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private LockPatternUtils mLockPatternUtils; 57efbfa685b678c010342f28ebed1b3b70efae201cChris Wren private SecurityMessageDisplay mSecurityMessageDisplay; 58efbfa685b678c010342f28ebed1b3b70efae201cChris Wren private Drawable mBouncerFrame; 59dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 60dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller OnTriggerListener mOnTriggerListener = new OnTriggerListener() { 61dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 62dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onTrigger(View v, int target) { 63dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller final int resId = mGlowPadView.getResourceIdForTarget(target); 6442c3e02c52fb487676251b297461f6ff7beff3efSandeep Siddhartha 65dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller switch (resId) { 665ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller case R.drawable.ic_action_assist_generic: 67dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller Intent assistIntent = 68dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) 69f9c5e0fe837a3090820da502ecaabc5accc00aceDianne Hackborn .getAssistIntent(mContext, true, UserHandle.USER_CURRENT); 70dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (assistIntent != null) { 7157f928fc4afc02d2fe45523efea687eee7f86c02John Spurlock mActivityLauncher.launchActivity(assistIntent, false, true, null, null); 72dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } else { 73dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller Log.w(TAG, "Failed to get intent for assist activity"); 74dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 75dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mCallback.userActivity(0); 76dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller break; 77dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 785ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller case R.drawable.ic_lockscreen_camera: 7957f928fc4afc02d2fe45523efea687eee7f86c02John Spurlock mActivityLauncher.launchCamera(null, null); 80dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mCallback.userActivity(0); 81dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller break; 82dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 835ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller case R.drawable.ic_lockscreen_unlock_phantom: 845ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller case R.drawable.ic_lockscreen_unlock: 853dc524bc31a1578693ca958ef442dfa092b7aa7fJeff Brown mCallback.userActivity(0); 86dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mCallback.dismiss(false); 87dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller break; 88dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 89dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 90dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 91dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onReleased(View v, int handle) { 92efbfa685b678c010342f28ebed1b3b70efae201cChris Wren if (!mIsBouncing) { 93efbfa685b678c010342f28ebed1b3b70efae201cChris Wren doTransition(mFadeView, 1.0f); 94efbfa685b678c010342f28ebed1b3b70efae201cChris Wren } 95dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 96dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 97dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onGrabbed(View v, int handle) { 983dc524bc31a1578693ca958ef442dfa092b7aa7fJeff Brown mCallback.userActivity(0); 99109f1fd80c90409c0d7f21d49989641dfdf2ad1bJim Miller doTransition(mFadeView, 0.0f); 100dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 101dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 102dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onGrabbedStateChange(View v, int handle) { 103dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 104dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 105dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 106dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onFinishFinalAnimation() { 107dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 108dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 109dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 110dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller }; 111dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 112f4d922b2d9c2011bcdc0543b5cdf2dd53ca04b25Sandeep Siddhartha KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() { 113dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 114dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 115dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onDevicePolicyManagerStateChanged() { 116dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller updateTargets(); 117dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 118dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 119dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 12047df44aad773fb2a46d4c07e20278c7d8c0b16beJim Miller public void onSimStateChanged(State simState) { 121dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller updateTargets(); 122dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 123dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller }; 124dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 125dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock private final KeyguardActivityLauncher mActivityLauncher = new KeyguardActivityLauncher() { 126dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 127dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock @Override 128dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock KeyguardSecurityCallback getCallback() { 129dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock return mCallback; 130ee82f8fa2d47fc1dbfc29582ae348b3c45ff8fe0Jim Miller } 131ee82f8fa2d47fc1dbfc29582ae348b3c45ff8fe0Jim Miller 132dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock @Override 133dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock LockPatternUtils getLockPatternUtils() { 134dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock return mLockPatternUtils; 1355f75aa15d7c1c5ea1c1eecd95bf2bb0920173eb2Jim Miller } 136dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock 137dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock @Override 138dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock Context getContext() { 139dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock return mContext; 140dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock }}; 141dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock 142dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock public KeyguardSelectorView(Context context) { 143dcc9681b0d4f52e1f441ef2abdda3eb949cc0c4bJohn Spurlock this(context, null); 1445f75aa15d7c1c5ea1c1eecd95bf2bb0920173eb2Jim Miller } 1455f75aa15d7c1c5ea1c1eecd95bf2bb0920173eb2Jim Miller 146dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public KeyguardSelectorView(Context context, AttributeSet attrs) { 147dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller super(context, attrs); 148dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mLockPatternUtils = new LockPatternUtils(getContext()); 149dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 150dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 151dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 152dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller protected void onFinishInflate() { 153dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller super.onFinishInflate(); 154dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mGlowPadView = (GlowPadView) findViewById(R.id.glow_pad_view); 155dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mGlowPadView.setOnTriggerListener(mOnTriggerListener); 156dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller updateTargets(); 157efbfa685b678c010342f28ebed1b3b70efae201cChris Wren 158efbfa685b678c010342f28ebed1b3b70efae201cChris Wren mSecurityMessageDisplay = new KeyguardMessageArea.Helper(this); 159efbfa685b678c010342f28ebed1b3b70efae201cChris Wren View bouncerFrameView = findViewById(R.id.keyguard_selector_view_frame); 160efbfa685b678c010342f28ebed1b3b70efae201cChris Wren mBouncerFrame = bouncerFrameView.getBackground(); 161dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 162dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 1630ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller public void setCarrierArea(View carrierArea) { 1640ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller mFadeView = carrierArea; 1650ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller } 1660ff7f010f8bfd011f0915031b02739ae3bee401eJim Miller 167dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public boolean isTargetPresent(int resId) { 168dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return mGlowPadView.getTargetPosition(resId) != -1; 169dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 170dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 1716fb841fa219eaae3e87f2fdc05e105d7a1813c42Adam Cohen @Override 1726fb841fa219eaae3e87f2fdc05e105d7a1813c42Adam Cohen public void showUsabilityHint() { 1730a8d32673b3d34153c287916f0ca8d4439f3087eAdam Cohen mGlowPadView.ping(); 1740a8d32673b3d34153c287916f0ca8d4439f3087eAdam Cohen } 1750a8d32673b3d34153c287916f0ca8d4439f3087eAdam Cohen 176dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller private void updateTargets() { 177599dd7ce9adf8ca067cefb0b191a5ac20ec35a79Amith Yamasani int currentUserHandle = mLockPatternUtils.getCurrentUser(); 17848b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller DevicePolicyManager dpm = mLockPatternUtils.getDevicePolicyManager(); 17948b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller int disabledFeatures = dpm.getKeyguardDisabledFeatures(null, currentUserHandle); 18048b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller boolean secureCameraDisabled = mLockPatternUtils.isSecure() 18148b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller && (disabledFeatures & DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA) != 0; 18248b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller boolean cameraDisabledByAdmin = dpm.getCameraDisabled(null, currentUserHandle) 18348b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller || secureCameraDisabled; 184dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller final KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(getContext()); 185dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller boolean disabledBySimState = monitor.isSimLocked(); 186dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller boolean cameraTargetPresent = 1875ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller isTargetPresent(R.drawable.ic_lockscreen_camera); 188dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller boolean searchTargetPresent = 1895ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller isTargetPresent(R.drawable.ic_action_assist_generic); 190dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 19148b9b0d068844af9eb37c215484831c4d6b831b0Jim Miller if (cameraDisabledByAdmin) { 192dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller Log.v(TAG, "Camera disabled by Device Policy"); 193dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } else if (disabledBySimState) { 194dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller Log.v(TAG, "Camera disabled by Sim State"); 195dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 196fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock boolean currentUserSetup = 0 != Settings.Secure.getIntForUser( 197fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock mContext.getContentResolver(), 198fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock Settings.Secure.USER_SETUP_COMPLETE, 199fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock 0 /*default */, 200fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock currentUserHandle); 201dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller boolean searchActionAvailable = 202dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) 203f9c5e0fe837a3090820da502ecaabc5accc00aceDianne Hackborn .getAssistIntent(mContext, false, UserHandle.USER_CURRENT) != null; 204fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock mCameraDisabled = cameraDisabledByAdmin || disabledBySimState || !cameraTargetPresent 205fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock || !currentUserSetup; 206fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock mSearchDisabled = disabledBySimState || !searchActionAvailable || !searchTargetPresent 207fafdb6f9ca2ded293ed45e9436f04bbc03e75072John Spurlock || !currentUserSetup; 208dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller updateResources(); 209dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 210dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 211dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void updateResources() { 212dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // Update the search icon with drawable from the search .apk 213dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (!mSearchDisabled) { 214dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller Intent intent = ((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE)) 215f9c5e0fe837a3090820da502ecaabc5accc00aceDianne Hackborn .getAssistIntent(mContext, false, UserHandle.USER_CURRENT); 216dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (intent != null) { 217dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // XXX Hack. We need to substitute the icon here but haven't formalized 218dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // the public API. The "_google" metadata will be going away, so 219dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller // DON'T USE IT! 220dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller ComponentName component = intent.getComponent(); 221dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller boolean replaced = mGlowPadView.replaceTargetDrawablesIfPresent(component, 2225ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller ASSIST_ICON_METADATA_NAME + "_google", R.drawable.ic_action_assist_generic); 223dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 224dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (!replaced && !mGlowPadView.replaceTargetDrawablesIfPresent(component, 2255ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller ASSIST_ICON_METADATA_NAME, R.drawable.ic_action_assist_generic)) { 226dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller Slog.w(TAG, "Couldn't grab icon from package " + component); 227dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 228dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 229dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 230dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 2315ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller mGlowPadView.setEnableTarget(R.drawable.ic_lockscreen_camera, !mCameraDisabled); 2325ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Miller mGlowPadView.setEnableTarget(R.drawable.ic_action_assist_generic, !mSearchDisabled); 233dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 234dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 235109f1fd80c90409c0d7f21d49989641dfdf2ad1bJim Miller void doTransition(View view, float to) { 236dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller if (mAnim != null) { 237dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mAnim.cancel(); 238dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 239109f1fd80c90409c0d7f21d49989641dfdf2ad1bJim Miller mAnim = ObjectAnimator.ofFloat(view, "alpha", to); 240dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mAnim.start(); 241dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 242dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 243dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void setKeyguardCallback(KeyguardSecurityCallback callback) { 244dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mCallback = callback; 245dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 246dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 247dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void setLockPatternUtils(LockPatternUtils utils) { 248dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mLockPatternUtils = utils; 249dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 250dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 251dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 252dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void reset() { 253dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller mGlowPadView.reset(false); 254dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 255dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 256dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 257dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public boolean needsInput() { 258dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return false; 259dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 260dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 261dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 262dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public void onPause() { 263f4d922b2d9c2011bcdc0543b5cdf2dd53ca04b25Sandeep Siddhartha KeyguardUpdateMonitor.getInstance(getContext()).removeCallback(mUpdateCallback); 264dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 265dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 266dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 267a042ac90640c0c3fd3c5349083b86bbfd6319b64Chris Wren public void onResume(int reason) { 268f4d922b2d9c2011bcdc0543b5cdf2dd53ca04b25Sandeep Siddhartha KeyguardUpdateMonitor.getInstance(getContext()).registerCallback(mUpdateCallback); 269dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 270dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller 271dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller @Override 272dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller public KeyguardSecurityCallback getCallback() { 273dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller return mCallback; 274dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller } 275c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren 276c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren @Override 277c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren public void showBouncer(int duration) { 278efbfa685b678c010342f28ebed1b3b70efae201cChris Wren mIsBouncing = true; 279efbfa685b678c010342f28ebed1b3b70efae201cChris Wren KeyguardSecurityViewHelper. 280efbfa685b678c010342f28ebed1b3b70efae201cChris Wren showBouncer(mSecurityMessageDisplay, mFadeView, mBouncerFrame, duration); 281c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren } 282c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren 283c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren @Override 284c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren public void hideBouncer(int duration) { 285efbfa685b678c010342f28ebed1b3b70efae201cChris Wren mIsBouncing = false; 286efbfa685b678c010342f28ebed1b3b70efae201cChris Wren KeyguardSecurityViewHelper. 287efbfa685b678c010342f28ebed1b3b70efae201cChris Wren hideBouncer(mSecurityMessageDisplay, mFadeView, mBouncerFrame, duration); 288c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren } 289dcb3d84b82cc2448d04e73359a716581bfb657dbJim Miller} 290