DateTimeSettings.java revision 8af88fb8387259e51615709b2d1ea0260f7057fd
1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1929e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawaimport android.app.Activity; 20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.DatePickerDialog; 21d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasaniimport android.app.Dialog; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.TimePickerDialog; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.BroadcastReceiver; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.IntentFilter; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.SharedPreferences; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.SharedPreferences.OnSharedPreferenceChangeListener; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemClock; 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.CheckBoxPreference; 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.ListPreference; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceScreen; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings; 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Settings.SettingNotFoundException; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.format.DateFormat; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.DatePicker; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.TimePicker; 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.Calendar; 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.Date; 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport java.util.TimeZone; 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 450f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawapublic class DateTimeSettings extends SettingsPreferenceFragment 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project implements OnSharedPreferenceChangeListener, 4771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa TimePickerDialog.OnTimeSetListener, DatePickerDialog.OnDateSetListener { 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String HOURS_12 = "12"; 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String HOURS_24 = "24"; 511bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 5271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa // Used for showing the current date format, which looks like "12/31/2010", "2010/12/13", etc. 5371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa // The date value is dummy (independent of actual date). 54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Calendar mDummyDate; 5571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_DATE_FORMAT = "date_format"; 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_AUTO_TIME = "auto_time"; 581bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani private static final String KEY_AUTO_TIME_ZONE = "auto_zone"; 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int DIALOG_DATEPICKER = 0; 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int DIALOG_TIMEPICKER = 1; 621bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 637f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng // have we been launched from the setup wizard? 647f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng protected static final String EXTRA_IS_FIRST_RUN = "firstRun"; 657f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng 661bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani private CheckBoxPreference mAutoTimePref; 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mTimePref; 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mTime24Pref; 691bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani private CheckBoxPreference mAutoTimeZonePref; 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mTimeZone; 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Preference mDatePref; 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private ListPreference mDateFormat; 731bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 75d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onCreate(Bundle icicle) { 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 771bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.date_time_prefs); 791bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 801bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani initUI(); 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 821bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void initUI() { 841bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani boolean autoTimeEnabled = getAutoState(Settings.System.AUTO_TIME); 851bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani boolean autoTimeZoneEnabled = getAutoState(Settings.System.AUTO_TIME_ZONE); 86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 877f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng Intent intent = getActivity().getIntent(); 887f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng boolean isFirstRun = intent.getBooleanExtra(EXTRA_IS_FIRST_RUN, false); 897f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDummyDate = Calendar.getInstance(); 911bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 921bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mAutoTimePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME); 931bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mAutoTimePref.setChecked(autoTimeEnabled); 94ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani mAutoTimeZonePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME_ZONE); 957f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng // Override auto-timezone if it's a wifi-only device or if we're still in setup wizard. 967f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng // TODO: Remove the wifiOnly test when auto-timezone is implemented based on wifi-location. 978af88fb8387259e51615709b2d1ea0260f7057fdRobert Greenwalt if (Utils.isWifiOnly(getActivity()) || isFirstRun) { 98c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani getPreferenceScreen().removePreference(mAutoTimeZonePref); 99c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani autoTimeZoneEnabled = false; 100c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 101ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani mAutoTimeZonePref.setChecked(autoTimeZoneEnabled); 102ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTimePref = findPreference("time"); 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTime24Pref = findPreference("24 hour"); 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTimeZone = findPreference("timezone"); 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDatePref = findPreference("date"); 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT); 1087f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng if (isFirstRun) { 1097f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng getPreferenceScreen().removePreference(mTime24Pref); 1107f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng getPreferenceScreen().removePreference(mDateFormat); 1117f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng } 1121bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String [] dateFormats = getResources().getStringArray(R.array.date_format_values); 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String [] formattedDates = new String[dateFormats.length]; 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String currentFormat = getDateFormat(); 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Initialize if DATE_FORMAT is not set in the system settings 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // This can happen after a factory reset (or data wipe) 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (currentFormat == null) { 119188ca778702938d87313592175a3c2ff86bd3218Eric Fischer currentFormat = ""; 120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < formattedDates.length; i++) { 122188ca778702938d87313592175a3c2ff86bd3218Eric Fischer String formatted = 123d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i]) 124d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani .format(mDummyDate.getTime()); 125188ca778702938d87313592175a3c2ff86bd3218Eric Fischer 126188ca778702938d87313592175a3c2ff86bd3218Eric Fischer if (dateFormats[i].length() == 0) { 127188ca778702938d87313592175a3c2ff86bd3218Eric Fischer formattedDates[i] = getResources(). 128188ca778702938d87313592175a3c2ff86bd3218Eric Fischer getString(R.string.normal_date_format, formatted); 129188ca778702938d87313592175a3c2ff86bd3218Eric Fischer } else { 130188ca778702938d87313592175a3c2ff86bd3218Eric Fischer formattedDates[i] = formatted; 131188ca778702938d87313592175a3c2ff86bd3218Eric Fischer } 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1331bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setEntries(formattedDates); 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setEntryValues(R.array.date_format_values); 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setValue(currentFormat); 1371bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 1381bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mTimePref.setEnabled(!autoTimeEnabled); 1391bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mDatePref.setEnabled(!autoTimeEnabled); 1401bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mTimeZone.setEnabled(!autoTimeZoneEnabled); 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 144d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onResume() { 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 1461bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 1471bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani getPreferenceScreen().getSharedPreferences() 1481bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani .registerOnSharedPreferenceChangeListener(this); 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ((CheckBoxPreference)mTime24Pref).setChecked(is24Hour()); 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Register for time ticks and other reasons for time change 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project IntentFilter filter = new IntentFilter(); 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project filter.addAction(Intent.ACTION_TIME_TICK); 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project filter.addAction(Intent.ACTION_TIME_CHANGED); 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); 157d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity().registerReceiver(mIntentReceiver, filter, null, null); 15829e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa 15929e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1621bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani @Override 163d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onPause() { 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 165d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity().unregisterReceiver(mIntentReceiver); 1661bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani getPreferenceScreen().getSharedPreferences() 1671bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani .unregisterOnSharedPreferenceChangeListener(this); 168afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1691bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 1707f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng public void updateTimeAndDateDisplay(Context context) { 17129e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(context); 17271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa final Calendar now = Calendar.getInstance(); 173151b0e117443d874c475d25f7144bba1e1b438efKenny Root mDummyDate.setTimeZone(now.getTimeZone()); 174151b0e117443d874c475d25f7144bba1e1b438efKenny Root mDummyDate.set(now.get(Calendar.YEAR), 11, 31, 13, 0, 0); 175afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Date dummyDate = mDummyDate.getTime(); 17671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa mTimePref.setSummary(DateFormat.getTimeFormat(getActivity()).format(now.getTime())); 17771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa mTimeZone.setSummary(getTimeZoneText(now.getTimeZone())); 17871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa mDatePref.setSummary(shortDateFormat.format(now.getTime())); 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setSummary(shortDateFormat.format(dummyDate)); 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 181afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1820f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa @Override 183afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDateSet(DatePicker view, int year, int month, int day) { 18471cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa setDate(year, month, day); 18529e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa final Activity activity = getActivity(); 18629e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa if (activity != null) { 18729e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(activity); 18829e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa } 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 190afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1910f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa @Override 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 19371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa setTime(hourOfDay, minute); 19429e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa final Activity activity = getActivity(); 19529e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa if (activity != null) { 19629e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(activity); 19729e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa } 19871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 19972ed6feab24308a0acd1fa2135afa3476759cf39The Android Open Source Project // We don't need to call timeUpdated() here because the TIME_CHANGED 20072ed6feab24308a0acd1fa2135afa3476759cf39The Android Open Source Project // broadcast is sent by the AlarmManager as a side effect of setting the 20172ed6feab24308a0acd1fa2135afa3476759cf39The Android Open Source Project // SystemClock time. 202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 203afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2040f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa @Override 205afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { 206afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (key.equals(KEY_DATE_FORMAT)) { 2071bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani String format = preferences.getString(key, 208afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getResources().getString(R.string.default_date_format)); 2091bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani Settings.System.putString(getContentResolver(), 210afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.DATE_FORMAT, format); 21129e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (key.equals(KEY_AUTO_TIME)) { 213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean autoEnabled = preferences.getBoolean(key, true); 2141bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME, 215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project autoEnabled ? 1 : 0); 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTimePref.setEnabled(!autoEnabled); 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDatePref.setEnabled(!autoEnabled); 2181bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani } else if (key.equals(KEY_AUTO_TIME_ZONE)) { 2191bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani boolean autoZoneEnabled = preferences.getBoolean(key, true); 2201bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani Settings.System.putInt( 2211bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani getContentResolver(), Settings.System.AUTO_TIME_ZONE, autoZoneEnabled ? 1 : 0); 2221bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mTimeZone.setEnabled(!autoZoneEnabled); 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public Dialog onCreateDialog(int id) { 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Dialog d; 229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (id) { 231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_DATEPICKER: { 232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project d = new DatePickerDialog( 234d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity(), 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project this, 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.YEAR), 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MONTH), 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.DAY_OF_MONTH)); 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_TIMEPICKER: { 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project d = new TimePickerDialog( 244d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity(), 245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project this, 246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.HOUR_OF_DAY), 247afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MINUTE), 248d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani DateFormat.is24HourFormat(getActivity())); 249afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 250afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project d = null; 253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return d; 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 258afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 259d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani /* 260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 261afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPrepareDialog(int id, Dialog d) { 262afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (id) { 263afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_DATEPICKER: { 264afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project DatePickerDialog datePicker = (DatePickerDialog)d; 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project datePicker.updateDate( 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.YEAR), 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MONTH), 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.DAY_OF_MONTH)); 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 272afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_TIMEPICKER: { 273afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project TimePickerDialog timePicker = (TimePickerDialog)d; 274afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 275afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project timePicker.updateTime( 276afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.HOUR_OF_DAY), 277afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MINUTE)); 278afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 279afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 280afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 281afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 282afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 283afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 284d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani */ 285afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (preference == mDatePref) { 288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project showDialog(DIALOG_DATEPICKER); 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference == mTimePref) { 290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // The 24-hour mode may have changed, so recreate the dialog 291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project removeDialog(DIALOG_TIMEPICKER); 292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project showDialog(DIALOG_TIMEPICKER); 293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference == mTime24Pref) { 294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project set24Hour(((CheckBoxPreference)mTime24Pref).isChecked()); 29529e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project timeUpdated(); 297afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 2980f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa return super.onPreferenceTreeClick(preferenceScreen, preference); 299afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3001bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 301afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 302d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onActivityResult(int requestCode, int resultCode, 303afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent data) { 30429e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 305afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3061bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 307afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void timeUpdated() { 308afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED); 309d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity().sendBroadcast(timeChanged); 310afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3111bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 312afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /* Get & Set values from the system settings */ 3131bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 314afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean is24Hour() { 315d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani return DateFormat.is24HourFormat(getActivity()); 316afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3171bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void set24Hour(boolean is24Hour) { 319afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.putString(getContentResolver(), 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.TIME_12_24, 321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project is24Hour? HOURS_24 : HOURS_12); 322afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3231bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 324afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String getDateFormat() { 3251bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani return Settings.System.getString(getContentResolver(), 326afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.DATE_FORMAT); 327afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3281bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 3291bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani private boolean getAutoState(String name) { 330afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 3311bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani return Settings.System.getInt(getContentResolver(), name) > 0; 332afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (SettingNotFoundException snfe) { 333ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani return false; 334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 336afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 33771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* Helper routines to format timezone */ 33871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 33971cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* package */ static void setDate(int year, int month, int day) { 34071cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa Calendar c = Calendar.getInstance(); 34171cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 34271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.YEAR, year); 34371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.MONTH, month); 34471cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.DAY_OF_MONTH, day); 34571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa long when = c.getTimeInMillis(); 34671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 34771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa if (when / 1000 < Integer.MAX_VALUE) { 34871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa SystemClock.setCurrentTimeMillis(when); 349188ca778702938d87313592175a3c2ff86bd3218Eric Fischer } 35071cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa } 35171cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 35271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* package */ static void setTime(int hourOfDay, int minute) { 35371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa Calendar c = Calendar.getInstance(); 354188ca778702938d87313592175a3c2ff86bd3218Eric Fischer 35571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.HOUR_OF_DAY, hourOfDay); 35671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.MINUTE, minute); 35733ff11599553254683bbf4a5c75d5dee4251fd74Gilles Debunne c.set(Calendar.SECOND, 0); 35833ff11599553254683bbf4a5c75d5dee4251fd74Gilles Debunne c.set(Calendar.MILLISECOND, 0); 35971cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa long when = c.getTimeInMillis(); 36071cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 36171cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa if (when / 1000 < Integer.MAX_VALUE) { 36271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa SystemClock.setCurrentTimeMillis(when); 36371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa } 364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 36571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 36671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* package */ static String getTimeZoneText(TimeZone tz) { 367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean daylight = tz.inDaylightTime(new Date()); 368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project StringBuilder sb = new StringBuilder(); 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sb.append(formatOffset(tz.getRawOffset() + 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project (daylight ? tz.getDSTSavings() : 0))). 372afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project append(", "). 373afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project append(tz.getDisplayName(daylight, TimeZone.LONG)); 374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3751bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani return sb.toString(); 376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 377afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 37871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa private static char[] formatOffset(int off) { 379afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project off = off / 1000 / 60; 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 381afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project char[] buf = new char[9]; 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[0] = 'G'; 383afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[1] = 'M'; 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[2] = 'T'; 385afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (off < 0) { 387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[3] = '-'; 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project off = -off; 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 390afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[3] = '+'; 391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3931bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani int hours = off / 60; 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int minutes = off % 60; 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[4] = (char) ('0' + hours / 10); 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[5] = (char) ('0' + hours % 10); 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[6] = ':'; 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[7] = (char) ('0' + minutes / 10); 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[8] = (char) ('0' + minutes % 10); 403afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return buf; 405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 4061bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 407afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 408afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 409afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onReceive(Context context, Intent intent) { 41029e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa final Activity activity = getActivity(); 41129e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa if (activity != null) { 41229e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(activity); 41329e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa } 414afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 415afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 416afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 417