Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +13 −5 Original line number Diff line number Diff line Loading @@ -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) { Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +25 −3 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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()) { Loading @@ -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; } } } Loading Loading @@ -238,11 +245,15 @@ 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; Loading Loading @@ -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); } } Loading Loading @@ -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()) { Loading Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +13 −5 Original line number Diff line number Diff line Loading @@ -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) { Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +25 −3 Original line number Diff line number Diff line Loading @@ -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, Loading Loading @@ -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()) { Loading @@ -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; } } } Loading Loading @@ -238,11 +245,15 @@ 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; Loading Loading @@ -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); } } Loading Loading @@ -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()) { Loading