1 package org.average.whereami;
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;
16 public class WhereAmI extends Activity
18 private class UpdateTarget {
20 public Integer updater; // will be the function/object
21 public UpdateTarget(TextView tv, Integer updater) {
23 this.updater = updater;
26 private UpdateTarget[] ut;
28 private TextView tvt, tvd, tvs;
29 private Resources res;
30 private String[] month;
31 private String[] wday;
33 /** Called when the activity is first created. */
35 public void onCreate(Bundle savedInstanceState)
37 super.onCreate(savedInstanceState);
38 requestWindowFeature(Window.FEATURE_NO_TITLE);
39 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
40 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
41 setContentView(R.layout.main);
43 month = res.getStringArray(R.array.month);
44 wday = res.getStringArray(R.array.wday);
45 tvt = (TextView)findViewById(R.id.time);
46 tvd = (TextView)findViewById(R.id.date);
47 tvs = (TextView)findViewById(R.id.timestamp);
48 ut = new UpdateTarget[] {
49 new UpdateTarget((TextView)findViewById(R.id.location), 1),
50 new UpdateTarget((TextView)findViewById(R.id.phonecall), 2)
52 Log.v("WhereAmI", "created UI, about to start update task");
56 Log.v("WhereAmI", "created UI, update task created");
59 private Handler mHandler = new Handler();
61 private Runnable updateClock = new Runnable () {
63 long now = System.currentTimeMillis();
66 tvt.setText(tm.format("%H:%M"));
69 long next = tm.toMillis(false);
70 mHandler.postDelayed(this, next-now+1);
74 private Runnable updateCal = new Runnable () {
76 long now = System.currentTimeMillis();
84 tm.set(now + 86400000);
88 long next = tm.toMillis(false);
89 mHandler.postDelayed(this, next-now+1);
93 private Runnable updateInfo = new Runnable () {
95 Log.v("updateInfo", "starting");
96 for (int i = 0; i < ut.length; i++) {
97 ut[i].tv.setText(R.string.updating);
98 new TimedUpdateTask().execute(ut[i]);
100 mHandler.postDelayed(this, 10000);
104 private class TimedUpdateTask extends AsyncTask<UpdateTarget, Void, String> {
105 private UpdateTarget ut;
107 protected String doInBackground(UpdateTarget... whereto) {
108 Log.v("TimedUpdateTask", "starting");
110 SystemClock.sleep(5000); // real job do be done here
111 Log.v("TimedUpdateTask", "about to return");
112 return "5 seconds passed";
116 protected void onPostExecute(String str) {
117 Log.v("TimedUpdateTask", "callback executing");
119 Time tm = new Time();
121 tvs.setText(R.string.lasttry);
122 tvs.append(tm.format(" %d/%m/%Y %H:%M:%S"));