diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 70d108aeaab81..b36c176ef8445 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -165,6 +165,11 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly void deviceSelect(int targetAddress, IHdmiControlCallback callback) { assertRunOnServiceThread(); + ActiveSource active = getActiveSource(); + if (active.isValid() && targetAddress == active.logicalAddress) { + invokeCallback(callback, HdmiControlManager.RESULT_SUCCESS); + return; + } if (targetAddress == Constants.ADDR_INTERNAL) { handleSelectInternalSource(); // Switching to internal source is always successful even when CEC control is disabled. diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java index ba79fed4bd212..08ac210d2f0a2 100644 --- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java +++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java @@ -930,6 +930,7 @@ class TvInputHardwareManager implements TvInputHal.Callback { if (inputId != null) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(TvContract.buildChannelUriForPassthroughTvInput(inputId)); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } else { Slog.w(TAG, "onChanged: InputId cannot be found for :" + device);