]> www.average.org Git - WhereAmI.git/blob - src/org/average/whereami/WhereAmI.java
20812aa04ecabf6fcedc3d8f0ad87bc22307de7e
[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, tvt, tvd;
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         tv = (TextView)findViewById(R.id.location);
36         tvt = (TextView)findViewById(R.id.time);
37         tvd = (TextView)findViewById(R.id.date);
38         Log.v("WhereAmI", "created UI, about to start update task");
39         updateClock.run();
40         updateCal.run();
41         updateInfo.run();
42         Log.v("WhereAmI", "created UI, update task created");
43     }
44
45     private Handler mHandler = new Handler();
46
47     private Runnable updateClock = new Runnable () {
48         public void run() {
49             long now = System.currentTimeMillis();
50             Time tm = new Time();
51             tm.set(now);
52             tvt.setText(tm.format("%H:%M"));
53             tm.set(now + 60000);
54             tm.second=0;
55             long next = tm.toMillis(false);
56             mHandler.postDelayed(this, next-now+1);
57         }
58     };
59
60     private Runnable updateCal = new Runnable () {
61         public void run() {
62             long now = System.currentTimeMillis();
63             Time tm = new Time();
64             tm.set(now);
65             tvd.setText(
66                        wday[tm.weekDay] +
67                        tm.format("\n%d ") +
68                        month[tm.month] +
69                        tm.format(" %Y"));
70             tm.set(now + 86400000);
71             tm.hour=0;
72             tm.minute=0;
73             tm.second=0;
74             long next = tm.toMillis(false);
75             mHandler.postDelayed(this, next-now+1);
76         }
77     };
78
79     private Runnable updateInfo = new Runnable () {
80         public void run() {
81             Log.v("updateInfo", "starting");
82             tv.setText(R.string.updating);
83             new TimedUpdateTask().execute(5); // for delayed execution
84             mHandler.postDelayed(this, 10000);
85         }
86     };
87
88     private class TimedUpdateTask extends AsyncTask<Integer, Void, String> {
89         @Override
90         protected String doInBackground(Integer... howlong) {
91             Log.v("TimedUpdateTask", "starting");
92             try {
93                 Thread.sleep(1000 * howlong[0]);
94             } catch (InterruptedException e) {
95                 Log.e("TimedUpdateTask", "sleep interrupted");
96             }
97             Log.v("TimedUpdateTask", "about to return");
98             return (Integer.toString(howlong[0]) + " seconds passed");
99         }
100     
101         @Override
102         protected void onPostExecute(String str) {
103             Log.v("TimedUpdateTask", "callback executing");
104             tv.setText(R.string.failure);
105         }
106     }
107 }