<string name="app_label">"Budík"</string>
<string name="add_alarm">"Přidat upozornění"</string>
<string name="delete_alarm">"Smazat upozornění"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Toto upozornění bude odstraněno."</string>
<string name="show_clock">"Zobrazit hodiny"</string>
<string name="hide_clock">"Skrýt hodiny"</string>
<string name="set_alarm">"Nastavit upozornění"</string>
<string name="clock_instructions">"Vyberte hodiny, které mají být zobrazeny."</string>
<string name="error">"Upozornění není nastaveno"</string>
<string name="dberror">"Upozornění bohužel nelze nastavit."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Analogové hodiny"</string>
<string-array name="days_of_week">
<item>"Pondělí"</item>
<item>"Úterý"</item>
<string name="app_label">"Wecker"</string>
<string name="add_alarm">"Wecker hinzufügen"</string>
<string name="delete_alarm">"Wecker löschen"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Dieser Alarm wird gelöscht."</string>
<string name="show_clock">"Uhr anzeigen"</string>
<string name="hide_clock">"Uhr ausblenden"</string>
<string name="set_alarm">"Wecker einstellen"</string>
<string name="clock_instructions">"Wählen Sie die anzuzeigende Uhr aus."</string>
<string name="error">"Wecker nicht eingestellt"</string>
<string name="dberror">"Der Wecker konnte nicht eingestellt werden."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Analoguhr"</string>
<string-array name="days_of_week">
<item>"Montag"</item>
<item>"Dienstag"</item>
<string name="app_label">"Reloj de alarma"</string>
<string name="add_alarm">"Añadir alarma"</string>
<string name="delete_alarm">"Eliminar alarma"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Esta alarma se eliminará."</string>
<string name="show_clock">"Mostrar reloj"</string>
<string name="hide_clock">"Ocultar reloj"</string>
<string name="set_alarm">"Establecer alarma"</string>
<string name="clock_instructions">"Selecciona el reloj que quieras ver."</string>
<string name="error">"Alarma no establecida"</string>
<string name="dberror">"No se ha podido establecer la alarma."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Reloj analógico"</string>
<string-array name="days_of_week">
<item>"Lunes"</item>
<item>"Martes"</item>
<string name="app_label">"Réveil"</string>
<string name="add_alarm">"Ajouter alarme"</string>
<string name="delete_alarm">"Désactiver alarme"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Cette alarme va être supprimée."</string>
<string name="show_clock">"Afficher horloge"</string>
<string name="hide_clock">"Masquer horloge"</string>
<string name="set_alarm">"Régler alarme"</string>
<string name="clock_instructions">"Sélectionner une horloge à afficher."</string>
<string name="error">"Alarme non activée"</string>
<string name="dberror">"Désolé, impossible de régler l\'alarme."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Horloge analogique"</string>
<string-array name="days_of_week">
<item>"Lundi"</item>
<item>"Mardi"</item>
<string name="app_label">"Sveglia"</string>
<string name="add_alarm">"Aggiungi allarme"</string>
<string name="delete_alarm">"Elimina allarme"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Questa sveglia verrà eliminata."</string>
<string name="show_clock">"Mostra orologio"</string>
<string name="hide_clock">"Nascondi orologio"</string>
<string name="set_alarm">"Imposta allarme"</string>
<string name="clock_instructions">"Seleziona un orologio."</string>
<string name="error">"Allarme non impostato"</string>
<string name="dberror">"Spiacenti. Impossibile impostare l\'allarme."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Orologio analogico"</string>
<string-array name="days_of_week">
<item>"Lunedì"</item>
<item>"Martedì"</item>
-->
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"アラームクロック"</string>
- <string name="add_alarm">"ã\82¢ã\83©ã\83¼ã\83 ã\82\92追å\8a "</string>
+ <string name="app_label">"アラーム"</string>
+ <string name="add_alarm">"ã\82¢ã\83©ã\83¼ã\83 ã\81®è¨å®\9a"</string>
<string name="delete_alarm">"アラームを削除"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"このアラームを削除します。"</string>
<string name="show_clock">"時計を表示"</string>
<string name="hide_clock">"時計を隠す"</string>
- <string name="set_alarm">"ã\82¢ã\83©ã\83¼ã\83 ã\82\92ã\82»ã\83\83ã\83\88"</string>
- <string name="enable">"アラームOn"</string>
- <string name="alarm_vibrate">"バイブ"</string>
+ <string name="set_alarm">"ã\82¢ã\83©ã\83¼ã\83 ã\81®è¨å®\9a"</string>
+ <string name="enable">"アラームをONにする"</string>
+ <string name="alarm_vibrate">"バイブレーション"</string>
<string name="alarm_repeat">"繰り返し"</string>
<string name="alert">"アラーム音"</string>
<string name="time">"時刻"</string>
<string name="alarm_alert_dismiss_text">"停止"</string>
<string name="alarm_alert_alert_silenced">"アラームは<xliff:g id="MINUTES">%d</xliff:g>分間鳴って止まりました"</string>
<string name="alarm_alert_snooze_text">"スヌーズ"</string>
- <string name="alarm_alert_snooze_set">"スヌーズ中(<xliff:g id="MINUTES">%d</xliff:g>分)"</string>
- <string name="alarm_alert_snooze_not_set">"スヌーズセットエラー:<xliff:g id="TIME">%s</xliff:g>に次のアラームがセットされています"</string>
- <string name="alarm_set">"アラームを<xliff:g id="TIME_DELTA">%s</xliff:g>後にセットしました。"</string>
+ <string name="alarm_alert_snooze_set">"<xliff:g id="MINUTES">%d</xliff:g>分間スヌーズ"</string>
+ <string name="alarm_alert_snooze_not_set">"スヌーズ設定エラー: <xliff:g id="TIME">%s</xliff:g>に次のアラームがセットされています"</string>
+ <string name="alarm_set">"<xliff:g id="TIME_DELTA">%s</xliff:g>後にセットしました"</string>
<!-- no translation found for combiner (2146732837172099134) -->
<skip />
<string name="day">"1日"</string>
<string name="never">"繰り返しなし"</string>
<string name="day_concat">"、"</string>
<string name="clock_instructions">"表示する時計を選択してください。"</string>
- <string name="error">"アラームをセットできませんでした"</string>
- <string name="dberror">"アラームをセットできませんでした。"</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="error">"アラームを設定できません"</string>
+ <string name="dberror">"アラームを設定できません"</string>
+ <string name="analog_gadget">"アナログ時計"</string>
<string-array name="days_of_week">
<item>"月曜日"</item>
<item>"火曜日"</item>
<item>"日曜日"</item>
</string-array>
<string-array name="days_of_week_short">
- <item>"(月)"</item>
- <item>"(火)"</item>
- <item>"(水)"</item>
- <item>"(木)"</item>
- <item>"(金)"</item>
- <item>"(土)"</item>
- <item>"(日)"</item>
+ <item>"(月)"</item>
+ <item>"(火)"</item>
+ <item>"(水)"</item>
+ <item>"(木)"</item>
+ <item>"(金)"</item>
+ <item>"(土)"</item>
+ <item>"(日)"</item>
</string-array>
</resources>
<string name="app_label">"알람 시계"</string>
<string name="add_alarm">"알람 추가"</string>
<string name="delete_alarm">"알람 삭제"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"알람이 삭제됩니다."</string>
<string name="show_clock">"시계 표시"</string>
<string name="hide_clock">"시계 숨기기"</string>
<string name="set_alarm">"알람 설정"</string>
<string name="clock_instructions">"표시할 시계를 선택하세요."</string>
<string name="error">"알람이 설정되지 않음"</string>
<string name="dberror">"죄송합니다. 알람을 설정할 수 없습니다."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"아날로그 시계"</string>
<string-array name="days_of_week">
<item>"월요일"</item>
<item>"화요일"</item>
<string name="app_label">"Wekker"</string>
<string name="add_alarm">"Alarm toevoegen"</string>
<string name="delete_alarm">"Alarm verwijderen"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Dit alarm wordt verwijderd."</string>
<string name="show_clock">"Klok weergeven"</string>
<string name="hide_clock">"Klok verbergen"</string>
<string name="set_alarm">"Alarm instellen"</string>
<string name="clock_instructions">"Selecteer een klok die u wilt weergeven."</string>
<string name="error">"Alarm is niet ingesteld"</string>
<string name="dberror">"Het alarm kan niet worden ingesteld."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Analoge klok"</string>
<string-array name="days_of_week">
<item>"Maandag"</item>
<item>"Dinsdag"</item>
<string name="app_label">"Budzik"</string>
<string name="add_alarm">"Dodaj alarm"</string>
<string name="delete_alarm">"Usuń alarm"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Ten zegar zostanie usunięty."</string>
<string name="show_clock">"Pokaż zegar"</string>
<string name="hide_clock">"Ukryj zegar"</string>
<string name="set_alarm">"Ustaw alarm"</string>
<string name="clock_instructions">"Wybierz wyświetlany zegar."</string>
<string name="error">"Alarm nieustawiony"</string>
<string name="dberror">"Niestety, nie można ustawić alarmu."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Zegar analogowy"</string>
<string-array name="days_of_week">
<item>"Poniedziałek"</item>
<item>"Wtorek"</item>
<string name="app_label">"Будильник"</string>
<string name="add_alarm">"Добавить будильник"</string>
<string name="delete_alarm">"Удалить будильник"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"Сигнал будет удален."</string>
<string name="show_clock">"Показать часы"</string>
<string name="hide_clock">"Скрыть часы"</string>
<string name="set_alarm">"Установить будильник"</string>
<string name="clock_instructions">"Выберите часы для отображения"</string>
<string name="error">"Будильник не установлен"</string>
<string name="dberror">"К сожалению, установить будильник не удалось."</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"Часы со стрелками"</string>
<string-array name="days_of_week">
<item>"Понедельник"</item>
<item>"Вторник"</item>
<string name="app_label">"闹钟时钟"</string>
<string name="add_alarm">"添加闹钟"</string>
<string name="delete_alarm">"取消闹钟"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"将会删除此警报。"</string>
<string name="show_clock">"显示时钟"</string>
<string name="hide_clock">"隐藏时钟"</string>
<string name="set_alarm">"设置闹钟"</string>
<string name="clock_instructions">"选择要显示的时钟。"</string>
<string name="error">"未设置闹钟"</string>
<string name="dberror">"抱歉,无法设置该闹钟。"</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"模拟时钟"</string>
<string-array name="days_of_week">
<item>"周一"</item>
<item>"周二"</item>
<string name="app_label">"鬧鐘"</string>
<string name="add_alarm">"新增鬧鐘"</string>
<string name="delete_alarm">"刪除鬧鐘"</string>
- <!-- no translation found for delete_alarm_confirm (4237696873219106907) -->
- <skip />
+ <string name="delete_alarm_confirm">"將刪除此鬧鐘。"</string>
<string name="show_clock">"顯示時鐘"</string>
<string name="hide_clock">"隱藏時鐘"</string>
<string name="set_alarm">"設定鬧鐘"</string>
<string name="clock_instructions">"選取顯示的時鐘。"</string>
<string name="error">"鬧鐘未設定"</string>
<string name="dberror">"抱歉,無法設定鬧鐘。"</string>
- <!-- no translation found for analog_gadget (1670505720837152766) -->
- <skip />
+ <string name="analog_gadget">"類比時鐘"</string>
<string-array name="days_of_week">
<item>"星期一"</item>
<item>"星期二"</item>
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.os.Bundle;
+import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.LayoutInflater;
*/
public class AlarmAlert extends Activity {
- private final static int SNOOZE_MINUTES = 10;
+ private static final int SNOOZE_MINUTES = 10;
+ private static final int UNKNOWN = 0;
+ private static final int SNOOZE = 1;
+ private static final int DISMISS = 2;
+ private static final int KILLED = 3;
private KeyguardManager mKeyguardManager;
private KeyguardManager.KeyguardLock mKeyguardLock = null;
private Button mSnoozeButton;
- private boolean mSnoozed;
+ private int mState = UNKNOWN;
private AlarmKlaxon mKlaxon;
private int mAlarmId;
mKlaxon.setKillerCallback(new AlarmKlaxon.KillerCallback() {
public void onKilled() {
if (Log.LOGV) Log.v("onKilled()");
- TextView silenced = (TextView)findViewById(R.id.silencedText);
- silenced.setText(
- getString(R.string.alarm_alert_alert_silenced,
- AlarmKlaxon.ALARM_TIMEOUT_SECONDS / 60));
- silenced.setVisibility(View.VISIBLE);
+ updateSilencedText();
/* don't allow snooze */
mSnoozeButton.setEnabled(false);
- mKlaxon.stop(AlarmAlert.this, mSnoozed);
- releaseLocks();
+ // Dismiss the alarm but mark the state as killed so if the
+ // config changes, we show the silenced message and disable
+ // snooze.
+ dismiss();
+ mState = KILLED;
}
});
- mKlaxon.restoreInstanceState(this, icicle);
-
updateLayout();
}
+ private void updateSilencedText() {
+ TextView silenced = (TextView) findViewById(R.id.silencedText);
+ silenced.setText(getString(R.string.alarm_alert_alert_silenced,
+ AlarmKlaxon.ALARM_TIMEOUT_SECONDS / 60));
+ silenced.setVisibility(View.VISIBLE);
+ }
+
private void updateLayout() {
setContentView(R.layout.alarm_alert);
manager. */
mSnoozeButton = (Button) findViewById(R.id.snooze);
mSnoozeButton.requestFocus();
- mSnoozeButton.setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- // If next alarm is set for sooner than the snooze interval,
- // don't snooze: instead toast user that snooze will not be set
- final long snoozeTarget = System.currentTimeMillis()
- + (1000 * 60 * SNOOZE_MINUTES);
- final long nextAlarm =
- Alarms.calculateNextAlert(AlarmAlert.this).getAlert();
- String displayTime = null;
- if (nextAlarm < snoozeTarget) {
- Calendar c = Calendar.getInstance();
- c.setTimeInMillis(nextAlarm);
- displayTime = getString(R.string.alarm_alert_snooze_set,
- Alarms.formatTime(AlarmAlert.this, c));
- } else {
- Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarmId,
- snoozeTarget);
- Alarms.setNextAlert(AlarmAlert.this);
- mSnoozed = true;
- displayTime = getString(R.string.alarm_alert_snooze_set,
- SNOOZE_MINUTES);
+ // If this was a configuration change, keep the silenced text if the
+ // alarm was killed.
+ if (mState == KILLED) {
+ updateSilencedText();
+ mSnoozeButton.setEnabled(false);
+ } else {
+ mSnoozeButton.setOnClickListener(new Button.OnClickListener() {
+ public void onClick(View v) {
+ snooze();
+ finish();
}
- // Display the snooze minutes in a toast.
- Toast.makeText(AlarmAlert.this, displayTime,
- Toast.LENGTH_LONG).show();
- mKlaxon.stop(AlarmAlert.this, mSnoozed);
- releaseLocks();
- finish();
- }
- });
+ });
+ }
/* dismiss button: close notification */
findViewById(R.id.dismiss).setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
- mKlaxon.stop(AlarmAlert.this, mSnoozed);
- releaseLocks();
+ dismiss();
finish();
}
});
}
+ // Attempt to snooze this alert.
+ private void snooze() {
+ if (mState != UNKNOWN) {
+ return;
+ }
+ // If the next alarm is set for sooner than the snooze interval, don't
+ // snooze. Instead, toast the user that the snooze will not be set.
+ final long snoozeTime = System.currentTimeMillis()
+ + (1000 * 60 * SNOOZE_MINUTES);
+ final long nextAlarm =
+ Alarms.calculateNextAlert(AlarmAlert.this).getAlert();
+ String displayTime = null;
+ if (nextAlarm < snoozeTime) {
+ final Calendar c = Calendar.getInstance();
+ c.setTimeInMillis(nextAlarm);
+ displayTime = getString(R.string.alarm_alert_snooze_not_set,
+ Alarms.formatTime(AlarmAlert.this, c));
+ mState = DISMISS;
+ } else {
+ Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarmId, snoozeTime);
+ Alarms.setNextAlert(AlarmAlert.this);
+ displayTime = getString(R.string.alarm_alert_snooze_set,
+ SNOOZE_MINUTES);
+ mState = SNOOZE;
+ }
+ // Intentionally log the snooze time for debugging.
+ Log.v(displayTime);
+ // Display the snooze minutes in a toast.
+ Toast.makeText(AlarmAlert.this, displayTime, Toast.LENGTH_LONG).show();
+ mKlaxon.stop(this, mState == SNOOZE);
+ releaseLocks();
+ }
+
+ // Dismiss the alarm.
+ private void dismiss() {
+ if (mState != UNKNOWN) {
+ return;
+ }
+ mState = DISMISS;
+ mKlaxon.stop(this, false);
+ releaseLocks();
+ }
+
/**
* this is called when a second alarm is triggered while a
* previous alert window is still active.
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (Log.LOGV) Log.v("AlarmAlert.OnNewIntent()");
+ mState = UNKNOWN;
mSnoozeButton.setEnabled(true);
disableKeyguard();
protected void onStop() {
super.onStop();
if (Log.LOGV) Log.v("AlarmAlert.onStop()");
- mKlaxon.stop(this, mSnoozed);
- releaseLocks();
- }
-
- @Override
- protected void onSaveInstanceState(Bundle icicle) {
- mKlaxon.onSaveInstanceState(icicle);
+ // As a last resort, try to snooze if this activity is stopped.
+ snooze();
}
@Override
updateLayout();
}
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ // Do this on key down to handle a few of the system keys. Only handle
+ // the snooze and dismiss this alert if the state is unknown.
+ boolean up = event.getAction() == KeyEvent.ACTION_UP;
+ boolean dismiss = false;
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_DPAD_UP:
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ case KeyEvent.KEYCODE_DPAD_CENTER:
+ // Ignore ENDCALL because we do not receive the event if the screen
+ // is on. However, we do receive the key up for ENDCALL if the
+ // screen was off.
+ case KeyEvent.KEYCODE_ENDCALL:
+ break;
+ // Volume keys dismiss the alarm
+ case KeyEvent.KEYCODE_VOLUME_UP:
+ case KeyEvent.KEYCODE_VOLUME_DOWN:
+ dismiss = true;
+ // All other keys will snooze the alarm
+ default:
+ // Check for UNKNOWN here so that we intercept both key events
+ // and prevent the volume keys from triggering their default
+ // behavior.
+ if (mState == UNKNOWN && up) {
+ if (dismiss) {
+ dismiss();
+ } else {
+ snooze();
+ }
+ finish();
+ }
+ return true;
+ }
+ return super.dispatchKeyEvent(event);
+ }
+
private synchronized void enableKeyguard() {
if (mKeyguardLock != null) {
mKeyguardLock.reenableKeyguard();
/** Play alarm up to 10 minutes before silencing */
final static int ALARM_TIMEOUT_SECONDS = 10 * 60;
- final static String ICICLE_PLAYING = "IciclePlaying";
- final static String ICICLE_ALARMID = "IcicleAlarmId";
private static long[] sVibratePattern = new long[] { 500, 500 };
mKillerCallback = killerCallback;
}
-
- /**
- * Called by the AlarmAlert activity on configuration change
- */
- protected void onSaveInstanceState(Bundle icicle) {
- icicle.putBoolean(ICICLE_PLAYING, mPlaying);
- icicle.putInt(ICICLE_ALARMID, mAlarmId);
- }
-
- /**
- * Restores alarm playback state on configuration change
- */
- void restoreInstanceState(Context context, Bundle icicle) {
- if (!mPlaying &&
- icicle != null &&
- icicle.containsKey(ICICLE_PLAYING) &&
- icicle.getBoolean(ICICLE_PLAYING)) {
- play(context, icicle.getInt(ICICLE_ALARMID));
- }
- }
-
/**
* Kills alarm audio after ALARM_TIMEOUT_SECONDS, so the alarm
* won't run all day.