formatting datetime
[WhereAmI.git] / src / org / average / whereami / WhereAmI.java
1 package org.average.whereami;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.os.AsyncTask;
6 import android.os.Handler;
7 import android.os.SystemClock;
8 import android.content.res.Resources;
9 import android.text.format.Time;
10 import android.util.Log;
11 import android.view.View;
12 import android.view.Window;
13 import android.view.WindowManager;
14 import android.widget.TextView;
15
16 public class WhereAmI extends Activity
17 {
18     private TextView tv;
19     private Resources res;
20     private String[] month;
21     private String[] wday;
22
23     /** Called when the activity is first created. */
24     @Override
25     public void onCreate(Bundle savedInstanceState)
26     {
27         super.onCreate(savedInstanceState);
28         requestWindowFeature(Window.FEATURE_NO_TITLE);
29         getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
30         getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
31         setContentView(R.layout.main);
32         res = getResources();
33         month = res.getStringArray(R.array.month);
34         wday = res.getStringArray(R.array.wday);
35         Log.v("WhereAmI","month length " + Integer.toString(month.length));
36         Log.v("WhereAmI","wday length " + Integer.toString(wday.length));
37         tv = (TextView)findViewById(R.id.tv);
38         tv.setText(R.string.greet);
39         Log.v("WhereAmI", "created UI, about to start update task");
40         mHandler.postDelayed(updateClock, 1000);
41         Log.v("WhereAmI", "created UI, update task created");
42     }
43
44     private Handler mHandler = new Handler();
45
46     private Runnable updateClock = new Runnable () {
47         public void run() {
48             long now = System.currentTimeMillis();
49             Time tm = new Time();
50             tm.set(now);
51             Log.v("WhereAmI", "weekday is" + Integer.toString(tm.weekDay));
52             Log.v("WhereAmI", "month is" + Integer.toString(tm.month));
53             tv.setText(
54                        wday[tm.weekDay] +
55                        tm.format(", %d ") +
56                        month[tm.month] +
57                        tm.format(" %Y") +
58                        tm.format(", %H:%M%:%S"));
59             tm.second++;
60             long next = tm.toMillis(false);
61             tv.append("\n" + Long.toString(next-now+1));
62             
63             // new TimedUpdateTask().execute(5); // for delayed execution
64             mHandler.postDelayed(this, next-now+1);
65         }
66     };
67
68     private class TimedUpdateTask extends AsyncTask<Integer, Void, String> {
69         @Override
70         protected String doInBackground(Integer... howlong) {
71             Log.v("TimedUpdateTask", "starting");
72             try {
73                 Thread.sleep(1000 * howlong[0]);
74             } catch (InterruptedException e) {
75                 Log.e("TimedUpdateTask", "sleep interrupted");
76             }
77             Log.v("TimedUpdateTask", "about to return");
78             return (Integer.toString(howlong[0]) + " seconds passed");
79         }
80     
81         @Override
82         protected void onPostExecute(String str) {
83             Log.v("TimedUpdateTask", "callback executing");
84             tv.setText(str);
85         }
86     }
87 }