OSDN Git Service

auto import from //branches/cupcake_rel/...@140373
authorThe Android Open Source Project <initial-contribution@android.com>
Thu, 19 Mar 2009 00:39:47 +0000 (17:39 -0700)
committerThe Android Open Source Project <initial-contribution@android.com>
Thu, 19 Mar 2009 00:39:47 +0000 (17:39 -0700)
17 files changed:
res/values-cs/strings.xml
res/values-de/strings.xml
res/values-es/strings.xml
res/values-fr/strings.xml
res/values-it/strings.xml
res/values-ja/strings.xml
res/values-ko/strings.xml
res/values-nb/strings.xml
res/values-nl/strings.xml
res/values-pl/strings.xml
res/values-ru/strings.xml
res/values-zh-rCN/strings.xml
res/values-zh-rTW/strings.xml
src/com/android/alarmclock/AlarmAlert.java
src/com/android/alarmclock/AlarmAlertWakeLock.java
src/com/android/alarmclock/AlarmKlaxon.java
src/com/android/alarmclock/AlarmReceiver.java

index e0a1063..3988a8c 100644 (file)
     <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>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Nastavit upozornění"</string>
     <string name="enable">"Zapnout upozornění"</string>
     <string name="alarm_vibrate">"Vibrace"</string>
index ee9823c..0d6602d 100644 (file)
     <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>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Wecker einstellen"</string>
     <string name="enable">"Wecker aktivieren"</string>
     <string name="alarm_vibrate">"Vibrieren"</string>
index be6dd6a..d5d27d1 100644 (file)
     <string name="delete_alarm_confirm">"Esta alarma se eliminará."</string>
     <string name="show_clock">"Mostrar reloj"</string>
     <string name="hide_clock">"Ocultar reloj"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Establecer alarma"</string>
     <string name="enable">"Activar alarma"</string>
     <string name="alarm_vibrate">"Vibración"</string>
index 929173b..a8a317e 100644 (file)
     <string name="delete_alarm_confirm">"Cette alarme va être supprimée."</string>
     <string name="show_clock">"Afficher l\'horloge"</string>
     <string name="hide_clock">"Masquer l\'horloge"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Régler l\'alarme"</string>
     <string name="enable">"Activer l\'alarme"</string>
     <string name="alarm_vibrate">"Vibreur"</string>
index e5a5787..21cfd8b 100644 (file)
     <string name="delete_alarm_confirm">"Questa sveglia verrà eliminata."</string>
     <string name="show_clock">"Mostra orologio"</string>
     <string name="hide_clock">"Nascondi orologio"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Imposta allarme"</string>
     <string name="enable">"Attiva allarme"</string>
     <string name="alarm_vibrate">"Vibrazione"</string>
index 72149bb..1d4c8f4 100644 (file)
     <string name="delete_alarm_confirm">"このアラームを削除します。"</string>
     <string name="show_clock">"時計を表示"</string>
     <string name="hide_clock">"時計を隠す"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"アラームの設定"</string>
     <string name="enable">"アラームをONにする"</string>
     <string name="alarm_vibrate">"バイブレーション"</string>
index a4ecc99..1176a30 100644 (file)
     <string name="delete_alarm_confirm">"알람이 삭제됩니다."</string>
     <string name="show_clock">"시계 표시"</string>
     <string name="hide_clock">"시계 숨기기"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"알람 설정"</string>
     <string name="enable">"알람 켜기"</string>
     <string name="alarm_vibrate">"진동"</string>
index 46f1ad7..f3a9309 100644 (file)
     <string name="delete_alarm_confirm">"Denne alarmen vil bli slettet."</string>
     <string name="show_clock">"Vis klokke"</string>
     <string name="hide_clock">"Fjern klokke"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Sett alarm"</string>
     <string name="enable">"Slå på alarm"</string>
     <string name="alarm_vibrate">"Vibrer"</string>
index 049a921..fe77373 100644 (file)
     <string name="delete_alarm_confirm">"Dit alarm wordt verwijderd."</string>
     <string name="show_clock">"Klok weergeven"</string>
     <string name="hide_clock">"Klok verbergen"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Alarm instellen"</string>
     <string name="enable">"Alarm inschakelen"</string>
     <string name="alarm_vibrate">"Trillen"</string>
index b441993..1067760 100644 (file)
     <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>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Ustaw alarm"</string>
     <string name="enable">"Włącz alarm"</string>
     <string name="alarm_vibrate">"Wibracje"</string>
