DateTimeSettings.java revision 7f6f6e18c9f078323b15c8185a7e707194e7d155
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(); 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDummyDate.set(mDummyDate.get(Calendar.YEAR), 11, 31, 13, 0, 0); 921bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 931bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mAutoTimePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME); 941bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mAutoTimePref.setChecked(autoTimeEnabled); 95ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani mAutoTimeZonePref = (CheckBoxPreference) findPreference(KEY_AUTO_TIME_ZONE); 967f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng // Override auto-timezone if it's a wifi-only device or if we're still in setup wizard. 977f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng // TODO: Remove the wifiOnly test when auto-timezone is implemented based on wifi-location. 987f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng if (Utils.isWifiOnly() || isFirstRun) { 99c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani getPreferenceScreen().removePreference(mAutoTimeZonePref); 100c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani autoTimeZoneEnabled = false; 101c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani } 102ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani mAutoTimeZonePref.setChecked(autoTimeZoneEnabled); 103ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTimePref = findPreference("time"); 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTime24Pref = findPreference("24 hour"); 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTimeZone = findPreference("timezone"); 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDatePref = findPreference("date"); 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat = (ListPreference) findPreference(KEY_DATE_FORMAT); 1097f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng if (isFirstRun) { 1107f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng getPreferenceScreen().removePreference(mTime24Pref); 1117f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng getPreferenceScreen().removePreference(mDateFormat); 1127f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng } 1131bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String [] dateFormats = getResources().getStringArray(R.array.date_format_values); 115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String [] formattedDates = new String[dateFormats.length]; 116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String currentFormat = getDateFormat(); 117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Initialize if DATE_FORMAT is not set in the system settings 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // This can happen after a factory reset (or data wipe) 119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (currentFormat == null) { 120188ca778702938d87313592175a3c2ff86bd3218Eric Fischer currentFormat = ""; 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < formattedDates.length; i++) { 123188ca778702938d87313592175a3c2ff86bd3218Eric Fischer String formatted = 124d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani DateFormat.getDateFormatForSetting(getActivity(), dateFormats[i]) 125d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani .format(mDummyDate.getTime()); 126188ca778702938d87313592175a3c2ff86bd3218Eric Fischer 127188ca778702938d87313592175a3c2ff86bd3218Eric Fischer if (dateFormats[i].length() == 0) { 128188ca778702938d87313592175a3c2ff86bd3218Eric Fischer formattedDates[i] = getResources(). 129188ca778702938d87313592175a3c2ff86bd3218Eric Fischer getString(R.string.normal_date_format, formatted); 130188ca778702938d87313592175a3c2ff86bd3218Eric Fischer } else { 131188ca778702938d87313592175a3c2ff86bd3218Eric Fischer formattedDates[i] = formatted; 132188ca778702938d87313592175a3c2ff86bd3218Eric Fischer } 133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1341bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setEntries(formattedDates); 136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setEntryValues(R.array.date_format_values); 137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setValue(currentFormat); 1381bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 1391bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mTimePref.setEnabled(!autoTimeEnabled); 1401bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mDatePref.setEnabled(!autoTimeEnabled); 1411bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mTimeZone.setEnabled(!autoTimeZoneEnabled); 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 145d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onResume() { 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 1471bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 1481bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani getPreferenceScreen().getSharedPreferences() 1491bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani .registerOnSharedPreferenceChangeListener(this); 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ((CheckBoxPreference)mTime24Pref).setChecked(is24Hour()); 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Register for time ticks and other reasons for time change 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project IntentFilter filter = new IntentFilter(); 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project filter.addAction(Intent.ACTION_TIME_TICK); 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project filter.addAction(Intent.ACTION_TIME_CHANGED); 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); 158d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity().registerReceiver(mIntentReceiver, filter, null, null); 15929e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa 16029e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 161afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 162afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1631bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani @Override 164d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onPause() { 165afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 166d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity().unregisterReceiver(mIntentReceiver); 1671bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani getPreferenceScreen().getSharedPreferences() 1681bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani .unregisterOnSharedPreferenceChangeListener(this); 169afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 1701bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 1717f6f6e18c9f078323b15c8185a7e707194e7d155Freeman Ng public void updateTimeAndDateDisplay(Context context) { 17229e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa java.text.DateFormat shortDateFormat = DateFormat.getDateFormat(context); 17371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa final Calendar now = Calendar.getInstance(); 174afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Date dummyDate = mDummyDate.getTime(); 17571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa mTimePref.setSummary(DateFormat.getTimeFormat(getActivity()).format(now.getTime())); 17671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa mTimeZone.setSummary(getTimeZoneText(now.getTimeZone())); 17771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa mDatePref.setSummary(shortDateFormat.format(now.getTime())); 178afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDateFormat.setSummary(shortDateFormat.format(dummyDate)); 179afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 180afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1810f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa @Override 182afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onDateSet(DatePicker view, int year, int month, int day) { 18371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa setDate(year, month, day); 18429e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa final Activity activity = getActivity(); 18529e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa if (activity != null) { 18629e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(activity); 18729e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa } 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 1900f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa @Override 191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 19271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa setTime(hourOfDay, minute); 19329e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa final Activity activity = getActivity(); 19429e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa if (activity != null) { 19529e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(activity); 19629e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa } 19771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 19872ed6feab24308a0acd1fa2135afa3476759cf39The Android Open Source Project // We don't need to call timeUpdated() here because the TIME_CHANGED 19972ed6feab24308a0acd1fa2135afa3476759cf39The Android Open Source Project // broadcast is sent by the AlarmManager as a side effect of setting the 20072ed6feab24308a0acd1fa2135afa3476759cf39The Android Open Source Project // SystemClock time. 201afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2030f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa @Override 204afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { 205afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (key.equals(KEY_DATE_FORMAT)) { 2061bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani String format = preferences.getString(key, 207afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getResources().getString(R.string.default_date_format)); 2081bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani Settings.System.putString(getContentResolver(), 209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.DATE_FORMAT, format); 21029e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (key.equals(KEY_AUTO_TIME)) { 212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean autoEnabled = preferences.getBoolean(key, true); 2131bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani Settings.System.putInt(getContentResolver(), Settings.System.AUTO_TIME, 214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project autoEnabled ? 1 : 0); 215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mTimePref.setEnabled(!autoEnabled); 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mDatePref.setEnabled(!autoEnabled); 2171bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani } else if (key.equals(KEY_AUTO_TIME_ZONE)) { 2181bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani boolean autoZoneEnabled = preferences.getBoolean(key, true); 2191bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani Settings.System.putInt( 2201bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani getContentResolver(), Settings.System.AUTO_TIME_ZONE, autoZoneEnabled ? 1 : 0); 2211bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani mTimeZone.setEnabled(!autoZoneEnabled); 222afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public Dialog onCreateDialog(int id) { 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Dialog d; 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 229afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (id) { 230afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_DATEPICKER: { 231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 232afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project d = new DatePickerDialog( 233d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity(), 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project this, 235afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.YEAR), 236afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MONTH), 237afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.DAY_OF_MONTH)); 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 239afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_TIMEPICKER: { 241afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project d = new TimePickerDialog( 243d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity(), 244afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project this, 245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.HOUR_OF_DAY), 246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MINUTE), 247d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani DateFormat.is24HourFormat(getActivity())); 248afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 249afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 250afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project d = null; 252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return d; 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 258d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani /* 259afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPrepareDialog(int id, Dialog d) { 261afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (id) { 262afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_DATEPICKER: { 263afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project DatePickerDialog datePicker = (DatePickerDialog)d; 264afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project datePicker.updateDate( 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.YEAR), 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MONTH), 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.DAY_OF_MONTH)); 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case DIALOG_TIMEPICKER: { 272afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project TimePickerDialog timePicker = (TimePickerDialog)d; 273afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Calendar calendar = Calendar.getInstance(); 274afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project timePicker.updateTime( 275afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.HOUR_OF_DAY), 276afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project calendar.get(Calendar.MINUTE)); 277afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 278afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 279afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project default: 280afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project break; 281afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 282afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 283d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani */ 284afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 285afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (preference == mDatePref) { 287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project showDialog(DIALOG_DATEPICKER); 288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference == mTimePref) { 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // The 24-hour mode may have changed, so recreate the dialog 290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project removeDialog(DIALOG_TIMEPICKER); 291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project showDialog(DIALOG_TIMEPICKER); 292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (preference == mTime24Pref) { 293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project set24Hour(((CheckBoxPreference)mTime24Pref).isChecked()); 29429e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project timeUpdated(); 296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 2970f4f2f3a81f2a6d7100b4cff0d8de062cb2bc8f6Daisuke Miyakawa return super.onPreferenceTreeClick(preferenceScreen, preference); 298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 2991bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 300afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 301d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onActivityResult(int requestCode, int resultCode, 302afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent data) { 30329e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(getActivity()); 304afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3051bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 306afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void timeUpdated() { 307afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Intent timeChanged = new Intent(Intent.ACTION_TIME_CHANGED); 308d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani getActivity().sendBroadcast(timeChanged); 309afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3101bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 311afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /* Get & Set values from the system settings */ 3121bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 313afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean is24Hour() { 314d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani return DateFormat.is24HourFormat(getActivity()); 315afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3161bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 317afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void set24Hour(boolean is24Hour) { 318afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.putString(getContentResolver(), 319afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.TIME_12_24, 320afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project is24Hour? HOURS_24 : HOURS_12); 321afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3221bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 323afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String getDateFormat() { 3241bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani return Settings.System.getString(getContentResolver(), 325afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Settings.System.DATE_FORMAT); 326afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 3271bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 3281bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani private boolean getAutoState(String name) { 329afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project try { 3301bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani return Settings.System.getInt(getContentResolver(), name) > 0; 331afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } catch (SettingNotFoundException snfe) { 332ea07165ef26b57dde4b45eee24200cdfaa5945e7Amith Yamasani return false; 333afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 334afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 335afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 33671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* Helper routines to format timezone */ 33771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 33871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* package */ static void setDate(int year, int month, int day) { 33971cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa Calendar c = Calendar.getInstance(); 34071cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 34171cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.YEAR, year); 34271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.MONTH, month); 34371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.DAY_OF_MONTH, day); 34471cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa long when = c.getTimeInMillis(); 34571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 34671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa if (when / 1000 < Integer.MAX_VALUE) { 34771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa SystemClock.setCurrentTimeMillis(when); 348188ca778702938d87313592175a3c2ff86bd3218Eric Fischer } 34971cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa } 35071cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 35171cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* package */ static void setTime(int hourOfDay, int minute) { 35271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa Calendar c = Calendar.getInstance(); 353188ca778702938d87313592175a3c2ff86bd3218Eric Fischer 35471cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.HOUR_OF_DAY, hourOfDay); 35571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa c.set(Calendar.MINUTE, minute); 35671cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa long when = c.getTimeInMillis(); 35771cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 35871cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa if (when / 1000 < Integer.MAX_VALUE) { 35971cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa SystemClock.setCurrentTimeMillis(when); 36071cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa } 361afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 36271cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa 36371cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa /* package */ static String getTimeZoneText(TimeZone tz) { 364afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project boolean daylight = tz.inDaylightTime(new Date()); 365afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project StringBuilder sb = new StringBuilder(); 366afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 367afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sb.append(formatOffset(tz.getRawOffset() + 368afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project (daylight ? tz.getDSTSavings() : 0))). 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project append(", "). 370afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project append(tz.getDisplayName(daylight, TimeZone.LONG)); 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3721bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani return sb.toString(); 373afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 374afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 37571cc548f7ee51ff77a2c1dfb5da7a3f7b6c55fd5Daisuke Miyakawa private static char[] formatOffset(int off) { 376afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project off = off / 1000 / 60; 377afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 378afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project char[] buf = new char[9]; 379afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[0] = 'G'; 380afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[1] = 'M'; 381afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[2] = 'T'; 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 383afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (off < 0) { 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[3] = '-'; 385afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project off = -off; 386afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 387afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[3] = '+'; 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 3901bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani int hours = off / 60; 391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project int minutes = off % 60; 392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[4] = (char) ('0' + hours / 10); 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[5] = (char) ('0' + hours % 10); 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 396afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[6] = ':'; 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[7] = (char) ('0' + minutes / 10); 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project buf[8] = (char) ('0' + minutes % 10); 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return buf; 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 4031bb6db526771fa594b2e5c0865dc89dce3cf351cAmith Yamasani 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onReceive(Context context, Intent intent) { 40729e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa final Activity activity = getActivity(); 40829e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa if (activity != null) { 40929e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa updateTimeAndDateDisplay(activity); 41029e812f29915d9bd84d516e53931ba774f62d328Daisuke Miyakawa } 411afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 412afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 414