Loading core/java/android/provider/Settings.java +7 −0 Original line number Diff line number Diff line Loading @@ -9896,6 +9896,13 @@ public final class Settings { public static final String HDMI_CEC_SWITCH_ENABLED = "hdmi_cec_switch_enabled"; /** * HDMI CEC version to use. Defaults to v1.4b. * @hide */ public static final String HDMI_CEC_VERSION = "hdmi_cec_version"; /** * Whether TV will automatically turn on upon reception of the CEC command * <Text View On> or <Image View On>. (0 = false, 1 = true) Loading packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,7 @@ public class SettingsBackupTest { Settings.Global.GNSS_SATELLITE_BLACKLIST, Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS, Settings.Global.HDMI_CEC_SWITCH_ENABLED, Settings.Global.HDMI_CEC_VERSION, Settings.Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, Settings.Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, Settings.Global.HDMI_CONTROL_ENABLED, Loading services/core/java/com/android/server/hdmi/Constants.java +9 −0 Original line number Diff line number Diff line Loading @@ -492,6 +492,15 @@ final class Constants { static final int DISABLED = 0; static final int ENABLED = 1; @IntDef({ VERSION_1_4, VERSION_2_0 }) @interface CecVersion {} static final int VERSION_1_3 = 0x04; static final int VERSION_1_4 = 0x05; static final int VERSION_2_0 = 0x06; private Constants() { /* cannot be instantiated */ } Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +20 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static com.android.server.hdmi.Constants.OPTION_MHL_ENABLE; import static com.android.server.hdmi.Constants.OPTION_MHL_INPUT_SWITCHING; import static com.android.server.hdmi.Constants.OPTION_MHL_POWER_CHARGE; import static com.android.server.hdmi.Constants.OPTION_MHL_SERVICE_CONTROL; import static com.android.server.hdmi.Constants.VERSION_1_4; import static com.android.server.power.ShutdownThread.SHUTDOWN_ACTION_PROPERTY; import android.annotation.Nullable; Loading Loading @@ -79,6 +80,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.SystemService; import com.android.server.hdmi.Constants.CecVersion; import com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly; import com.android.server.hdmi.HdmiCecController.AllocateAddressCallback; import com.android.server.hdmi.HdmiCecLocalDevice.ActiveSource; Loading Loading @@ -373,6 +375,9 @@ public class HdmiControlService extends SystemService { @Nullable private Looper mIoLooper; @CecVersion private int mCecVersion = Constants.VERSION_1_4; // Last input port before switching to the MHL port. Should switch back to this port // when the mobile device sends the request one touch play with off. // Gets invalidated if we go to other port/input. Loading Loading @@ -660,6 +665,7 @@ public class HdmiControlService extends SystemService { String[] settings = new String[] { Global.HDMI_CONTROL_ENABLED, Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, Global.HDMI_CEC_VERSION, Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, Loading Loading @@ -688,6 +694,9 @@ public class HdmiControlService extends SystemService { case Global.HDMI_CONTROL_ENABLED: setControlEnabled(enabled); break; case Global.HDMI_CEC_VERSION: initializeCec(INITIATED_BY_ENABLE_CEC); break; case Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED: setHdmiCecVolumeControlEnabledInternal(enabled); break; Loading Loading @@ -753,6 +762,12 @@ public class HdmiControlService extends SystemService { return Global.getInt(cr, key, toInt(defVal)) == ENABLED; } @VisibleForTesting int readIntSetting(String key, int defVal) { ContentResolver cr = getContext().getContentResolver(); return Global.getInt(cr, key, defVal); } void writeBooleanSetting(String key, boolean value) { ContentResolver cr = getContext().getContentResolver(); Global.putInt(cr, key, toInt(value)); Loading Loading @@ -783,6 +798,8 @@ public class HdmiControlService extends SystemService { private void initializeCec(int initiatedBy) { mAddressAllocated = false; mCecVersion = readIntSetting(Global.HDMI_CEC_VERSION, VERSION_1_4); mCecController.setOption(OptionKey.SYSTEM_CEC_CONTROL, true); mCecController.setLanguage(mMenuLanguage); initializeLocalDevices(initiatedBy); Loading Loading @@ -989,8 +1006,9 @@ public class HdmiControlService extends SystemService { /** * Returns version of CEC. */ @CecVersion int getCecVersion() { return mCecController.getVersion(); return mCecVersion; } /** Loading Loading @@ -2204,6 +2222,7 @@ public class HdmiControlService extends SystemService { if (!DumpUtils.checkDumpPermission(getContext(), TAG, writer)) return; final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " "); pw.println("mCecVersion: " + mCecVersion); pw.println("mProhibitMode: " + mProhibitMode); pw.println("mPowerStatus: " + mPowerStatus); Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -383,6 +383,41 @@ public class HdmiControlServiceTest { } @Test public void getCecVersion_default() { assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4); } @Test public void getCecVersion_1_4() { Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_1_4); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4); } @Test public void getCecVersion_2_0() { Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_2_0); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_2_0); } @Test public void getCecVersion_change() { Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_1_4); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4); Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_2_0); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_2_0); } private static class VolumeControlFeatureCallback extends IHdmiCecVolumeControlFeatureListener.Stub { boolean mCallbackReceived = false; Loading Loading
core/java/android/provider/Settings.java +7 −0 Original line number Diff line number Diff line Loading @@ -9896,6 +9896,13 @@ public final class Settings { public static final String HDMI_CEC_SWITCH_ENABLED = "hdmi_cec_switch_enabled"; /** * HDMI CEC version to use. Defaults to v1.4b. * @hide */ public static final String HDMI_CEC_VERSION = "hdmi_cec_version"; /** * Whether TV will automatically turn on upon reception of the CEC command * <Text View On> or <Image View On>. (0 = false, 1 = true) Loading
packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -293,6 +293,7 @@ public class SettingsBackupTest { Settings.Global.GNSS_SATELLITE_BLACKLIST, Settings.Global.GPRS_REGISTER_CHECK_PERIOD_MS, Settings.Global.HDMI_CEC_SWITCH_ENABLED, Settings.Global.HDMI_CEC_VERSION, Settings.Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, Settings.Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, Settings.Global.HDMI_CONTROL_ENABLED, Loading
services/core/java/com/android/server/hdmi/Constants.java +9 −0 Original line number Diff line number Diff line Loading @@ -492,6 +492,15 @@ final class Constants { static final int DISABLED = 0; static final int ENABLED = 1; @IntDef({ VERSION_1_4, VERSION_2_0 }) @interface CecVersion {} static final int VERSION_1_3 = 0x04; static final int VERSION_1_4 = 0x05; static final int VERSION_2_0 = 0x06; private Constants() { /* cannot be instantiated */ } Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +20 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static com.android.server.hdmi.Constants.OPTION_MHL_ENABLE; import static com.android.server.hdmi.Constants.OPTION_MHL_INPUT_SWITCHING; import static com.android.server.hdmi.Constants.OPTION_MHL_POWER_CHARGE; import static com.android.server.hdmi.Constants.OPTION_MHL_SERVICE_CONTROL; import static com.android.server.hdmi.Constants.VERSION_1_4; import static com.android.server.power.ShutdownThread.SHUTDOWN_ACTION_PROPERTY; import android.annotation.Nullable; Loading Loading @@ -79,6 +80,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.SystemService; import com.android.server.hdmi.Constants.CecVersion; import com.android.server.hdmi.HdmiAnnotations.ServiceThreadOnly; import com.android.server.hdmi.HdmiCecController.AllocateAddressCallback; import com.android.server.hdmi.HdmiCecLocalDevice.ActiveSource; Loading Loading @@ -373,6 +375,9 @@ public class HdmiControlService extends SystemService { @Nullable private Looper mIoLooper; @CecVersion private int mCecVersion = Constants.VERSION_1_4; // Last input port before switching to the MHL port. Should switch back to this port // when the mobile device sends the request one touch play with off. // Gets invalidated if we go to other port/input. Loading Loading @@ -660,6 +665,7 @@ public class HdmiControlService extends SystemService { String[] settings = new String[] { Global.HDMI_CONTROL_ENABLED, Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, Global.HDMI_CEC_VERSION, Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, Loading Loading @@ -688,6 +694,9 @@ public class HdmiControlService extends SystemService { case Global.HDMI_CONTROL_ENABLED: setControlEnabled(enabled); break; case Global.HDMI_CEC_VERSION: initializeCec(INITIATED_BY_ENABLE_CEC); break; case Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED: setHdmiCecVolumeControlEnabledInternal(enabled); break; Loading Loading @@ -753,6 +762,12 @@ public class HdmiControlService extends SystemService { return Global.getInt(cr, key, toInt(defVal)) == ENABLED; } @VisibleForTesting int readIntSetting(String key, int defVal) { ContentResolver cr = getContext().getContentResolver(); return Global.getInt(cr, key, defVal); } void writeBooleanSetting(String key, boolean value) { ContentResolver cr = getContext().getContentResolver(); Global.putInt(cr, key, toInt(value)); Loading Loading @@ -783,6 +798,8 @@ public class HdmiControlService extends SystemService { private void initializeCec(int initiatedBy) { mAddressAllocated = false; mCecVersion = readIntSetting(Global.HDMI_CEC_VERSION, VERSION_1_4); mCecController.setOption(OptionKey.SYSTEM_CEC_CONTROL, true); mCecController.setLanguage(mMenuLanguage); initializeLocalDevices(initiatedBy); Loading Loading @@ -989,8 +1006,9 @@ public class HdmiControlService extends SystemService { /** * Returns version of CEC. */ @CecVersion int getCecVersion() { return mCecController.getVersion(); return mCecVersion; } /** Loading Loading @@ -2204,6 +2222,7 @@ public class HdmiControlService extends SystemService { if (!DumpUtils.checkDumpPermission(getContext(), TAG, writer)) return; final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " "); pw.println("mCecVersion: " + mCecVersion); pw.println("mProhibitMode: " + mProhibitMode); pw.println("mPowerStatus: " + mPowerStatus); Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +35 −0 Original line number Diff line number Diff line Loading @@ -383,6 +383,41 @@ public class HdmiControlServiceTest { } @Test public void getCecVersion_default() { assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4); } @Test public void getCecVersion_1_4() { Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_1_4); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4); } @Test public void getCecVersion_2_0() { Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_2_0); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_2_0); } @Test public void getCecVersion_change() { Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_1_4); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_1_4); Settings.Global.putInt(mContextSpy.getContentResolver(), Settings.Global.HDMI_CEC_VERSION, Constants.VERSION_2_0); mHdmiControlService.setControlEnabled(true); assertThat(mHdmiControlService.getCecVersion()).isEqualTo(Constants.VERSION_2_0); } private static class VolumeControlFeatureCallback extends IHdmiCecVolumeControlFeatureListener.Stub { boolean mCallbackReceived = false; Loading