diff options
author | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-12-16 18:25:56 +0700 |
---|---|---|
committer | Pawit Pornkitprasan <p.pawit@gmail.com> | 2011-12-16 18:25:56 +0700 |
commit | f28171d84caf707ad431dcaaa29cef6226f155b3 (patch) | |
tree | f11e300452a4b76170cec7fc87b8bfd3db584d1e /AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java | |
parent | cfa142440bb325dcd6c8d5901f24d5b019a6395d (diff) | |
download | device_samsung_aries-common-f28171d84caf707ad431dcaaa29cef6226f155b3.zip device_samsung_aries-common-f28171d84caf707ad431dcaaa29cef6226f155b3.tar.gz device_samsung_aries-common-f28171d84caf707ad431dcaaa29cef6226f155b3.tar.bz2 |
Add TV Out support
(backported from ics)
Conflicts:
device_base.mk
init.aries.rc
Change-Id: I9f8876bb3e00c4b3508e587aa4e6c5c86570d51e
Diffstat (limited to 'AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java')
-rw-r--r-- | AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java b/AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java index 103e91b..3d6a68f 100644 --- a/AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java +++ b/AriesParts/src/com/cyanogenmod/AriesParts/AriesParts.java @@ -1,7 +1,14 @@ package com.cyanogenmod.AriesParts; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.hardware.TvOut; import android.os.Bundle; +import android.preference.CheckBoxPreference; import android.preference.ListPreference; +import android.preference.Preference; import android.preference.PreferenceActivity; public class AriesParts extends PreferenceActivity { @@ -9,10 +16,25 @@ public class AriesParts extends PreferenceActivity { public static final String KEY_COLOR_TUNING = "color_tuning"; public static final String KEY_BACKLIGHT_TIMEOUT = "backlight_timeout"; public static final String KEY_HSPA = "hspa"; + public static final String KEY_TVOUT_ENABLE = "tvout_enable"; + public static final String KEY_TVOUT_SYSTEM = "tvout_system"; private ColorTuningPreference mColorTuning; private ListPreference mBacklightTimeout; private ListPreference mHspa; + private CheckBoxPreference mTvOutEnable; + private ListPreference mTvOutSystem; + private TvOut mTvOut; + + private BroadcastReceiver mHeadsetReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + int state = intent.getIntExtra("state", 0); + updateTvOutEnable(state != 0); + } + + }; @Override public void onCreate(Bundle savedInstanceState) { @@ -29,6 +51,68 @@ public class AriesParts extends PreferenceActivity { mHspa = (ListPreference) findPreference(KEY_HSPA); mHspa.setEnabled(Hspa.isSupported()); mHspa.setOnPreferenceChangeListener(new Hspa(this)); + + mTvOut = new TvOut(); + mTvOutEnable = (CheckBoxPreference) findPreference(KEY_TVOUT_ENABLE); + mTvOutEnable.setChecked(mTvOut._isEnabled()); + + mTvOutEnable.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + boolean enable = (Boolean) newValue; + Intent i = new Intent(AriesParts.this, TvOutService.class); + i.putExtra(TvOutService.EXTRA_COMMAND, enable ? TvOutService.COMMAND_ENABLE : TvOutService.COMMAND_DISABLE); + startService(i); + return true; + } + + }); + + mTvOutSystem = (ListPreference) findPreference(KEY_TVOUT_SYSTEM); + mTvOutSystem.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (mTvOut._isEnabled()) { + int newSystem = Integer.valueOf((String) newValue); + Intent i = new Intent(AriesParts.this, TvOutService.class); + i.putExtra(TvOutService.EXTRA_COMMAND, TvOutService.COMMAND_CHANGE_SYSTEM); + i.putExtra(TvOutService.EXTRA_SYSTEM, newSystem); + startService(i); + } + return true; + } + + }); + } + + @Override + protected void onResume() { + super.onResume(); + registerReceiver(mHeadsetReceiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG)); + } + + @Override + protected void onPause() { + super.onPause(); + unregisterReceiver(mHeadsetReceiver); + } + + private void updateTvOutEnable(boolean connected) { + mTvOutEnable.setEnabled(connected); + mTvOutEnable.setSummaryOff(connected ? R.string.tvout_enable_summary : R.string.tvout_enable_summary_nocable); + + if (!connected && mTvOutEnable.isChecked()) { + // Disable on unplug (UI) + mTvOutEnable.setChecked(false); + } + } + + @Override + protected void onDestroy() { + mTvOut.finalize(); + super.onDestroy(); } } |