Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e85359a authored by Terry Heo's avatar Terry Heo Committed by Android (Google) Code Review
Browse files

Merge "CEC: Broadcast language setting whenever it changes" into lmp-dev

parents b26fcf68 1ca0a432
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -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) {
+25 −3
Original line number Diff line number Diff line
@@ -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,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;

@@ -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()) {