LockTaskNotify.java revision 07f82b79422c4c1e4bc789775c72d3ef04fbb041
162515beee67307d8859beec521b7baedfa54b2b5Jason Monk/* 262515beee67307d8859beec521b7baedfa54b2b5Jason Monk * Copyright (C) 2013 The Android Open Source Project 362515beee67307d8859beec521b7baedfa54b2b5Jason Monk * 462515beee67307d8859beec521b7baedfa54b2b5Jason Monk * Licensed under the Apache License, Version 2.0 (the "License"); 562515beee67307d8859beec521b7baedfa54b2b5Jason Monk * you may not use this file except in compliance with the License. 662515beee67307d8859beec521b7baedfa54b2b5Jason Monk * You may obtain a copy of the License at 762515beee67307d8859beec521b7baedfa54b2b5Jason Monk * 862515beee67307d8859beec521b7baedfa54b2b5Jason Monk * http://www.apache.org/licenses/LICENSE-2.0 962515beee67307d8859beec521b7baedfa54b2b5Jason Monk * 1062515beee67307d8859beec521b7baedfa54b2b5Jason Monk * Unless required by applicable law or agreed to in writing, software 1162515beee67307d8859beec521b7baedfa54b2b5Jason Monk * distributed under the License is distributed on an "AS IS" BASIS, 1262515beee67307d8859beec521b7baedfa54b2b5Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1362515beee67307d8859beec521b7baedfa54b2b5Jason Monk * See the License for the specific language governing permissions and 1462515beee67307d8859beec521b7baedfa54b2b5Jason Monk * limitations under the License. 1562515beee67307d8859beec521b7baedfa54b2b5Jason Monk */ 1662515beee67307d8859beec521b7baedfa54b2b5Jason Monk 1762515beee67307d8859beec521b7baedfa54b2b5Jason Monkpackage com.android.server.am; 1862515beee67307d8859beec521b7baedfa54b2b5Jason Monk 1962515beee67307d8859beec521b7baedfa54b2b5Jason Monkimport android.content.Context; 2062515beee67307d8859beec521b7baedfa54b2b5Jason Monkimport android.os.Handler; 2162515beee67307d8859beec521b7baedfa54b2b5Jason Monkimport android.os.Message; 22815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monkimport android.view.accessibility.AccessibilityManager; 23a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monkimport android.widget.Toast; 2462515beee67307d8859beec521b7baedfa54b2b5Jason Monk 2562515beee67307d8859beec521b7baedfa54b2b5Jason Monkimport com.android.internal.R; 2662515beee67307d8859beec521b7baedfa54b2b5Jason Monk 2762515beee67307d8859beec521b7baedfa54b2b5Jason Monk/** 2862515beee67307d8859beec521b7baedfa54b2b5Jason Monk * Helper to manage showing/hiding a image to notify them that they are entering 2962515beee67307d8859beec521b7baedfa54b2b5Jason Monk * or exiting lock-to-app mode. 3062515beee67307d8859beec521b7baedfa54b2b5Jason Monk */ 3162515beee67307d8859beec521b7baedfa54b2b5Jason Monkpublic class LockTaskNotify { 3262515beee67307d8859beec521b7baedfa54b2b5Jason Monk private static final String TAG = "LockTaskNotify"; 3362515beee67307d8859beec521b7baedfa54b2b5Jason Monk 3462515beee67307d8859beec521b7baedfa54b2b5Jason Monk private final Context mContext; 3562515beee67307d8859beec521b7baedfa54b2b5Jason Monk private final H mHandler; 36815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monk private AccessibilityManager mAccessibilityManager; 3707f82b79422c4c1e4bc789775c72d3ef04fbb041Jason Monk private Toast mLastToast; 3862515beee67307d8859beec521b7baedfa54b2b5Jason Monk 3962515beee67307d8859beec521b7baedfa54b2b5Jason Monk public LockTaskNotify(Context context) { 4062515beee67307d8859beec521b7baedfa54b2b5Jason Monk mContext = context; 41815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monk mAccessibilityManager = (AccessibilityManager) 42815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monk mContext.getSystemService(Context.ACCESSIBILITY_SERVICE); 4362515beee67307d8859beec521b7baedfa54b2b5Jason Monk mHandler = new H(); 4462515beee67307d8859beec521b7baedfa54b2b5Jason Monk } 4562515beee67307d8859beec521b7baedfa54b2b5Jason Monk 46a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk public void showToast(boolean isLocked) { 47a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk mHandler.obtainMessage(H.SHOW_TOAST, isLocked ? 1 : 0, 0 /* Not used */).sendToTarget(); 48a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk } 49a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk 50a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk public void handleShowToast(boolean isLocked) { 51a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk String text = mContext.getString(isLocked 52a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk ? R.string.lock_to_app_toast_locked : R.string.lock_to_app_toast); 53815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monk if (!isLocked && mAccessibilityManager.isEnabled()) { 54815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monk text = mContext.getString(R.string.lock_to_app_toast_accessible); 55815e057b9bb19acd77bf01ecb690b6e9fa85902eJason Monk } 5607f82b79422c4c1e4bc789775c72d3ef04fbb041Jason Monk if (mLastToast != null) { 5707f82b79422c4c1e4bc789775c72d3ef04fbb041Jason Monk mLastToast.cancel(); 5807f82b79422c4c1e4bc789775c72d3ef04fbb041Jason Monk } 5907f82b79422c4c1e4bc789775c72d3ef04fbb041Jason Monk mLastToast = Toast.makeText(mContext, text, Toast.LENGTH_LONG); 6007f82b79422c4c1e4bc789775c72d3ef04fbb041Jason Monk mLastToast.show(); 61a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk } 62a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk 6362515beee67307d8859beec521b7baedfa54b2b5Jason Monk public void show(boolean starting) { 647779bf1ce8243d9f856c05db3cc5a37a8227a970Jason Monk int showString = R.string.lock_to_app_exit; 657779bf1ce8243d9f856c05db3cc5a37a8227a970Jason Monk if (starting) { 667779bf1ce8243d9f856c05db3cc5a37a8227a970Jason Monk showString = R.string.lock_to_app_start; 6762515beee67307d8859beec521b7baedfa54b2b5Jason Monk } 687779bf1ce8243d9f856c05db3cc5a37a8227a970Jason Monk Toast.makeText(mContext, mContext.getString(showString), Toast.LENGTH_LONG).show(); 6962515beee67307d8859beec521b7baedfa54b2b5Jason Monk } 7062515beee67307d8859beec521b7baedfa54b2b5Jason Monk 7162515beee67307d8859beec521b7baedfa54b2b5Jason Monk private final class H extends Handler { 72a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk private static final int SHOW_TOAST = 3; 7362515beee67307d8859beec521b7baedfa54b2b5Jason Monk 7462515beee67307d8859beec521b7baedfa54b2b5Jason Monk @Override 7562515beee67307d8859beec521b7baedfa54b2b5Jason Monk public void handleMessage(Message msg) { 7662515beee67307d8859beec521b7baedfa54b2b5Jason Monk switch(msg.what) { 77a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk case SHOW_TOAST: 78a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk handleShowToast(msg.arg1 != 0); 79a8f569c10a423ced5be7e019c3df2bca11b052f5Jason Monk break; 8062515beee67307d8859beec521b7baedfa54b2b5Jason Monk } 8162515beee67307d8859beec521b7baedfa54b2b5Jason Monk } 8262515beee67307d8859beec521b7baedfa54b2b5Jason Monk } 8362515beee67307d8859beec521b7baedfa54b2b5Jason Monk} 84