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

Commit 5ef8580b authored by Jungshik Jang's avatar Jungshik Jang Committed by Android (Google) Code Review
Browse files

Merge "Notify ARC status update to AudioService."

parents 6d8a7d70 a858d221
Loading
Loading
Loading
Loading
+11 −12
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.hardware.hdmi.HdmiCec;
import android.hardware.hdmi.HdmiCecDeviceInfo;
import android.hardware.hdmi.HdmiCecDeviceInfo;
import android.hardware.hdmi.HdmiCecMessage;
import android.hardware.hdmi.HdmiCecMessage;
import android.hardware.hdmi.IHdmiControlCallback;
import android.hardware.hdmi.IHdmiControlCallback;
import android.media.AudioSystem;
import android.os.RemoteException;
import android.os.RemoteException;
import android.util.Slog;
import android.util.Slog;
import android.util.SparseArray;
import android.util.SparseArray;
@@ -47,7 +48,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private boolean mSystemAudioMode;
    private boolean mSystemAudioMode;



    // Copy of mDeviceInfos to guarantee thread-safety.
    // Copy of mDeviceInfos to guarantee thread-safety.
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private List<HdmiCecDeviceInfo> mSafeAllDeviceInfos = Collections.emptyList();
    private List<HdmiCecDeviceInfo> mSafeAllDeviceInfos = Collections.emptyList();
@@ -312,15 +312,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
            boolean oldStatus = mArcStatusEnabled;
            boolean oldStatus = mArcStatusEnabled;
            // 1. Enable/disable ARC circuit.
            // 1. Enable/disable ARC circuit.
            mService.setAudioReturnChannel(enabled);
            mService.setAudioReturnChannel(enabled);

            // 2. Notify arc status to audio service.
            // TODO: notify arc mode change to AudioManager.
            notifyArcStatusToAudioService(enabled);

            // 3. Update arc status;
            // 2. Update arc status;
            mArcStatusEnabled = enabled;
            mArcStatusEnabled = enabled;
            return oldStatus;
            return oldStatus;
        }
        }
    }
    }


    private void notifyArcStatusToAudioService(boolean enabled) {
        // Note that we don't set any name to ARC.
        mService.getAudioManager().setWiredDeviceConnectionState(
                AudioSystem.DEVICE_OUT_HDMI_ARC,
                enabled ? 1 : 0, "");
    }

    /**
    /**
     * Returns whether ARC is enabled or not.
     * Returns whether ARC is enabled or not.
     */
     */
@@ -613,7 +619,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
    @ServiceThreadOnly
    @ServiceThreadOnly
    void onHotplug(int portNo, boolean connected) {
    void onHotplug(int portNo, boolean connected) {
        assertRunOnServiceThread();
        assertRunOnServiceThread();
        // TODO: delegate onHotplug event to each local device.


        // Tv device will have permanent HotplugDetectionAction.
        // Tv device will have permanent HotplugDetectionAction.
        List<HotplugDetectionAction> hotplugActions = getActions(HotplugDetectionAction.class);
        List<HotplugDetectionAction> hotplugActions = getActions(HotplugDetectionAction.class);
@@ -623,10 +628,4 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
            hotplugActions.get(0).pollAllDevicesNow();
            hotplugActions.get(0).pollAllDevicesNow();
        }
        }
    }
    }

    boolean canChangeSystemAudio() {
        // TODO: implement this.
        // return true if no system audio control sequence is running.
        return false;
    }
}
}
+5 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import android.hardware.hdmi.IHdmiControlService;
import android.hardware.hdmi.IHdmiDeviceEventListener;
import android.hardware.hdmi.IHdmiDeviceEventListener;
import android.hardware.hdmi.IHdmiHotplugEventListener;
import android.hardware.hdmi.IHdmiHotplugEventListener;
import android.hardware.hdmi.IHdmiSystemAudioModeChangeListener;
import android.hardware.hdmi.IHdmiSystemAudioModeChangeListener;
import android.media.AudioManager;
import android.os.Build;
import android.os.Build;
import android.os.Handler;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.HandlerThread;
@@ -870,4 +871,8 @@ public final class HdmiControlService extends SystemService {
    private HdmiCecLocalDevicePlayback playback() {
    private HdmiCecLocalDevicePlayback playback() {
        return (HdmiCecLocalDevicePlayback) mCecController.getLocalDevice(HdmiCec.DEVICE_PLAYBACK);
        return (HdmiCecLocalDevicePlayback) mCecController.getLocalDevice(HdmiCec.DEVICE_PLAYBACK);
    }
    }

    AudioManager getAudioManager() {
        return (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
    }
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -115,6 +115,7 @@ final class SystemAudioAutoInitiationAction extends FeatureAction {
    }
    }


    private boolean canChangeSystemAudio() {
    private boolean canChangeSystemAudio() {
        return tv().canChangeSystemAudio();
        return !(tv().hasAction(SystemAudioActionFromTv.class)
               || tv().hasAction(SystemAudioActionFromAvr.class));
    }
    }
}
}