summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jungshik Jang <jayjang@google.com> 2014-06-26 01:13:57 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2014-06-24 01:52:26 +0000
commit5ef8580b52f6f78796f8ea83cf162bb69c7290a0 (patch)
tree3f0b7c58525739ea3057f368b4fd8aafd41d0e64
parent6d8a7d7009c12660dc4d6f7f188e366b9b813c98 (diff)
parenta858d221ff86c497e745222ea15bab141e337636 (diff)
Merge "Notify ARC status update to AudioService."
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java23
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java5
-rw-r--r--services/core/java/com/android/server/hdmi/SystemAudioAutoInitiationAction.java3
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));
}
}