Loading res/values/strings.xml +12 −5 Original line number Diff line number Diff line Loading @@ -1687,13 +1687,17 @@ <!-- Wallpaper settings fragment title [CHAR LIMIT=30] --> <string name="wallpaper_settings_fragment_title">Choose wallpaper from</string> <!-- Display settings screen, trigger for screen saver options --> <string name="screensaver_settings_title">Screen Candy</string> <!-- Display settings screen, summary for screen saver options, screen saver is turned on --> <string name="screensaver_settings_summary_on">Will start upon sleep if connected to power</string> <string name="screensaver_settings_title">Dream</string> <!-- Display settings screen, summary fragment for screen saver options, activated on sleep or docked --> <string name="screensaver_settings_summary_both">When docked or asleep and charging</string> <!-- Display settings screen, summary fragment for screen saver options, activated on sleep --> <string name="screensaver_settings_summary_sleep">When asleep and charging</string> <!-- Display settings screen, summary fragment for screen saver options, activated when docked --> <string name="screensaver_settings_summary_dock">When docked</string> <!-- Display settings screen, summary for screen saver options, screen saver is turned off --> <string name="screensaver_settings_summary_off">Disabled</string> <!-- Screen saver settings, setting option name to select a module --> <string name="screensaver_component_title">Selected candy</string> <string name="screensaver_component_title">Selected dream</string> <!-- Screen saver settings, setting option name to change activation timeout --> <string name="screensaver_timeout_title">When to activate</string> <!-- Screen saver settings, setting option summary to change activation timeout --> Loading @@ -1702,9 +1706,12 @@ <string name="screensaver_timeout_zero_summary">Never</string> <!-- Screen saver settings, button allowing the user to test/try the current module --> <string name="screensaver_test">Try it!</string> <!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when the device sleeps --> <string name="screensaver_activate_on_sleep_title">Start on sleep</string> <!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when the device is docked --> <string name="screensaver_activate_on_dock_title">Also start when docked</string> <string name="screensaver_activate_on_dock_title">Start when docked</string> <!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions --> <string name="automatic_brightness">Automatic brightness</string> <!-- [CHAR LIMIT=30] Sound & display settings screen, setting option name to change font size --> Loading res/xml/dream_settings.xml +20 −17 Original line number Diff line number Diff line Loading @@ -15,25 +15,28 @@ --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/screensaver_settings_title" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:title="@string/screensaver_settings_title" > <CheckBoxPreference android:key="activate_on_sleep" android:persistent="false" android:title="@string/screensaver_activate_on_sleep_title" /> <CheckBoxPreference android:defaultValue="true" android:key="activate_on_dock" android:persistent="false" android:title="@string/screensaver_activate_on_dock_title" /> <com.android.settings.DreamComponentPreference android:key="screensaver_component" android:title="@string/screensaver_component_title" android:persistent="false" /> android:title="@string/screensaver_component_title" /> <com.android.settings.DreamTesterPreference android:key="test" android:title="@string/screensaver_test" android:persistent="false" /> <CheckBoxPreference android:key="activate_on_dock" android:persistent="false" android:title="@string/screensaver_activate_on_dock_title" android:defaultValue="true" /> android:title="@string/screensaver_test" /> </PreferenceScreen> No newline at end of file src/com/android/settings/DisplaySettings.java +6 −3 Original line number Diff line number Diff line Loading @@ -232,10 +232,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } private void updateScreenSaverSummary() { boolean activatedOnSleep = DreamSettings.isScreenSaverActivatedOnSleep(getActivity()); boolean activatedOnDock = DreamSettings.isScreenSaverActivatedOnDock(getActivity()); mScreenSaverPreference.setSummary( DreamSettings.isScreenSaverEnabled(mScreenSaverPreference.getContext()) ? R.string.screensaver_settings_summary_on : R.string.screensaver_settings_summary_off); activatedOnSleep && activatedOnDock ? R.string.screensaver_settings_summary_both : activatedOnSleep ? R.string.screensaver_settings_summary_sleep : activatedOnDock ? R.string.screensaver_settings_summary_dock : R.string.screensaver_settings_summary_off); } private void updateAccelerometerRotationCheckbox() { Loading src/com/android/settings/DreamSettings.java +63 −79 Original line number Diff line number Diff line Loading @@ -48,12 +48,19 @@ import java.util.ArrayList; public class DreamSettings extends SettingsPreferenceFragment { private static final String TAG = "DreamSettings"; private static final String KEY_ACTIVATE_ON_SLEEP = "activate_on_sleep"; private static final String KEY_ACTIVATE_ON_DOCK = "activate_on_dock"; private static final String KEY_COMPONENT = "screensaver_component"; private static final String KEY_TEST = "test"; private CheckBoxPreference mActivateOnDockPreference; private static final int DEFAULT_SLEEP = 0; private static final int DEFAULT_DOCK = 1; private Switch mEnableSwitch; private Enabler mEnabler; private ActivationSetting mActivateOnSleep; private ActivationSetting mActivateOnDock; private Preference mComponentPref; private Preference mTestPref; @Override public void onActivityCreated(Bundle savedInstanceState) { Loading @@ -61,99 +68,76 @@ public class DreamSettings extends SettingsPreferenceFragment { addPreferencesFromResource(R.xml.dream_settings); mActivateOnDockPreference = (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK); final Activity activity = getActivity(); mEnableSwitch = new Switch(activity); if (activity instanceof PreferenceActivity) { PreferenceActivity preferenceActivity = (PreferenceActivity) activity; // note: we do not check onIsHidingHeaders() or onIsMultiPane() because there's no // switch in the left-hand pane to control this; we need to show the ON/OFF in our // fragment every time final int padding = activity.getResources().getDimensionPixelSize( R.dimen.action_bar_switch_padding); mEnableSwitch.setPadding(0, 0, padding, 0); activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); activity.getActionBar().setCustomView(mEnableSwitch, new ActionBar.LayoutParams( ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.END)); activity.getActionBar().setTitle(R.string.screensaver_settings_title); } mComponentPref = findPreference(KEY_COMPONENT); mTestPref = findPreference(KEY_TEST); mEnabler = new Enabler(activity, mEnableSwitch); mActivateOnSleep = new ActivationSetting(getActivity(), SCREENSAVER_ENABLED, DEFAULT_SLEEP, (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_SLEEP)); mActivateOnDock = new ActivationSetting(getActivity(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK, (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK)); } public static boolean isScreenSaverEnabled(Context context) { public static boolean isScreenSaverActivatedOnSleep(Context context) { return 0 != Settings.Secure.getInt( context.getContentResolver(), SCREENSAVER_ENABLED, 1); } public static void setScreenSaverEnabled(Context context, boolean enabled) { Settings.Secure.putInt( context.getContentResolver(), SCREENSAVER_ENABLED, enabled ? 1 : 0); context.getContentResolver(), SCREENSAVER_ENABLED, DEFAULT_SLEEP); } public static class Enabler implements CompoundButton.OnCheckedChangeListener { private final Context mContext; private Switch mSwitch; public Enabler(Context context, Switch switch_) { mContext = context; setSwitch(switch_); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setScreenSaverEnabled(mContext, isChecked); } public void setSwitch(Switch switch_) { if (mSwitch == switch_) return; if (mSwitch != null) mSwitch.setOnCheckedChangeListener(null); mSwitch = switch_; mSwitch.setOnCheckedChangeListener(this); final boolean enabled = isScreenSaverEnabled(mContext); mSwitch.setChecked(enabled); } public void pause() { mSwitch.setOnCheckedChangeListener(null); } public void resume() { mSwitch.setOnCheckedChangeListener(this); } public static boolean isScreenSaverActivatedOnDock(Context context) { return 0 != Settings.Secure.getInt( context.getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK); } @Override public void onResume() { if (mEnabler != null) { mEnabler.resume(); } final boolean currentActivateOnDock = 0 != Settings.Secure.getInt(getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, 1); mActivateOnDockPreference.setChecked(currentActivateOnDock); mActivateOnSleep.onResume(); mActivateOnDock.onResume(); refreshDependents(); super.onResume(); } @Override public void onPause() { if (mEnabler != null) { mEnabler.pause(); public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { mActivateOnSleep.onClick(preference); mActivateOnDock.onClick(preference); refreshDependents(); return super.onPreferenceTreeClick(preferenceScreen, preference); } super.onPause(); private void refreshDependents() { boolean enabled = mActivateOnSleep.isSelected() || mActivateOnDock.isSelected(); mComponentPref.setEnabled(enabled); mTestPref.setEnabled(enabled); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mActivateOnDockPreference) { Settings.Secure.putInt(getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, mActivateOnDockPreference.isChecked() ? 1 : 0); private static class ActivationSetting { private final Context mContext; private final String mName; private final int mDefaultValue; private final CheckBoxPreference mPref; ActivationSetting(Context context, String name, int defaultValue, CheckBoxPreference pref) { mContext = context; mName = name; mDefaultValue = defaultValue; mPref = pref; } public boolean isSelected() { return mPref.isChecked(); } void onClick(Preference preference) { if (preference == mPref) { Settings.Secure.putInt(mContext.getContentResolver(), mName, mPref.isChecked() ? 1 : 0); } return super.onPreferenceTreeClick(preferenceScreen, preference); } void onResume() { boolean currentActivated = 0 != Settings.Secure.getInt(mContext.getContentResolver(), mName, mDefaultValue); mPref.setChecked(currentActivated); } } } src/com/android/settings/DreamTesterPreference.java +10 −49 Original line number Diff line number Diff line Loading @@ -16,72 +16,33 @@ package com.android.settings; import static android.provider.Settings.Secure.SCREENSAVER_COMPONENT; import android.app.AlertDialog; import android.content.Context; import android.content.ComponentName; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.content.Context; import android.os.RemoteException; import android.os.ServiceManager; import android.preference.Preference; import android.provider.Settings; import android.service.dreams.IDreamManager; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class DreamTesterPreference extends Preference { private static final String TAG = "DreamTesterPreference"; private final PackageManager pm; private final ContentResolver resolver; public DreamTesterPreference(Context context, AttributeSet attrs) { super(context, attrs); pm = getContext().getPackageManager(); resolver = getContext().getContentResolver(); } @Override protected void onClick() { String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT); Log.v(TAG, "component=" + component); if (component != null) { ComponentName cn = ComponentName.unflattenFromString(component); Log.v(TAG, "cn=" + cn); // Intent intent = new Intent(Intent.ACTION_MAIN) // .setComponent(cn) // .addFlags( // Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS // ) // .putExtra("android.dreams.TEST", true); // getContext().startService(intent); IDreamManager dm = IDreamManager.Stub.asInterface( ServiceManager.getService("dreams")); IDreamManager dm = IDreamManager.Stub.asInterface(ServiceManager.getService("dreams")); try { ComponentName cn = dm.getDreamComponent(); Log.v(TAG, "DreamComponent cn=" + cn); dm.testDream(cn); } catch (RemoteException ex) { Log.w(TAG, "error testing dream", ex); // too bad, so sad, oh mom, oh dad } } } } Loading
res/values/strings.xml +12 −5 Original line number Diff line number Diff line Loading @@ -1687,13 +1687,17 @@ <!-- Wallpaper settings fragment title [CHAR LIMIT=30] --> <string name="wallpaper_settings_fragment_title">Choose wallpaper from</string> <!-- Display settings screen, trigger for screen saver options --> <string name="screensaver_settings_title">Screen Candy</string> <!-- Display settings screen, summary for screen saver options, screen saver is turned on --> <string name="screensaver_settings_summary_on">Will start upon sleep if connected to power</string> <string name="screensaver_settings_title">Dream</string> <!-- Display settings screen, summary fragment for screen saver options, activated on sleep or docked --> <string name="screensaver_settings_summary_both">When docked or asleep and charging</string> <!-- Display settings screen, summary fragment for screen saver options, activated on sleep --> <string name="screensaver_settings_summary_sleep">When asleep and charging</string> <!-- Display settings screen, summary fragment for screen saver options, activated when docked --> <string name="screensaver_settings_summary_dock">When docked</string> <!-- Display settings screen, summary for screen saver options, screen saver is turned off --> <string name="screensaver_settings_summary_off">Disabled</string> <!-- Screen saver settings, setting option name to select a module --> <string name="screensaver_component_title">Selected candy</string> <string name="screensaver_component_title">Selected dream</string> <!-- Screen saver settings, setting option name to change activation timeout --> <string name="screensaver_timeout_title">When to activate</string> <!-- Screen saver settings, setting option summary to change activation timeout --> Loading @@ -1702,9 +1706,12 @@ <string name="screensaver_timeout_zero_summary">Never</string> <!-- Screen saver settings, button allowing the user to test/try the current module --> <string name="screensaver_test">Try it!</string> <!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when the device sleeps --> <string name="screensaver_activate_on_sleep_title">Start on sleep</string> <!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when the device is docked --> <string name="screensaver_activate_on_dock_title">Also start when docked</string> <string name="screensaver_activate_on_dock_title">Start when docked</string> <!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions --> <string name="automatic_brightness">Automatic brightness</string> <!-- [CHAR LIMIT=30] Sound & display settings screen, setting option name to change font size --> Loading
res/xml/dream_settings.xml +20 −17 Original line number Diff line number Diff line Loading @@ -15,25 +15,28 @@ --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/screensaver_settings_title" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:title="@string/screensaver_settings_title" > <CheckBoxPreference android:key="activate_on_sleep" android:persistent="false" android:title="@string/screensaver_activate_on_sleep_title" /> <CheckBoxPreference android:defaultValue="true" android:key="activate_on_dock" android:persistent="false" android:title="@string/screensaver_activate_on_dock_title" /> <com.android.settings.DreamComponentPreference android:key="screensaver_component" android:title="@string/screensaver_component_title" android:persistent="false" /> android:title="@string/screensaver_component_title" /> <com.android.settings.DreamTesterPreference android:key="test" android:title="@string/screensaver_test" android:persistent="false" /> <CheckBoxPreference android:key="activate_on_dock" android:persistent="false" android:title="@string/screensaver_activate_on_dock_title" android:defaultValue="true" /> android:title="@string/screensaver_test" /> </PreferenceScreen> No newline at end of file
src/com/android/settings/DisplaySettings.java +6 −3 Original line number Diff line number Diff line Loading @@ -232,10 +232,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } private void updateScreenSaverSummary() { boolean activatedOnSleep = DreamSettings.isScreenSaverActivatedOnSleep(getActivity()); boolean activatedOnDock = DreamSettings.isScreenSaverActivatedOnDock(getActivity()); mScreenSaverPreference.setSummary( DreamSettings.isScreenSaverEnabled(mScreenSaverPreference.getContext()) ? R.string.screensaver_settings_summary_on : R.string.screensaver_settings_summary_off); activatedOnSleep && activatedOnDock ? R.string.screensaver_settings_summary_both : activatedOnSleep ? R.string.screensaver_settings_summary_sleep : activatedOnDock ? R.string.screensaver_settings_summary_dock : R.string.screensaver_settings_summary_off); } private void updateAccelerometerRotationCheckbox() { Loading
src/com/android/settings/DreamSettings.java +63 −79 Original line number Diff line number Diff line Loading @@ -48,12 +48,19 @@ import java.util.ArrayList; public class DreamSettings extends SettingsPreferenceFragment { private static final String TAG = "DreamSettings"; private static final String KEY_ACTIVATE_ON_SLEEP = "activate_on_sleep"; private static final String KEY_ACTIVATE_ON_DOCK = "activate_on_dock"; private static final String KEY_COMPONENT = "screensaver_component"; private static final String KEY_TEST = "test"; private CheckBoxPreference mActivateOnDockPreference; private static final int DEFAULT_SLEEP = 0; private static final int DEFAULT_DOCK = 1; private Switch mEnableSwitch; private Enabler mEnabler; private ActivationSetting mActivateOnSleep; private ActivationSetting mActivateOnDock; private Preference mComponentPref; private Preference mTestPref; @Override public void onActivityCreated(Bundle savedInstanceState) { Loading @@ -61,99 +68,76 @@ public class DreamSettings extends SettingsPreferenceFragment { addPreferencesFromResource(R.xml.dream_settings); mActivateOnDockPreference = (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK); final Activity activity = getActivity(); mEnableSwitch = new Switch(activity); if (activity instanceof PreferenceActivity) { PreferenceActivity preferenceActivity = (PreferenceActivity) activity; // note: we do not check onIsHidingHeaders() or onIsMultiPane() because there's no // switch in the left-hand pane to control this; we need to show the ON/OFF in our // fragment every time final int padding = activity.getResources().getDimensionPixelSize( R.dimen.action_bar_switch_padding); mEnableSwitch.setPadding(0, 0, padding, 0); activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); activity.getActionBar().setCustomView(mEnableSwitch, new ActionBar.LayoutParams( ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.END)); activity.getActionBar().setTitle(R.string.screensaver_settings_title); } mComponentPref = findPreference(KEY_COMPONENT); mTestPref = findPreference(KEY_TEST); mEnabler = new Enabler(activity, mEnableSwitch); mActivateOnSleep = new ActivationSetting(getActivity(), SCREENSAVER_ENABLED, DEFAULT_SLEEP, (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_SLEEP)); mActivateOnDock = new ActivationSetting(getActivity(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK, (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK)); } public static boolean isScreenSaverEnabled(Context context) { public static boolean isScreenSaverActivatedOnSleep(Context context) { return 0 != Settings.Secure.getInt( context.getContentResolver(), SCREENSAVER_ENABLED, 1); } public static void setScreenSaverEnabled(Context context, boolean enabled) { Settings.Secure.putInt( context.getContentResolver(), SCREENSAVER_ENABLED, enabled ? 1 : 0); context.getContentResolver(), SCREENSAVER_ENABLED, DEFAULT_SLEEP); } public static class Enabler implements CompoundButton.OnCheckedChangeListener { private final Context mContext; private Switch mSwitch; public Enabler(Context context, Switch switch_) { mContext = context; setSwitch(switch_); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setScreenSaverEnabled(mContext, isChecked); } public void setSwitch(Switch switch_) { if (mSwitch == switch_) return; if (mSwitch != null) mSwitch.setOnCheckedChangeListener(null); mSwitch = switch_; mSwitch.setOnCheckedChangeListener(this); final boolean enabled = isScreenSaverEnabled(mContext); mSwitch.setChecked(enabled); } public void pause() { mSwitch.setOnCheckedChangeListener(null); } public void resume() { mSwitch.setOnCheckedChangeListener(this); } public static boolean isScreenSaverActivatedOnDock(Context context) { return 0 != Settings.Secure.getInt( context.getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK); } @Override public void onResume() { if (mEnabler != null) { mEnabler.resume(); } final boolean currentActivateOnDock = 0 != Settings.Secure.getInt(getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, 1); mActivateOnDockPreference.setChecked(currentActivateOnDock); mActivateOnSleep.onResume(); mActivateOnDock.onResume(); refreshDependents(); super.onResume(); } @Override public void onPause() { if (mEnabler != null) { mEnabler.pause(); public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { mActivateOnSleep.onClick(preference); mActivateOnDock.onClick(preference); refreshDependents(); return super.onPreferenceTreeClick(preferenceScreen, preference); } super.onPause(); private void refreshDependents() { boolean enabled = mActivateOnSleep.isSelected() || mActivateOnDock.isSelected(); mComponentPref.setEnabled(enabled); mTestPref.setEnabled(enabled); } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mActivateOnDockPreference) { Settings.Secure.putInt(getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, mActivateOnDockPreference.isChecked() ? 1 : 0); private static class ActivationSetting { private final Context mContext; private final String mName; private final int mDefaultValue; private final CheckBoxPreference mPref; ActivationSetting(Context context, String name, int defaultValue, CheckBoxPreference pref) { mContext = context; mName = name; mDefaultValue = defaultValue; mPref = pref; } public boolean isSelected() { return mPref.isChecked(); } void onClick(Preference preference) { if (preference == mPref) { Settings.Secure.putInt(mContext.getContentResolver(), mName, mPref.isChecked() ? 1 : 0); } return super.onPreferenceTreeClick(preferenceScreen, preference); } void onResume() { boolean currentActivated = 0 != Settings.Secure.getInt(mContext.getContentResolver(), mName, mDefaultValue); mPref.setChecked(currentActivated); } } }
src/com/android/settings/DreamTesterPreference.java +10 −49 Original line number Diff line number Diff line Loading @@ -16,72 +16,33 @@ package com.android.settings; import static android.provider.Settings.Secure.SCREENSAVER_COMPONENT; import android.app.AlertDialog; import android.content.Context; import android.content.ComponentName; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.content.Context; import android.os.RemoteException; import android.os.ServiceManager; import android.preference.Preference; import android.provider.Settings; import android.service.dreams.IDreamManager; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class DreamTesterPreference extends Preference { private static final String TAG = "DreamTesterPreference"; private final PackageManager pm; private final ContentResolver resolver; public DreamTesterPreference(Context context, AttributeSet attrs) { super(context, attrs); pm = getContext().getPackageManager(); resolver = getContext().getContentResolver(); } @Override protected void onClick() { String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT); Log.v(TAG, "component=" + component); if (component != null) { ComponentName cn = ComponentName.unflattenFromString(component); Log.v(TAG, "cn=" + cn); // Intent intent = new Intent(Intent.ACTION_MAIN) // .setComponent(cn) // .addFlags( // Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS // ) // .putExtra("android.dreams.TEST", true); // getContext().startService(intent); IDreamManager dm = IDreamManager.Stub.asInterface( ServiceManager.getService("dreams")); IDreamManager dm = IDreamManager.Stub.asInterface(ServiceManager.getService("dreams")); try { ComponentName cn = dm.getDreamComponent(); Log.v(TAG, "DreamComponent cn=" + cn); dm.testDream(cn); } catch (RemoteException ex) { Log.w(TAG, "error testing dream", ex); // too bad, so sad, oh mom, oh dad } } } }