Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aae92163 authored by Sailesh Nepal's avatar Sailesh Nepal
Browse files

Add new phone type (public API) DO NOT MERGE

This CL adds a new public API to allow services to implement calls.

Change-Id: I4d30eb4d91bd342506cad4ced059bd8446c2bec4
parent d97a033d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -24518,6 +24518,7 @@ package android.telephony {
    method public java.lang.String iccTransmitApduLogicalChannel(int, int, int, int, int, int, java.lang.String);
    method public boolean isNetworkRoaming();
    method public void listen(android.telephony.PhoneStateListener, int);
    method public void newIncomingThirdPartyCall(android.content.ComponentName, java.lang.String);
    field public static final java.lang.String ACTION_PHONE_STATE_CHANGED = "android.intent.action.PHONE_STATE";
    field public static final java.lang.String ACTION_RESPOND_VIA_MESSAGE = "android.intent.action.RESPOND_VIA_MESSAGE";
    field public static final int CALL_STATE_IDLE = 0; // 0x0
@@ -24581,7 +24582,6 @@ package android.telephony {
    method public void hangup();
    method public void incomingCallAccept();
    method public void mute(boolean);
    method public void sendDtmf(char);
  }
  public class ThirdPartyCallService {
@@ -34080,7 +34080,6 @@ package com.android.internal.telephony {
    method public abstract void hangup() throws android.os.RemoteException;
    method public abstract void incomingCallAccept() throws android.os.RemoteException;
    method public abstract void mute(boolean) throws android.os.RemoteException;
    method public abstract void sendDtmf(char) throws android.os.RemoteException;
  }
}
+16 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony;

import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.content.ComponentName;
import android.content.Context;
import android.os.Bundle;
import android.os.RemoteException;
@@ -1421,6 +1422,21 @@ public class TelephonyManager {
        }
    }

    /**
     * Inform the phone about a new incoming third party call. The phone will bind to the service
     * identified by component to handle the call.
     * @param component the component that should handle the intent.
     * @param callId the unique id of the call. This id is passed to the service via {@link
     *               ThirdPartyCallService#incomingCallAttach incomingCallAttach}.
     */
    public void newIncomingThirdPartyCall(ComponentName component, String callId) {
        try {
            getITelephony().newIncomingThirdPartyCall(component, callId);
        } catch (RemoteException ex) {
        } catch (NullPointerException ex) {
        }
    }

    /**
     * Returns the MMS user agent.
     */
+15 −8
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package android.telephony;

import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;

import com.android.internal.telephony.IThirdPartyCallListener;
@@ -27,15 +29,12 @@ import com.android.internal.telephony.IThirdPartyCallListener;
public class ThirdPartyCallListener {
    private final IThirdPartyCallListener mListener;

    // Call end reason. TODO: rename this to DisconnectCause once they are public.
    // Call end reason.
    public static final int CALL_END_NORMAL = 1;
    public static final int CALL_END_INCOMING_MISSED = 2;
    public static final int CALL_END_OTHER = 3;

    public ThirdPartyCallListener(IThirdPartyCallListener listener) {
        if (listener == null) {
            throw new IllegalArgumentException("Invalid listener");
        }
        mListener = listener;
    }

@@ -45,7 +44,9 @@ public class ThirdPartyCallListener {
     */
    public void onCallProviderAttached(ThirdPartyCallProvider callProvider) {
        try {
            mListener.onCallProviderAttached(callProvider.getCallback());
            if (mListener != null) {
                mListener.onCallProviderAttached(callProvider.callback);
            }
        } catch (RemoteException e) {
        }
    }
@@ -55,7 +56,9 @@ public class ThirdPartyCallListener {
     */
    public void onRingingStarted() {
        try {
            if (mListener != null) {
                mListener.onRingingStarted();
            }
        } catch (RemoteException e) {
        }
    }
@@ -65,7 +68,9 @@ public class ThirdPartyCallListener {
     */
    public void onCallEstablished() {
        try {
            if (mListener != null) {
                mListener.onCallEstablished();
            }
        } catch (RemoteException e) {
        }
    }
@@ -75,7 +80,9 @@ public class ThirdPartyCallListener {
     */
    public void onCallEnded(int reason) {
        try {
            if (mListener != null) {
                mListener.onCallEnded(reason);
            }
        } catch (RemoteException e) {
        }
    }
+1 −21
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ public class ThirdPartyCallProvider {
    private static final int MSG_MUTE = 1;
    private static final int MSG_HANGUP = 2;
    private static final int MSG_INCOMING_CALL_ACCEPT = 3;
    private static final int MSG_SEND_DTMF = 4;

    /**
     * Mutes or unmutes the call.
@@ -52,18 +51,7 @@ public class ThirdPartyCallProvider {
        // default implementation empty
    }

    /**
     * Sends the given DTMF code. The code can be '0'-'9', 'A'-'D', '#', or '*'.
     */
    public void sendDtmf(char c) {
        // default implementation empty
    }

    IThirdPartyCallProvider getCallback() {
        return mCallback;
    }

    private final IThirdPartyCallProvider mCallback = new IThirdPartyCallProvider.Stub() {
    final IThirdPartyCallProvider callback = new IThirdPartyCallProvider.Stub() {
        @Override
        public void mute(boolean shouldMute) {
            Message.obtain(mHandler, MSG_MUTE, shouldMute ? 1 : 0, 0).sendToTarget();
@@ -78,11 +66,6 @@ public class ThirdPartyCallProvider {
        public void incomingCallAccept() {
            Message.obtain(mHandler, MSG_INCOMING_CALL_ACCEPT).sendToTarget();
        }

        @Override
        public void sendDtmf(char c) {
            Message.obtain(mHandler, MSG_SEND_DTMF, (int) c, 0).sendToTarget();
        }
    };

    private final Handler mHandler = new Handler() {
@@ -98,9 +81,6 @@ public class ThirdPartyCallProvider {
                case MSG_INCOMING_CALL_ACCEPT:
                    incomingCallAccept();
                    break;
                case MSG_SEND_DTMF:
                    sendDtmf((char) msg.arg1);
                    break;
            }
        }
    };
+5 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.telephony;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.RemoteException;
import android.util.Pair;

import com.android.internal.telephony.IThirdPartyCallListener;
@@ -39,7 +40,8 @@ public class ThirdPartyCallService {
    }

    /**
     * Call to attach to an incoming call.
     * Call to attach to an incoming call. This is in response to a call to {@link
     * android.telephony.TelephonyManager#newIncomingThirdPartyCall newIncomingThirdPartyCall}.
     */
    public void incomingCallAttach(ThirdPartyCallListener listener, String callId) {
        // default implementation empty
@@ -49,10 +51,10 @@ public class ThirdPartyCallService {
     * Returns an IBinder instance that can returned from the service's onBind function.
     */
    public IBinder getBinder() {
        return mCallback;
        return callback;
    }

    private final IThirdPartyCallService.Stub mCallback = new IThirdPartyCallService.Stub() {
    private final IThirdPartyCallService.Stub callback = new IThirdPartyCallService.Stub() {
        @Override
        public void outgoingCallInitiate(IThirdPartyCallListener listener, String number) {
            Rlog.w("ThirdPartyPhone", "ThirdPartyCallService.IThirdPartyCallService.out");
Loading