index 8b93a91..e799eae 100644 (file)
     <string name="delete_alarm_confirm">"Сигнал будет удален."</string>
     <string name="show_clock">"Показать часы"</string>
     <string name="hide_clock">"Скрыть часы"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"Установить будильник"</string>
     <string name="enable">"Включить будильник"</string>
     <string name="alarm_vibrate">"Вибрация"</string>
index a84de73..38aa19d 100644 (file)
     <string name="delete_alarm_confirm">"将会删除此警报。"</string>
     <string name="show_clock">"显示时钟"</string>
     <string name="hide_clock">"隐藏时钟"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"设置闹钟"</string>
     <string name="enable">"开启闹钟"</string>
     <string name="alarm_vibrate">"振动"</string>
index 04b08fe..330eac4 100644 (file)
     <string name="delete_alarm_confirm">"將刪除此鬧鐘。"</string>
     <string name="show_clock">"顯示時鐘"</string>
     <string name="hide_clock">"隱藏時鐘"</string>
+    <!-- no translation found for label (162189613902857319) -->
+    <skip />
+    <!-- no translation found for default_label (5590025289805630372) -->
+    <skip />
     <string name="set_alarm">"設定鬧鐘"</string>
     <string name="enable">"開啟鬧鐘"</string>
     <string name="alarm_vibrate">"震動"</string>
