19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.telephony; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List; 20767a662ecde33c3979bf02b793d392aca0403162Wink Saville 213805c7ca324f232972c959e06253de4242f83607John Wangimport android.util.Log; 223805c7ca324f232972c959e06253de4242f83607John Wang 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@hide} 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class Call { 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Enums */ 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public enum State { 30e7a9201edbb4d18f12d00ba1b80e2481a5cb446fjsh IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isAlive() { 33e7a9201edbb4d18f12d00ba1b80e2481a5cb446fjsh return !(this == IDLE || this == DISCONNECTED || this == DISCONNECTING); 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isRinging() { 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this == INCOMING || this == WAITING; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isDialing() { 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this == DIALING || this == ALERTING; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 45767a662ecde33c3979bf02b793d392aca0403162Wink Saville 46767a662ecde33c3979bf02b793d392aca0403162Wink Saville /* Instance Variables */ 47767a662ecde33c3979bf02b793d392aca0403162Wink Saville 48767a662ecde33c3979bf02b793d392aca0403162Wink Saville public State state = State.IDLE; 49767a662ecde33c3979bf02b793d392aca0403162Wink Saville 50767a662ecde33c3979bf02b793d392aca0403162Wink Saville 5122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // Flag to indicate if the current calling/caller information 5222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // is accurate. If false the information is known to be accurate. 5322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // 5422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // For CDMA, during call waiting/3 way, there is no network response 5522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // if call waiting is answered, network timed out, dropped, 3 way 5622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville // merged, etc. 5722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville protected boolean isGeneric = false; 58767a662ecde33c3979bf02b793d392aca0403162Wink Saville 593805c7ca324f232972c959e06253de4242f83607John Wang protected final String LOG_TAG = "Call"; 603805c7ca324f232972c959e06253de4242f83607John Wang 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /* Instance Methods */ 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Do not modify the List result!!! This list is not yours to keep 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * It will change across event loop iterations top 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract List<Connection> getConnections(); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public abstract Phone getPhone(); 69767a662ecde33c3979bf02b793d392aca0403162Wink Saville public abstract boolean isMultiparty(); 70767a662ecde33c3979bf02b793d392aca0403162Wink Saville public abstract void hangup() throws CallStateException; 71767a662ecde33c3979bf02b793d392aca0403162Wink Saville 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * hasConnection 75767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param c a Connection object 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if the call contains the connection object passed in 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean hasConnection(Connection c) { 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return c.getCall() == this; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 82767a662ecde33c3979bf02b793d392aca0403162Wink Saville 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * hasConnections 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if the call contains one or more connections 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean hasConnections() { 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List connections = getConnections(); 89767a662ecde33c3979bf02b793d392aca0403162Wink Saville 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (connections == null) { 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 93767a662ecde33c3979bf02b793d392aca0403162Wink Saville 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return connections.size() > 0; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 96767a662ecde33c3979bf02b793d392aca0403162Wink Saville 97767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 98767a662ecde33c3979bf02b793d392aca0403162Wink Saville * getState 99767a662ecde33c3979bf02b793d392aca0403162Wink Saville * @return state of class call 100767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 101767a662ecde33c3979bf02b793d392aca0403162Wink Saville public State getState() { 102767a662ecde33c3979bf02b793d392aca0403162Wink Saville return state; 103767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 104767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * isIdle 107767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * FIXME rename 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return true if the call contains only disconnected connections (if any) 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isIdle() { 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return !getState().isAlive(); 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the Connection associated with this Call that was created 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * first, or null if there are no Connections in this Call 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Connection 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getEarliestConnection() { 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List l; 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long time = Long.MAX_VALUE; 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Connection c; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Connection earliest = null; 125767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project l = getConnections(); 127767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (l.size() == 0) { 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 131767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = l.size() ; i < s ; i++) { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c = (Connection) l.get(i); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t; 135767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t = c.getCreateTime(); 137767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t < time) { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project earliest = c; 14022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville time = t; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 143767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return earliest; 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 146767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getEarliestCreateTime() { 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List l; 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long time = Long.MAX_VALUE; 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project l = getConnections(); 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (l.size() == 0) { 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = l.size() ; i < s ; i++) { 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Connection c = (Connection) l.get(i); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t; 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t = c.getCreateTime(); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project time = t < time ? t : time; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return time; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getEarliestConnectTime() { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long time = Long.MAX_VALUE; 17322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville List l = getConnections(); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (l.size() == 0) { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i = 0, s = l.size() ; i < s ; i++) { 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Connection c = (Connection) l.get(i); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project long t; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t = c.getConnectTime(); 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project time = t < time ? t : time; 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return time; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isDialingOrAlerting() { 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getState().isDialing(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project isRinging() { 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return getState().isRinging(); 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville /** 20322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * Returns the Connection associated with this Call that was created 20422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * last, or null if there are no Connections in this Call 20522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville */ 20622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public Connection 20722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville getLatestConnection() { 20822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville List l = getConnections(); 20922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (l.size() == 0) { 21022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return null; 21122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 21222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 21322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville long time = 0; 21422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Connection latest = null; 21522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville for (int i = 0, s = l.size() ; i < s ; i++) { 21622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Connection c = (Connection) l.get(i); 21722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville long t = c.getCreateTime(); 21822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 21922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville if (t > time) { 22022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville latest = c; 22122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville time = t; 22222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 22322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 22422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 22522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return latest; 22622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 22722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 22822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville /** 22922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * To indicate if the connection information is accurate 23022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * or not. false means accurate. Only used for CDMA. 23122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville */ 23222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public boolean isGeneric() { 23322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville return isGeneric; 23422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 23522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 23622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville /** 23722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville * Set the generic instance variable 23822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville */ 23922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void setGeneric(boolean generic) { 24022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville isGeneric = generic; 24122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 2423805c7ca324f232972c959e06253de4242f83607John Wang 2433805c7ca324f232972c959e06253de4242f83607John Wang /** 2443805c7ca324f232972c959e06253de4242f83607John Wang * Hangup call if it is alive 2453805c7ca324f232972c959e06253de4242f83607John Wang */ 2463805c7ca324f232972c959e06253de4242f83607John Wang public void hangupIfAlive() { 2473805c7ca324f232972c959e06253de4242f83607John Wang if (getState().isAlive()) { 2483805c7ca324f232972c959e06253de4242f83607John Wang try { 2493805c7ca324f232972c959e06253de4242f83607John Wang hangup(); 2503805c7ca324f232972c959e06253de4242f83607John Wang } catch (CallStateException ex) { 2513805c7ca324f232972c959e06253de4242f83607John Wang Log.w(LOG_TAG, " hangupIfActive: caught " + ex); 2523805c7ca324f232972c959e06253de4242f83607John Wang } 2533805c7ca324f232972c959e06253de4242f83607John Wang } 2543805c7ca324f232972c959e06253de4242f83607John Wang } 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 256