1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/* 2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2016 The Android Open Source Project 3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License. 6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at 7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software 11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and 14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License. 15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 16ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 17ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpackage com.android.dialer.util; 18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 19ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.graphics.Point; 20ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 21ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/** 22ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Singleton class to keep track of where the user last touched the screen. 23ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 24ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * <p>Used to pass on to the InCallUI for animation. 25ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpublic class TouchPointManager { 27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static final String TOUCH_POINT = "touchPoint"; 29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 30183cb71663320f16149d83eeebaff7795a4b55f2linyuh private static TouchPointManager instance = new TouchPointManager(); 31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 32183cb71663320f16149d83eeebaff7795a4b55f2linyuh private Point point = new Point(); 33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 3410b34a5ebf12e97ecba0caf3c8e30b476b038a96Eric Erfanian /** Private constructor. Instance should only be acquired through getRunningInstance(). */ 35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private TouchPointManager() {} 36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 37ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public static TouchPointManager getInstance() { 38183cb71663320f16149d83eeebaff7795a4b55f2linyuh return instance; 39ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 40ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 41ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public Point getPoint() { 42183cb71663320f16149d83eeebaff7795a4b55f2linyuh return point; 43ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void setPoint(int x, int y) { 46183cb71663320f16149d83eeebaff7795a4b55f2linyuh point.set(x, y); 47ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 49ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** 50ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * When a point is initialized, its value is (0,0). Since it is highly unlikely a user will touch 51ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * at that exact point, if the point in TouchPointManager is (0,0), it is safe to assume that the 52ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * TouchPointManager has not yet collected a touch. 53ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 54ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * @return True if there is a valid point saved. Define a valid point as any point that is not 55ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * (0,0). 56ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 57ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public boolean hasValidPoint() { 58183cb71663320f16149d83eeebaff7795a4b55f2linyuh return point.x != 0 || point.y != 0; 59ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 60ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian} 61