zoukankan      html  css  js  c++  java
  • MTK Android 设置-选择日期格式 [管理和组织首选项,ListPreference,CheckBoxPreference,EditTextPreference,RingtonePreference]

    ###android.preference.ListPreference的一些特性

    android:key  选项的名称或键

    android:title  选项的标题

    android:summary  选项的简短摘要

    android:entries  可将选项设置成的列表项文本

    android:entryValues  定义每个列表项的键或值

    android:dialogTitle  对话框的标题

    android:defaultValue  项列表中选项的默认值

    ###

    1.创建首选项XML文件来描述首选项

    <PreferenceScreen

    android:key=""

    android:title=""

    android:summary="">

    <ListPreference

    android:key=""

    android:title=""

    android:summary=""/>

    </PreferenceScreen>

    2.编写一个活动类来扩展预定义的Android类android.preference.PreferenceActivtity

    即:public void MyPreferenceActivity extends PreferenceActivity

    3.addPreferencesFromResource(R.xml.filghtoptions); //该方法将资源添加到活动的资源集合中,该框架会负责剩余操作(显示和持久化)。

    4.获取控件ListPreference,设置控件的属性值

    ListPreference listpref=(ListPreference)findPreference("selected_flight_sort_option");

    listpref.setEntryValues(new String[]{"0","1","2"});

    listpref.setEntries(new String[]{"Food","Lounge","Frequent Fiier Program"});

    第一步:编写布局<?xml version="1.0" encoding="utf-8"?>
    <!-- This file is /res/xml/flightoptions.xml -->
    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="flight_option_preference"
        android:title="@string/prefTile"
        android:summary="@string/prefSummary">

        <ListPreference
            android:key="@string/selected_flight_sort_option"          //选项的名称或键
            android:title="@string/listTitle"                    //选项的标题
            android:summary="@string/listSummery"                //选项的简短摘要
            android:entries="@array/flight_sort_options"              //可将选项设置成的列表项文本
            android:entryValues="@array/flight_sort_options_values"       // 定义每个列表项的键或值
            android:dialogTitle="@string/dialogTile"                // 对话框的标题
            android:defaultValue="@string/flight_sort_option_default_value"/>  //项列表中选项的默认值
       
    </PreferenceScreen>

    第二步:加载布局

    @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      //加载上面的布局flightoptions.xml
      addPreferencesFromResource(R.xml.flightoptions);
      PreferenceManager manager=getPreferenceManager();
      ListPreference listPreference=(ListPreference)manager.findPreference("selected_flight_sort_option");

     }

    第三步:编写列表项数组

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="flight_sort_options">
            <item>Total Cost</item>
            <item># of Stops</item>
            <item>Airline</item>
        </string-array>
       
        <string-array name="flight_sort_options_values">
            <item>0</item>
            <item>1</item>
            <item>3</item>
        </string-array>
    </resources>

    第四步:标题

    <?xml version="1.0" encoding="utf-8"?>
    <resources>

        <string name="app_name">FirstListPreference Demo</string>
        <string name="menu_settings">Settings</string>
        <string name="hello_world">Hello world!</string>
       
        <string name="prefTile">My Preferences</string>
        <string name="prefSummary">Set flight option preferences</string>
        <string name="selected_flight_sort_option">selected_flight_sort_option</string>
        <string name="listTitle">Flight option</string>
        <string name="listSummery">Set search options</string>
        <string name="dialogTile">Choose Flight Options</string>
        <string name="flight_sort_option_default_value">1</string>   

    </resources>

    *****************************************************

    Android设置->选择日期格式(源码)

    *****************************************************

    ###布局文件路径:

    packages/apps/Settings/res/xml/Date_time_prefs.xml


    <?xml version="1.0" encoding="utf-8"?>
    <!-- Copyright (C) 2008 The Android Open Source Project

         Licensed under the Apache License, Version 2.0 (the "License");
         you may not use this file except in compliance with the License.
         You may obtain a copy of the License at

              http://www.apache.org/licenses/LICENSE-2.0

         Unless required by applicable law or agreed to in writing, software
         distributed under the License is distributed on an "AS IS" BASIS,
         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         See the License for the specific language governing permissions and
         limitations under the License.
    -->

    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
            android:title="@string/date_and_time">
        <ListPreference
            android:key="auto_time_list"
            android:title="@string/date_time_auto"
            android:entries="@array/auto_time_entries"
            android:entryValues="@array/auto_time_entries"       
           />       
        <CheckBoxPreference android:key="auto_zone"
            android:title="@string/zone_auto"
            android:summaryOn="@string/zone_auto_summaryOn"
            android:summaryOff="@string/zone_auto_summaryOff"
            />   
        <Preference android:key="date"
            android:title="@string/date_time_set_date"
            android:summary="03/10/2008"
            />
        <Preference android:key="time"
            android:title="@string/date_time_set_time"
            android:summary="12:00am"
            />
       <PreferenceScreen
            android:key="timezone"
            android:title="@string/date_time_set_timezone"
            android:summary="GMT-8:00"
            />
        <CheckBoxPreference android:key="24 hour"
            android:title="@string/date_time_24hour"
            />
        <ListPreference
            android:key="date_format"
            android:title="@string/date_time_date_format"
            android:summary="mm/dd/yyyy"/>
    </PreferenceScreen>

    ###逻辑业务类

    /*
     * Copyright (C) 2008 The Android Open Source Project
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */

    package com.android.settings;

    import android.app.Activity;
    import android.app.AlarmManager;
    import android.app.AlertDialog;
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.app.TimePickerDialog;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnCancelListener;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.content.SharedPreferences;
    import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
    import android.content.res.Configuration;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.preference.CheckBoxPreference;
    import android.preference.ListPreference;
    import android.preference.Preference;
    import android.preference.PreferenceScreen;
    import android.provider.Settings;
    import android.provider.Settings.SettingNotFoundException;
    import android.text.format.DateFormat;
    import android.text.format.Time;
    import android.util.Log;
    import android.widget.DatePicker;
    import android.widget.TimePicker;

    import com.mediatek.settings.ext.IDateTimeSettingsExt;
    import com.mediatek.settings.OobeUtils;

    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.TimeZone;

    public class DateTimeSettings extends SettingsPreferenceFragment
            implements OnSharedPreferenceChangeListener,
                    TimePickerDialog.OnTimeSetListener, DatePickerDialog.OnDateSetListener ,
                    DialogInterface.OnClickListener,OnCancelListener {
        private static final String TAG = "DateTimeSettings";
        private static final String HOURS_12 = "12";
        private static final String HOURS_24 = "24";

        // Used for showing the current date format, which looks like "12/31/2010", "2010/12/13", etc.
        // The date value is dummy (independent of actual date).
        private Calendar mDummyDate;

      //android:key="date_format",把Key的值,赋值给常量的方式

        private static final String KEY_DATE_FORMAT = "date_format";
        private static final String KEY_AUTO_TIME = "auto_time_list";
        private static final String KEY_AUTO_TIME_ZONE = "auto_zone";

        private static final int DIALOG_DATEPICKER = 0;
        private static final int DIALOG_TIMEPICKER = 1;
        ///M: add for GPS time sync feature @{
        private static final int DIALOG_GPS_CONFIRM = 2;
        private static final int AUTO_TIME_NETWORK_INDEX = 0;
        private static final int AUTO_TIME_GPS_INDEX = 1;
        private static final int AUTO_TIME_OFF_INDEX = 2;
        /// @}
        // have we been launched from the setup wizard?
        protected static final String EXTRA_IS_FIRST_RUN = "firstRun";
        ///M: modify as MTK add GPS time Sync feature
        private ListPreference mAutoTimePref;
        private Preference mTimePref;
        private Preference mTime24Pref;
        private CheckBoxPreference mAutoTimeZonePref;
        private Preference mTimeZone;
        private Preference mDatePref;
        private ListPreference mDateFormat;
       
        private IDateTimeSettingsExt mExt;

        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            addPreferencesFromResource(R.xml.date_time_prefs);

            initUI();
           
            /// M: get plug in and move roaming time setting into date and time settings @{
            mExt = Utils.getDateTimeSettingsPlugin(getActivity());
            mExt.customizePreferenceScreen(getActivity(),getPreferenceScreen());
            /// @}
        }

        private void initUI() {
            boolean autoTimeEnabled = getAutoState(Settings.Global.AUTO_TIME);
            boolean autoTimeZoneEnabled = getAutoState(Settings.Global.AUTO_TIME_ZONE);
            boolean autoTimeGpsEnabled = getAutoState(Settings.System.AUTO_TIME_GPS);
            Intent intent = getActivity().getIntent();
            boolean isFirstRun = intent.getBooleanExtra(EXTRA_IS_FIRST_RUN, false);

            mDummyDate = Calendar.getInstance();
            ///M: add for initiliase auto time listpref @{
            mAutoTimePref = (ListPreference) findPreference(KEY_AUTO_TIME);
            if (autoTimeEnabled) {
                mAutoTimePref.setValueIndex(AUTO_TIME_NETWORK_INDEX);
            } else if (autoTimeGpsEnabled) {
                mAutoTimePref.setValueIndex(AUTO_TIME_GPS_INDEX);
            } else {
                mAutoTimePref.setValueIndex(AUTO_TIME_OFF_INDEX);
            }
            mAutoTimePref.setSummary(mAutoTimePref.getValue());
            ///@}
            mAutoTimeZonePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME_ZONE);
            // Override auto-timezone if it's a wifi-only device or if we're still in setup wizard.
            // TODO: Remove the wifiOnly test when auto-timezone is implemented based on wifi-location.
            if (Utils.isWifiOnly(getActivity()) || isFirstRun) {
                getPreferenceScreen().removePreference(mAutoTimeZonePref);
                autoTimeZoneEnabled = false;
            }
            mAutoTimeZonePref.setChecked(autoTimeZoneEnabled);

            mTimePref = findPreference("time");
            mTime24Pref = findPreference("24 hour");
            mTimeZone = findPreference("timezone");
            mDatePref = findPreference("date");

       //通过键值android:key="date_format",加载选择日期格式(ListPreference)控件
            mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT);
            if (isFirstRun) {
                getPreferenceScreen().removePreference(mTime24Pref);
                getPreferenceScreen().removePreference(mDateFormat);
            }

       //初始化日期格式的值

            String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
            String [] formattedDates = new String[dateFormats.length];
            String currentFormat = getDateFormat();
            // Initialize if DATE_FORMAT is not set in the system settings
            // This can happen after a factory reset (or data wipe)
            if (currentFormat == null) {
                currentFormat = "";
            }

            // Prevents duplicated values on date format selector.
            mDummyDate.set(mDummyDate.get(Calendar.YEAR), mDummyDate.DECEMBER, 31, 13, 0, 0);

            for (int i = 0; i < formattedDates.length; i++) {
                String formatted =
                        DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i])
                        .format(mDummyDate.getTime());

                if (dateFormats[i].length() == 0) {
                    formattedDates[i] = getResources().
                        getString(R.string.normal_date_format, formatted);
                } else {
                    formattedDates[i] = formatted;
                }
            }

       //给ListPreference控件的下拉列表的item赋值(文件/下标值,即数组的实际显示的值和操作数组相对应的下标值)

            mDateFormat.setEntries(formattedDates);
            mDateFormat.setEntryValues(R.array.date_format_values);
            mDateFormat.setValue(currentFormat);

            boolean autoEnabled = autoTimeEnabled || autoTimeGpsEnabled;

            mTimePref.setEnabled(!autoEnabled);
            mDatePref.setEnabled(!autoEnabled);
            mTimeZone.setEnabled(!autoTimeZoneEnabled);
        }

        @Override
        public void onResume() {
            super.onResume();

            getPreferenceScreen().getSharedPreferences()
                    .registerOnSharedPreferenceChangeListener(this);

            ((CheckBoxPreference)mTime24Pref).setChecked(is24Hour());

            // Register for time ticks and other reasons for time change
            IntentFilter filter = new IntentFilter();
            filter.addAction(Intent.ACTION_TIME_TICK);
            filter.addAction(Intent.ACTION_TIME_CHANGED);
            filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
            getActivity().registerReceiver(mIntentReceiver, filter, null, null);

            updateTimeAndDateDisplay(getActivity());
            ///M: update DateFormat @{
            updateDateFormatEntries();
            /// @}
           
            /// update auto timezone and auto time preference
         mExt.customizeDateTimePreferenceStatus(getActivity(),
             mAutoTimePref, mAutoTimeZonePref);
        }

        @Override
        public void onPause() {
            super.onPause();
            getActivity().unregisterReceiver(mIntentReceiver);
            getPreferenceScreen().getSharedPreferences()
                    .unregisterOnSharedPreferenceChangeListener(this);
        }

        public void updateTimeAndDateDisplay(Context context) {
            java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(context);
            final Calendar now = Calendar.getInstance();
            mDummyDate.setTimeZone(now.getTimeZone());
            // We use December 31st because it's unambiguous when demonstrating the date format.
            // We use 13:00 so we can demonstrate the 12/24 hour options.
            mDummyDate.set(now.get(Calendar.YEAR), 11, 31, 13, 0, 0);
            Date dummyDate = mDummyDate.getTime();
            mTimePref.setSummary(DateFormat.getTimeFormat(getActivity()).format(now.getTime()));
            mTimeZone.setSummary(getTimeZoneText(now.getTimeZone()));
            mDatePref.setSummary(shortDateFormat.format(now.getTime()));
            mDateFormat.setSummary(shortDateFormat.format(dummyDate));
            mTime24Pref.setSummary(DateFormat.getTimeFormat(getActivity()).format(dummyDate));
        }
        private void updateDateFormatEntries() {
            String [] dateFormats = getResources().getStringArray(R.array.date_format_values);
            String [] formattedDates = new String[dateFormats.length];
            for (int i = 0; i < formattedDates.length; i++) {
                String formatted =
                        DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i])
                        .format(mDummyDate.getTime());
                if (dateFormats[i].length() == 0) {
                    formattedDates[i] = getResources().
                        getString(R.string.normal_date_format, formatted);
                } else {
                    formattedDates[i] = formatted;
                }
            }
            mDateFormat.setEntries(formattedDates);
        }
        @Override
        public void onDateSet(DatePicker view, int year, int month, int day) {
            final Activity activity = getActivity();
            if (activity != null) {
                setDate(activity, year, month, day);
                updateTimeAndDateDisplay(activity);
                updateDateFormatEntries();
            }
        }

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            final Activity activity = getActivity();
            if (activity != null) {
                setTime(activity, hourOfDay, minute);
                updateTimeAndDateDisplay(activity);
            }

            // We don't need to call timeUpdated() here because the TIME_CHANGED
            // broadcast is sent by the AlarmManager as a side effect of setting the
            // SystemClock time.
        }

        @Override
        public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
            if (key.equals(KEY_DATE_FORMAT)) {
                String format = preferences.getString(key,
                        getResources().getString(R.string.default_date_format));
                Settings.System.putString(getContentResolver(),
                        Settings.System.DATE_FORMAT, format);
                updateTimeAndDateDisplay(getActivity());
            } else if (key.equals(KEY_AUTO_TIME)) {
                String value = mAutoTimePref.getValue();
                int index = mAutoTimePref.findIndexOfValue(value);
                mAutoTimePref.setSummary(value);
                boolean autoEnabled = true;

                if (index == AUTO_TIME_NETWORK_INDEX) {
                    Settings.Global.putInt(getContentResolver(),
                            Settings.Global.AUTO_TIME, 1);
                    Settings.Global.putInt(getContentResolver(),
                            Settings.System.AUTO_TIME_GPS, 0);
                } else if (index == AUTO_TIME_GPS_INDEX) {
                    showDialog(DIALOG_GPS_CONFIRM);
                    setOnCancelListener(this);
                } else {
                    Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME,0);
                    Settings.Global.putInt(getContentResolver(), Settings.System.AUTO_TIME_GPS,0);
                    autoEnabled = false;
                }
                mTimePref.setEnabled(!autoEnabled);
                mDatePref.setEnabled(!autoEnabled);
            } else if (key.equals(KEY_AUTO_TIME_ZONE)) {
                boolean autoZoneEnabled = preferences.getBoolean(key, true);
                Settings.Global.putInt(
                        getContentResolver(), Settings.Global.AUTO_TIME_ZONE, autoZoneEnabled ? 1 : 0);
                mTimeZone.setEnabled(!autoZoneEnabled);
            }
        }

        @Override
        public Dialog onCreateDialog(int id) {
            final Calendar calendar = Calendar.getInstance();
            switch (id) {
            case DIALOG_DATEPICKER:
                DatePickerDialog d = new DatePickerDialog(
                        getActivity(),
                        this,
                        calendar.get(Calendar.YEAR),
                        calendar.get(Calendar.MONTH),
                        calendar.get(Calendar.DAY_OF_MONTH));
                configureDatePicker(d.getDatePicker());
                return d;
            case DIALOG_TIMEPICKER:
                return new TimePickerDialog(
                        getActivity(),
                        this,
                        calendar.get(Calendar.HOUR_OF_DAY),
                        calendar.get(Calendar.MINUTE),
                        DateFormat.is24HourFormat(getActivity()));
            case DIALOG_GPS_CONFIRM:
                int msg;
                if (Settings.Secure.isLocationProviderEnabled(getContentResolver(),
                        LocationManager.GPS_PROVIDER)) {
                    msg = R.string.gps_time_sync_attention_gps_on;
                } else {
                    msg = R.string.gps_time_sync_attention_gps_off;
                }
                return new AlertDialog.Builder(getActivity()).setMessage(
                        getActivity().getResources().getString(msg)).setTitle(
                        R.string.proxy_error).setIcon(
                        android.R.drawable.ic_dialog_alert).setPositiveButton(
                        android.R.string.yes, this).setNegativeButton(
                        android.R.string.no, this).create();
            default:
                throw new IllegalArgumentException();
            }

        }

        static void configureDatePicker(DatePicker datePicker) {
            // The system clock can't represent dates outside this range.
            Calendar t = Calendar.getInstance();
            t.clear();
            t.set(1970, Calendar.JANUARY, 1);
            datePicker.setMinDate(t.getTimeInMillis());
            t.clear();
            t.set(2037, Calendar.DECEMBER, 31);
            datePicker.setMaxDate(t.getTimeInMillis());
        }

        /*
        @Override
        public void onPrepareDialog(int id, Dialog d) {
            switch (id) {
            case DIALOG_DATEPICKER: {
                DatePickerDialog datePicker = (DatePickerDialog)d;
                final Calendar calendar = Calendar.getInstance();
                datePicker.updateDate(
                        calendar.get(Calendar.YEAR),
                        calendar.get(Calendar.MONTH),
                        calendar.get(Calendar.DAY_OF_MONTH));
                break;
            }
            case DIALOG_TIMEPICKER: {
                TimePickerDialog timePicker = (TimePickerDialog)d;
                final Calendar calendar = Calendar.getInstance();
                timePicker.updateTime(
                        calendar.get(Calendar.HOUR_OF_DAY),
                        calendar.get(Calendar.MINUTE));
                break;
            }
            default:
                break;
            }
        }
        */
        @Override
        public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
            if (preference == mDatePref) {
                showDialog(DIALOG_DATEPICKER);
            } else if (preference == mTimePref) {
                // The 24-hour mode may have changed, so recreate the dialog
                removeDialog(DIALOG_TIMEPICKER);
                showDialog(DIALOG_TIMEPICKER);
            } else if (preference == mTime24Pref) {
                set24Hour(((CheckBoxPreference)mTime24Pref).isChecked());
                updateTimeAndDateDisplay(getActivity());
                timeUpdated();
            } else if (preference == mTimeZone) {
                /// M: oobe
                OobeUtils.startTimeZone(this);
            }
            return super.onPreferenceTreeClick(preferenceScreen, preference);
        }

        @Override
        public void onActivityResult(int requestCode, int resultCode,
                Intent data) {
            updateTimeAndDateDisplay(getActivity());
        }

        private void timeUpdated() {
            Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED);
            getActivity().sendBroadcast(timeChanged);
        }

        /*  Get & Set values from the system settings  */

        private boolean is24Hour() {
            return DateFormat.is24HourFormat(getActivity());
        }

        private void set24Hour(boolean is24Hour) {
            Settings.System.putString(getContentResolver(),
                    Settings.System.TIME_12_24,
                    is24Hour ? HOURS_24 : HOURS_12);
        }

        private String getDateFormat() {
            return Settings.System.getString(getContentResolver(),
                    Settings.System.DATE_FORMAT);
        }

        private boolean getAutoState(String name) {
            try {
                return Settings.Global.getInt(getContentResolver(), name) > 0;
            } catch (SettingNotFoundException snfe) {
                return false;
            }
        }

        /* package */ static void setDate(Context context, int year, int month, int day) {
            Calendar c = Calendar.getInstance();

            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, month);
            c.set(Calendar.DAY_OF_MONTH, day);
            long when = c.getTimeInMillis();

            if (when / 1000 < Integer.MAX_VALUE) {
                ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
            }
        }

        /* package */ static void setTime(Context context, int hourOfDay, int minute) {
            Calendar c = Calendar.getInstance();

            c.set(Calendar.HOUR_OF_DAY, hourOfDay);
            c.set(Calendar.MINUTE, minute);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MILLISECOND, 0);
            long when = c.getTimeInMillis();

            if (when / 1000 < Integer.MAX_VALUE) {
                ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
            }
        }

        private static String getTimeZoneText(TimeZone tz) {
            SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ, zzzz");
            sdf.setTimeZone(tz);
            return sdf.format(new Date());
        }

        private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                final Activity activity = getActivity();
                if (activity != null) {
                    updateTimeAndDateDisplay(activity);
                    ///M: update DateFormat @{
                    updateDateFormatEntries();
                    /// @}
                }
            }
        };

        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_POSITIVE) {
                Log.d(TAG, "Enable GPS time sync");
                boolean gpsEnabled = Settings.Secure.isLocationProviderEnabled(
                        getContentResolver(), LocationManager.GPS_PROVIDER);
                if (!gpsEnabled) {
                    Settings.Secure.setLocationProviderEnabled(
                            getContentResolver(), LocationManager.GPS_PROVIDER,
                            true);
                }
                Settings.Global.putInt(getContentResolver(),
                        Settings.Global.AUTO_TIME, 0);
                Settings.Global.putInt(getContentResolver(),
                        Settings.System.AUTO_TIME_GPS, 1);
            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
                Log.d(TAG, "DialogInterface.BUTTON_NEGATIVE");
                reSetAutoTimePref();
            }
        }

        private void reSetAutoTimePref() {
            Log.d(TAG, "reset AutoTimePref as cancel the selection");
            boolean autoTimeEnabled = getAutoState(Settings.Global.AUTO_TIME);
            boolean autoTimeGpsEnabled = getAutoState(Settings.System.AUTO_TIME_GPS);
            if (autoTimeEnabled) {
                mAutoTimePref.setValueIndex(AUTO_TIME_NETWORK_INDEX);
            } else if (autoTimeGpsEnabled) {
                mAutoTimePref.setValueIndex(AUTO_TIME_GPS_INDEX);
            } else {
                mAutoTimePref.setValueIndex(AUTO_TIME_OFF_INDEX);
            }
            mAutoTimePref.setSummary(mAutoTimePref.getValue());
        }

        @Override
        public void onCancel(DialogInterface arg0) {
            Log.d(TAG, "onCancel Dialog");
            reSetAutoTimePref();
        }

        /**
         * M: handle configuration change event
         * @param configuration
         * @return
         */
        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            Log.d(TAG, "onConfigurationChanged");
            super.onConfigurationChanged(newConfig);
            this.getListView().clearScrapViewsIfNeeded();
        }
    }

  • 相关阅读:
    【BZOJ4318】OSU! 期望DP
    【BZOJ2956】模积和 分块
    【BZOJ4443】[Scoi2015]小凸玩矩阵 二分+二分图最大匹配
    【BZOJ2253】[2010 Beijing wc]纸箱堆叠 cdq分治
    【BZOJ3555】[Ctsc2014]企鹅QQ hash
    【BZOJ3238】[Ahoi2013]差异 后缀数组+单调栈
    【BZOJ2287】【POJ Challenge】消失之物 背包动规
    【BZOJ4517】[Sdoi2016]排列计数 组合数+错排
    【BZOJ4551】[Tjoi2016&Heoi2016]树 并查集
    【BZOJ2783】[JLOI2012]树 DFS+栈+队列
  • 原文地址:https://www.cnblogs.com/cyqx/p/4942240.html
Copyright © 2011-2022 走看看