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 TextView tv, tvt, tvd;
19 private Resources res;
20 private String[] month;
21 private String[] wday;
23 /** Called when the activity is first created. */
25 public void onCreate(Bundle savedInstanceState)
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);
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");
42 Log.v("WhereAmI", "created UI, update task created");
45 private Handler mHandler = new Handler();
47 private Runnable updateClock = new Runnable () {
49 long now = System.currentTimeMillis();
52 tvt.setText(tm.format("%H:%M"));
55 long next = tm.toMillis(false);
56 mHandler.postDelayed(this, next-now+1);
60 private Runnable updateCal = new Runnable () {
62 long now = System.currentTimeMillis();
70 tm.set(now + 86400000);
74 long next = tm.toMillis(false);
75 mHandler.postDelayed(this, next-now+1);
79 private Runnable updateInfo = new Runnable () {
81 Log.v("updateInfo", "starting");
82 tv.setText(R.string.updating);
83 new TimedUpdateTask().execute(5); // for delayed execution
84 mHandler.postDelayed(this, 10000);
88 private class TimedUpdateTask extends AsyncTask<Integer, Void, String> {
90 protected String doInBackground(Integer... howlong) {
91 Log.v("TimedUpdateTask", "starting");
93 Thread.sleep(1000 * howlong[0]);
94 } catch (InterruptedException e) {
95 Log.e("TimedUpdateTask", "sleep interrupted");
97 Log.v("TimedUpdateTask", "about to return");
98 return (Integer.toString(howlong[0]) + " seconds passed");
102 protected void onPostExecute(String str) {
103 Log.v("TimedUpdateTask", "callback executing");
104 tv.setText(R.string.failure);