diff options
| author | 2014-06-26 01:13:57 +0000 | |
|---|---|---|
| committer | 2014-06-24 01:52:26 +0000 | |
| commit | 5ef8580b52f6f78796f8ea83cf162bb69c7290a0 (patch) | |
| tree | 3f0b7c58525739ea3057f368b4fd8aafd41d0e64 | |
| parent | 6d8a7d7009c12660dc4d6f7f188e366b9b813c98 (diff) | |
| parent | a858d221ff86c497e745222ea15bab141e337636 (diff) | |
Merge "Notify ARC status update to AudioService."
3 files changed, 18 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 2b53895b7dc4..0333dbf43c9b 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -20,6 +20,7 @@ import android.hardware.hdmi.HdmiCec; import android.hardware.hdmi.HdmiCecDeviceInfo; import android.hardware.hdmi.HdmiCecMessage; import android.hardware.hdmi.IHdmiControlCallback; +import android.media.AudioSystem; import android.os.RemoteException; import android.util.Slog; import android.util.SparseArray; @@ -47,7 +48,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @GuardedBy("mLock") private boolean mSystemAudioMode; - // Copy of mDeviceInfos to guarantee thread-safety. @GuardedBy("mLock") private List<HdmiCecDeviceInfo> mSafeAllDeviceInfos = Collections.emptyList(); @@ -312,15 +312,21 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { boolean oldStatus = mArcStatusEnabled; // 1. Enable/disable ARC circuit. mService.setAudioReturnChannel(enabled); - - // TODO: notify arc mode change to AudioManager. - - // 2. Update arc status; + // 2. Notify arc status to audio service. + notifyArcStatusToAudioService(enabled); + // 3. Update arc status; mArcStatusEnabled = enabled; 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. */ @@ -613,7 +619,6 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly void onHotplug(int portNo, boolean connected) { assertRunOnServiceThread(); - // TODO: delegate onHotplug event to each local device. // Tv device will have permanent HotplugDetectionAction. List<HotplugDetectionAction> hotplugActions = getActions(HotplugDetectionAction.class); @@ -623,10 +628,4 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { hotplugActions.get(0).pollAllDevicesNow(); } } - - boolean canChangeSystemAudio() { - // TODO: implement this. - // return true if no system audio control sequence is running. - return false; - } } diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 1a18c10ad541..53cb81d54705 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -28,6 +28,7 @@ import android.hardware.hdmi.IHdmiControlService; import android.hardware.hdmi.IHdmiDeviceEventListener; import android.hardware.hdmi.IHdmiHotplugEventListener; import android.hardware.hdmi.IHdmiSystemAudioModeChangeListener; +import android.media.AudioManager; import android.os.Build; import android.os.Handler; import android.os.HandlerThread; @@ -870,4 +871,8 @@ public final class HdmiControlService extends SystemService { private HdmiCecLocalDevicePlayback playback() { return (HdmiCecLocalDevicePlayback) mCecController.getLocalDevice(HdmiCec.DEVICE_PLAYBACK); } + + AudioManager getAudioManager() { + return (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); + } } diff --git a/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java b/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java index 845eaa9e3709..6f4164baf184 100644 --- a/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java +++ b/services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java @@ -115,6 +115,7 @@ final class SystemAudioAutoInitiationAction extends FeatureAction { } private boolean canChangeSystemAudio() { - return tv().canChangeSystemAudio(); + return !(tv().hasAction(SystemAudioActionFromTv.class) + || tv().hasAction(SystemAudioActionFromAvr.class)); } } |