OSDN Git Service

auto import from //branches/cupcake_rel/...@140373
[android-x86/packages-apps-DeskClock.git] / src / com / android / alarmclock / AlarmAlert.java
index eefd5bb..6a9a718 100644 (file)
@@ -48,23 +48,27 @@ 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;
 
     private AlarmKlaxon mKlaxon;
     private int mAlarmId;
+    private String mLabel;
 
     @Override
     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;
@@ -81,7 +85,14 @@ public class AlarmAlert extends Activity {
 
         mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
 
-        mAlarmId = getIntent().getIntExtra(Alarms.ID, -1);
+        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);
 
         /* allow next alarm to trigger while this activity is
            active */
@@ -108,6 +119,14 @@ public class AlarmAlert extends Activity {
         updateLayout();
     }
 
+    private void setTitleFromIntent(Intent i) {
+        mLabel = i.getStringExtra(Alarms.LABEL);
+        if (mLabel == null || mLabel.length() == 0) {
+            mLabel = getString(R.string.default_label);
+        }
+        setTitle(mLabel);
+    }
+
     private void updateSilencedText() {
         TextView silenced = (TextView) findViewById(R.id.silencedText);
         silenced.setText(getString(R.string.alarm_alert_alert_silenced,
@@ -181,7 +200,8 @@ public class AlarmAlert extends Activity {
                     Alarms.formatTime(AlarmAlert.this, c));
             mState = DISMISS;
         } else {
-            Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarmId, snoozeTime);
+            Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarmId, snoozeTime,
+                    mLabel);
             Alarms.setNextAlert(AlarmAlert.this);
             displayTime = getString(R.string.alarm_alert_snooze_set,
                     SNOOZE_MINUTES);
@@ -218,6 +238,10 @@ 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 */
         TextView silenced = (TextView)findViewById(R.id.silencedText);