Hey Guys,

I am able to read the following Phone states via
intent.getExtras().getString(TelephonyManager.EXTRA_STATE) :

- IDLE
- RINGING
- OFFHOOK

Now i wanted to know if i could somehow check programmatically the
Phone state indicating that a call on hold and an active call have
been merged. I found the following code in the Android build source:

[code]
 /**
     * Returns true if the specified Call is a "conference call",
meaning
     * that it owns more than one Connection object.  This information
is
     * used to trigger certain UI changes that appear when a
conference
     * call is active (like displaying the label "Conference call",
and
     * enabling the "Manage conference" UI.)
     *
     * Watch out: This method simply checks the number of Connections,
     * *not* their states.  So if a Call has (for example) one ACTIVE
     * connection and one DISCONNECTED connection, this method will
return
     * true (which is unintuitive, since the Call isn't *really* a
     * conference call any more.)
     *
     * @return true if the specified call has more than one connection
(in any state.)
     */
    static boolean isConferenceCall(Call call) {
        // CDMA phones don't have the same concept of "conference
call" as
        // GSM phones do; there's no special "conference call" state
of
        // the UI or a "manage conference" function.  (Instead, when
        // you're in a 3-way call, all we can do is display the
"generic"
        // state of the UI.)  So as far as the in-call UI is
concerned,
        // Conference corresponds to generic display.
        PhoneApp app = PhoneApp.getInstance();
        int phoneType = app.phone.getPhoneType();
        if (phoneType == Phone.PHONE_TYPE_CDMA) {
            CdmaPhoneCallState.PhoneCallState state =
app.cdmaPhoneCallState.getCurrentCallState();
            if ((state == CdmaPhoneCallState.PhoneCallState.CONF_CALL)
                    || ((state ==
CdmaPhoneCallState.PhoneCallState.THRWAY_ACTIVE)
                    && !
app.cdmaPhoneCallState.IsThreeWayCallOrigStateDialing())) {
                return true;
            }
        } else if (phoneType == Phone.PHONE_TYPE_GSM) {
            List<Connection> connections = call.getConnections();
            if (connections != null && connections.size() > 1) {
                return true;
            }
        } else {
            throw new IllegalStateException("Unexpected phone type: "
+ phoneType);
        }
        return false;

        // TODO: We may still want to change the semantics of this
method
        // to say that a given call is only really a conference call
if
        // the number of ACTIVE connections, not the total number of
        // connections, is greater than one.  (See warning comment in
the
        // javadoc above.)
        // Here's an implementation of that:
        //        if (connections == null) {
        //            return false;
        //        }
        //        int numActiveConnections = 0;
        //        for (Connection conn : connections) {
        //            if (DBG) log("  - CONN: " + conn + ", state = "
+ conn.getState());
        //            if (conn.getState() == Call.State.ACTIVE)
numActiveConnections++;
        //            if (numActiveConnections > 1) {
        //                return true;
        //            }
        //        }
        //        return false;
    }
[/code]

Has anyone an idea how to access this useful information??

Or maybe another possibility is to let the broadcastreceiver check the
interaction of the user on the native call screen, when he presses the
mergecall()-Button while having on active call and on call on hold?
Does anyone have an idea?

I actually von my broadcastreceiver grab the change of
OneActiveCallAndOneCallOnHold -> 3-way-conference ....

Greetz Wuffy

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to