public boolean isCallConnected() {
boolean isAlive = false;
try {
Class connectionClass = Connection.class;
connectionClass = Class
.forName("com.android.internal.telephony.Connection");
Method isAliveMethod = connectionClass.getDeclaredMethod("isAlive",
(Class[]) null);
/*
* Method isAliveMethod =
* connectionClass.getDeclaredMethod("isRinging", (Class[]) null);
*/
isAliveMethod.setAccessible(true);
Connection connection = (Connection) connectionClass.newInstance();
try {
isAlive = (Boolean) isAliveMethod.invoke(connection,
(Object[]) null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
Log.e("song", "song:illegal argument");
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
Log.e("song", "song:" + e.getMessage());
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
Log.e("song", "song:" + e.getMessage());
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
Log.e("song", "song: class not found");
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
Log.e("song", "song:no such method");
e.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return isAlive;
}