diff options
author | Terry Heo <terryheo@google.com> | 2014-08-20 06:57:27 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-08-16 04:15:21 +0000 |
commit | 5e85359a36c14c0c568b73f138f6c8f4baad9b8e (patch) | |
tree | 9dd895f1dcb8b4030a37bf33f3b178873d5c54d4 | |
parent | b26fcf68e1a0153a1ce0f43af7f21bb7e18dde4d (diff) | |
parent | 1ca0a43251a31bb1b4253dc404316cc4b840f497 (diff) | |
download | frameworks_base-5e85359a36c14c0c568b73f138f6c8f4baad9b8e.zip frameworks_base-5e85359a36c14c0c568b73f138f6c8f4baad9b8e.tar.gz frameworks_base-5e85359a36c14c0c568b73f138f6c8f4baad9b8e.tar.bz2 |
Merge "CEC: Broadcast language setting whenever it changes" into lmp-dev
-rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java | 18 | ||||
-rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiControlService.java | 28 |
2 files changed, 38 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java index 850ff10..73f5cfd 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java @@ -418,17 +418,25 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { @ServiceThreadOnly protected boolean handleGetMenuLanguage(HdmiCecMessage message) { assertRunOnServiceThread(); - HdmiCecMessage command = HdmiCecMessageBuilder.buildSetMenuLanguageCommand( - mAddress, Locale.getDefault().getISO3Language()); // TODO: figure out how to handle failed to get language code. - if (command != null) { - mService.sendCecCommand(command); - } else { + if (!broadcastMenuLanguage(Locale.getDefault().getISO3Language())) { Slog.w(TAG, "Failed to respond to <Get Menu Language>: " + message.toString()); } return true; } + @ServiceThreadOnly + boolean broadcastMenuLanguage(String language) { + assertRunOnServiceThread(); + HdmiCecMessage command = HdmiCecMessageBuilder.buildSetMenuLanguageCommand( + mAddress, language); + if (command != null) { + mService.sendCecCommand(command); + return true; + } + return false; + } + @Override @ServiceThreadOnly protected boolean handleReportPhysicalAddress(HdmiCecMessage message) { diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 8bbc404..5b99f14 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -78,6 +78,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Locale; /** * Provides a service for sending and processing HDMI control messages, @@ -123,7 +124,7 @@ public final class HdmiControlService extends SystemService { void onPollingFinished(List<Integer> ackedAddress); } - private class PowerStateReceiver extends BroadcastReceiver { + private class HdmiControlBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { switch (intent.getAction()) { @@ -137,6 +138,12 @@ public final class HdmiControlService extends SystemService { onWakeUp(); } break; + case Intent.ACTION_CONFIGURATION_CHANGED: + String language = Locale.getDefault().getISO3Language(); + if (!mLanguage.equals(language)) { + onLanguageChanged(language); + } + break; } } } @@ -238,12 +245,16 @@ public final class HdmiControlService extends SystemService { private HdmiCecMessageValidator mMessageValidator; - private final PowerStateReceiver mPowerStateReceiver = new PowerStateReceiver(); + private final HdmiControlBroadcastReceiver + mHdmiControlBroadcastReceiver = new HdmiControlBroadcastReceiver(); @ServiceThreadOnly private int mPowerStatus = HdmiControlManager.POWER_STATUS_STANDBY; @ServiceThreadOnly + private String mLanguage = Locale.getDefault().getISO3Language(); + + @ServiceThreadOnly private boolean mStandbyMessageReceived = false; @ServiceThreadOnly @@ -307,7 +318,8 @@ public final class HdmiControlService extends SystemService { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_SCREEN_ON); - getContext().registerReceiver(mPowerStateReceiver, filter); + filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); + getContext().registerReceiver(mHdmiControlBroadcastReceiver, filter); } } @@ -1697,6 +1709,16 @@ public final class HdmiControlService extends SystemService { }); } + @ServiceThreadOnly + private void onLanguageChanged(String language) { + assertRunOnServiceThread(); + mLanguage = language; + + if (isTvDevice()) { + tv().broadcastMenuLanguage(language); + } + } + private void disableDevices(PendingActionClearedCallback callback) { if (mCecController != null) { for (HdmiCecLocalDevice device : mCecController.getLocalDeviceList()) { |