index 2464c96..6a9a718 100644 (file)
@@ -48,7 +48,7 @@ public class AlarmAlert extends Activity {
     private static final int KILLED = 3;
 
     private KeyguardManager mKeyguardManager;
-    private KeyguardManager.KeyguardLock mKeyguardLock = null;
+    private KeyguardManager.KeyguardLock mKeyguardLock;
     private Button mSnoozeButton;
     private int mState = UNKNOWN;
 
@@ -60,12 +60,15 @@ public class AlarmAlert extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
+        // Maintain a lock during the playback of the alarm. This lock may have
+        // already been acquired in AlarmReceiver. If the process was killed,
+        // the global wake lock is gone. Acquire again just to be sure.
+        AlarmAlertWakeLock.acquire(this);
+
         /* FIXME Intentionally verbose: always log this until we've
            fully debugged the app failing to start up */
         Log.v("AlarmAlert.onCreate()");
 
-        mKlaxon = AlarmKlaxon.getInstance();
-
         // Popup alert over black screen
         WindowManager.LayoutParams lp = getWindow().getAttributes();
         lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -85,6 +88,9 @@ public class AlarmAlert extends Activity {
         Intent i = getIntent();
         mAlarmId = i.getIntExtra(Alarms.ID, -1);
 
+        mKlaxon = new AlarmKlaxon();
+        mKlaxon.postPlay(this, mAlarmId);
+
         /* Set the title from the passed in label */
         setTitleFromIntent(i);
 
@@ -232,6 +238,9 @@ public class AlarmAlert extends Activity {
         disableKeyguard();
 
         mAlarmId = intent.getIntExtra(Alarms.ID, -1);
+        // Play the new alarm sound.
+        mKlaxon.postPlay(this, mAlarmId);
+
         setTitleFromIntent(intent);
 
         /* unset silenced message */
index 083996e..10e5b54 100644 (file)
@@ -28,11 +28,13 @@ class AlarmAlertWakeLock {
     private static PowerManager.WakeLock sWakeLock;
 
     static void acquire(Context context) {
+        Log.v("Acquiring wake lock");
         if (sWakeLock != null) {
             sWakeLock.release();
         }
 
-        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        PowerManager pm =
+                (PowerManager) context.getSystemService(Context.POWER_SERVICE);
 
         sWakeLock = pm.newWakeLock(
                 PowerManager.FULL_WAKE_LOCK |
@@ -42,7 +44,7 @@ class AlarmAlertWakeLock {
     }
 
     static void release() {
-        if (Log.LOGV) Log.v("AlarmAlertWakeLock release");
+        Log.v("Releasing wake lock");
         if (sWakeLock != null) {
             sWakeLock.release();
             sWakeLock = null;
index 5773acf..e75eb80 100644 (file)
@@ -26,6 +26,7 @@ import android.media.MediaPlayer.OnErrorListener;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Message;
 import android.os.Vibrator;
 import android.telephony.TelephonyManager;
 
@@ -42,30 +43,39 @@ class AlarmKlaxon implements Alarms.AlarmSettings {
     /** Play alarm up to 10 minutes before silencing */
     final static int ALARM_TIMEOUT_SECONDS = 10 * 60;
 
-    private static long[] sVibratePattern = new long[] { 500, 500 };
-
-    private static AlarmKlaxon sInstance;
+    private static final long[] sVibratePattern = new long[] { 500, 500 };
 
     private int mAlarmId;
     private String mAlert;
     private Alarms.DaysOfWeek mDaysOfWeek;
     private boolean mVibrate;
-
     private boolean mPlaying = false;
-
     private Vibrator mVibrator;
     private MediaPlayer mMediaPlayer;
-
-    private Handler mTimeout;
     private KillerCallback mKillerCallback;
 
+    // Internal messages
+    private static final int KILLER = 1000;
+    private static final int PLAY   = 1001;
+    private Handler mHandler = new Handler() {
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case KILLER:
+                    if (Log.LOGV) {
+                        Log.v("*********** Alarm killer triggered ***********");
+                    }
+                    if (mKillerCallback != null) {
+                        mKillerCallback.onKilled();
+                    }
+                    break;
+                case PLAY:
+                    play((Context) msg.obj, msg.arg1);
+                    break;
+            }
+        }
+    };
 
-    static synchronized AlarmKlaxon getInstance() {
-        if (sInstance == null) sInstance = new AlarmKlaxon();
-        return sInstance;
-    }
-
-    private AlarmKlaxon() {
+    AlarmKlaxon() {
         mVibrator = new Vibrator();
     }
 
@@ -80,10 +90,14 @@ class AlarmKlaxon implements Alarms.AlarmSettings {
         mVibrate = vibrate;
     }
 
-    // Volume suggested by media team for in-call alarms. 
+    public void postPlay(final Context context, final int alarmId) {
+        mHandler.sendMessage(mHandler.obtainMessage(PLAY, alarmId, 0, context));
+    }
+
+    // Volume suggested by media team for in-call alarms.
     private static final float IN_CALL_VOLUME = 0.125f;
 
-    synchronized void play(Context context, int alarmId) {
+    private void play(Context context, int alarmId) {
         ContentResolver contentResolver = context.getContentResolver();
 
         if (mPlaying) stop(context, false);
@@ -168,7 +182,7 @@ class AlarmKlaxon implements Alarms.AlarmSettings {
      * Stops alarm audio and disables alarm if it not snoozed and not
      * repeating
      */
-    synchronized void stop(Context context, boolean snoozed) {
+    public void stop(Context context, boolean snoozed) {
         if (Log.LOGV) Log.v("AlarmKlaxon.stop() " + mAlarmId);
         if (mPlaying) {
             mPlaying = false;
@@ -195,7 +209,7 @@ class AlarmKlaxon implements Alarms.AlarmSettings {
      * This callback called when alarm killer times out unattended
      * alarm
      */
-    void setKillerCallback(KillerCallback killerCallback) {
+    public void setKillerCallback(KillerCallback killerCallback) {
         mKillerCallback = killerCallback;
     }
 
@@ -207,20 +221,12 @@ class AlarmKlaxon implements Alarms.AlarmSettings {
      * popped, so the user will know that the alarm tripped.
      */
     private void enableKiller() {
-        mTimeout = new Handler();
-        mTimeout.postDelayed(new Runnable() {
-                public void run() {
-                    if (Log.LOGV) Log.v("*********** Alarm killer triggered *************");
-                    if (mKillerCallback != null) mKillerCallback.onKilled();
-                }
-            }, 1000 * ALARM_TIMEOUT_SECONDS);
+        mHandler.sendMessageDelayed(mHandler.obtainMessage(KILLER),
+                1000 * ALARM_TIMEOUT_SECONDS);
     }
 
     private void disableKiller() {
-        if (mTimeout != null) {
-            mTimeout.removeCallbacksAndMessages(null);
-            mTimeout = null;
-        }
+        mHandler.removeMessages(KILLER);
     }
 
 
index 1137952..4982f95 100644 (file)
@@ -47,13 +47,10 @@ public class AlarmReceiver extends BroadcastReceiver {
             return;
         }
 
-        /* wake device */
+        /* Wake the device and stay awake until the AlarmAlert intent is
+         * handled. */
         AlarmAlertWakeLock.acquire(context);
 
-        /* start audio/vibe */
-        AlarmKlaxon klaxon = AlarmKlaxon.getInstance();
-        klaxon.play(context, id);
-
         /* Close dialogs and window shade */
         Intent i = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
         context.sendBroadcast(i);