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

Commit 59591a84 authored by Nate Myren's avatar Nate Myren
Browse files

Only track mic usage when call is alive

Ensure that a call is only tracked if the call is alive. Add a check for
microphone tracking to the onCallStateChanged method.

Test: Manual
Fixes: 168551860
Change-Id: I1d17345d59b70f9b3b222b74c61ef6267d73f77e
parent a28f97e6
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -1072,6 +1072,7 @@ public class InCallController extends CallsManagerListenerBase {

    @Override
    public void onCallStateChanged(Call call, int oldState, int newState) {
        maybeTrackMicrophoneUse(isMuted());
        updateCall(call);
    }

@@ -1894,7 +1895,7 @@ public class InCallController extends CallsManagerListenerBase {
     */
    private void maybeTrackMicrophoneUse(boolean isMuted) {
        boolean wasTrackingManagedCall = mIsCallUsingMicrophone;
        mIsCallUsingMicrophone = isTrackingManagedCall() && !isMuted;
        mIsCallUsingMicrophone = isTrackingManagedAliveCall() && !isMuted;
        if (wasTrackingManagedCall != mIsCallUsingMicrophone) {
            if (mIsCallUsingMicrophone) {
                mAppOpsManager.startOp(AppOpsManager.OP_PHONE_CALL_MICROPHONE, myUid(),
@@ -1908,11 +1909,12 @@ public class InCallController extends CallsManagerListenerBase {

    /**
     * @return {@code true} if InCallController is tracking a managed call (i.e. not self managed
     * and not external).
     * and not external) that is active.
     */
    private boolean isTrackingManagedCall() {
    private boolean isTrackingManagedAliveCall() {
        return mCallIdMapper.getCalls().stream().anyMatch(c -> !c.isExternalCall()
            && !c.isSelfManaged());
            && !c.isSelfManaged() && c.isAlive() && c.getState() != CallState.ON_HOLD
                && c.getState() != CallState.AUDIO_PROCESSING);
    }

    /**