import twitter4j.AsyncTwitter;
import twitter4j.AsyncTwitterFactory;
import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
final TrainTwitterAdapter listener = new TrainTwitterAdapter(this);
twitter.addListener(listener);
+ Button button1 = (Button) this.findViewById(R.id.button01);
+ button1.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+
+ }});
+
Button button2 = (Button) this.findViewById(R.id.button02);
button2.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
// trainDelayedService.stopSelf(); // \83T\81[\83r\83X\82Í\95K\97v\82È\82¢\82Ì\82Å\8fI\97¹\82³\82¹\82é\81B
}
-// private void getColumnData(Cursor cur) {
-// if (cur.moveToFirst()) {
-// do {
-// int val = cur.getInt(0);
-// Debug.d(this, "VAL=" + val);
-// } while (cur.moveToNext());
-//
-// }
-// }
+ // private void getColumnData(Cursor cur) {
+ // if (cur.moveToFirst()) {
+ // do {
+ // int val = cur.getInt(0);
+ // Debug.d(this, "VAL=" + val);
+ // } while (cur.moveToNext());
+ //
+ // }
+ // }
}
\ No newline at end of file
--- /dev/null
+package com.td.service;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Calendar;\r
+import java.util.Collections;\r
+import java.util.Comparator;\r
+import java.util.Date;\r
+import java.util.List;\r
+\r
+import com.td.db.Monitor;\r
+import com.td.db.MonitorDao;\r
+import com.td.utility.DateUtil;\r
+\r
+public class Scheduler {\r
+ private int N = 7;//TODO\r
+ private static Calendar cal = Calendar.getInstance();\r
+ private List<Term>[] list = null;\r
+ private Comparator<Term> comp = new Comparator<Term>(){\r
+ public int compare(Term t1, Term t2) {\r
+ return t1.getFrom() - t2.getFrom();\r
+ }\r
+ };\r
+ \r
+ public Scheduler(){\r
+\r
+ }\r
+ \r
+ public void calcSchedule(){\r
+ \r
+ }\r
+\r
+ public long nextSchedule(long now){\r
+ long next = now + DateUtil.LEN * 1000;\r
+ \r
+ cal.setTimeInMillis(next);\r
+ Date date = cal.getTime();\r
+ int h = date.getHours();\r
+ int m = date.getMinutes();\r
+ int hm = DateUtil.getHm(h, m);\r
+ int w = date.getDay();\r
+ \r
+ for (int i = 0; i < N; i++){\r
+ int n = (w + i) % N;\r
+ List<Term> l = list[n];\r
+ int j = isContain(l, hm);\r
+ if (j == 0){\r
+ return next;\r
+ }\r
+ if (j > 0){\r
+ Term t = l.get(j - 1);\r
+ // \8d¡\93ú(next)\82©\82ç\81Ai\93ú\8cã\82Ì\81Afrom\8e\9e\r
+ return DateUtil.getTime(date, i, t.getFrom());\r
+ }\r
+ if (i > 0){\r
+ // \91¼\82Ì\97j\93ú\82Ì\8fê\8d\87\r
+ if (l.size() > 0){\r
+ Term t = l.get(0);\r
+ // \8d¡\93ú(next)\82©\82ç\81Ai\93ú\8cã\82Ì\81Afrom\8e\9e\r
+ return DateUtil.getTime(date, i, t.getFrom());\r
+ }\r
+ \r
+ }\r
+ }\r
+ return -1;\r
+ }\r
+\r
+ public int isContain(List<Term> l, int hm) {\r
+ int from;\r
+ int to;\r
+ \r
+ for (int i = 0; i < l.size(); i++){\r
+ Term t = l.get(i);\r
+ from = t.getFrom();\r
+ to = t.getTo();\r
+ if (from <= hm && hm <= to){\r
+ return 0;\r
+ }\r
+ if (to < hm){\r
+ return i + 1;\r
+ }\r
+ } \r
+ return -1;\r
+ }\r
+\r
+ public void makeSchedule(){\r
+ if (list != null){\r
+ return;\r
+ }\r
+\r
+ MonitorDao dao = MonitorDao.getInstance();\r
+ List<Monitor> mList = dao.search();\r
+ makeSchedule(mList);\r
+ }\r
+ \r
+ public void makeSchedule(List<Monitor> mList){\r
+ clearSchedule();\r
+ \r
+ for (Monitor monitor : mList){\r
+ add(list, monitor);\r
+ } \r
+ }\r
+ \r
+ private void clearSchedule(){\r
+ list = new List[N];\r
+ for (int i = 0; i < list.length; i++){\r
+ list[i] = new ArrayList<Term>();\r
+ }\r
+ }\r
+ \r
+ public void add(List<Term>[] ll, Monitor monitor){\r
+ Term term = new Term(monitor.getFrom(), monitor.getTo());\r
+ for (int i = 0; i < N; i++){\r
+ if (monitor.getWeek(i)){\r
+ add(ll[i], term);\r
+ }\r
+ }\r
+ }\r
+ \r
+ public void add(List<Term> l, Term term){\r
+ int i = 0;\r
+ while (i < l.size()){\r
+ Term t = l.get(i);\r
+ if (isContain(t, term)){\r
+ term = add(t, term);\r
+ l.remove(i);\r
+ continue;\r
+ }\r
+ i++;\r
+ }\r
+ l.add(term);\r
+ Collections.sort(l, comp);\r
+ }\r
+ \r
+ public boolean isContain(Term t1, Term t2){\r
+ int from1 = t1.getFrom();\r
+ int to1 = t1.getTo();\r
+ int from2 = t2.getFrom();\r
+ int to2 = t2.getTo();\r
+\r
+ if (from1 <= from2 && from2 <= to1){\r
+ return true;\r
+ }\r
+ if (from1 <= to2 && to2 <= to1){\r
+ return true;\r
+ }\r
+ if (from2 <= from1 && from1 <= to2){\r
+ return true;\r
+ }\r
+ if (from2 <= to1 && to1 <= to2){\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+\r
+ public Term add(Term t1, Term t2){\r
+ int from1 = t1.getFrom();\r
+ int to1 = t1.getTo();\r
+ int from2 = t2.getFrom();\r
+ int to2 = t2.getTo();\r
+ \r
+ int from = (from1 < from2)? from1 : from2;\r
+ int to = (to1 < to2)? to1 : to2;\r
+ return new Term(from, to);\r
+ }\r
+}\r
--- /dev/null
+package com.td.service;\r
+\r
+public class Term {\r
+ private int from;\r
+ private int to;\r
+ \r
+ public Term(int from, int to){\r
+ this.from = from;\r
+ this.to = to;\r
+ }\r
+ \r
+ public int getFrom() {\r
+ return from;\r
+ }\r
+ public void setFrom(int from) {\r
+ this.from = from;\r
+ }\r
+ public int getTo() {\r
+ return to;\r
+ }\r
+ public void setTo(int to) {\r
+ this.to = to;\r
+ }\r
+}\r
import twitter4j.AsyncTwitterFactory;\r
import twitter4j.Query;\r
import android.app.AlarmManager;\r
+import android.app.Notification;\r
+import android.app.NotificationManager;\r
import android.app.PendingIntent;\r
import android.app.Service;\r
import android.content.Context;\r
import android.os.Binder;\r
import android.os.IBinder;\r
\r
+import com.td.R;\r
+import com.td.TrainDelayedActivity;\r
import com.td.TrainTwitterAdapter;\r
import com.td.db.Train;\r
import com.td.db.TrainDao;\r
public static final String ACTION = TrainDelayedServiceImpl.class\r
.getSimpleName();\r
private final IBinder binder = new Binder();\r
- \r
-// private boolean isCanceled = false;\r
-// \r
-// public class TrainDelayedBinder extends Binder {\r
-// public TrainDelayedServiceImpl getService() {\r
-// return TrainDelayedServiceImpl.this;\r
-// }\r
-// }\r
+\r
+ // private boolean isCanceled = false;\r
+ //\r
+ // public class TrainDelayedBinder extends Binder {\r
+ // public TrainDelayedServiceImpl getService() {\r
+ // return TrainDelayedServiceImpl.this;\r
+ // }\r
+ // }\r
\r
// TODO\r
private AsyncTwitterFactory factory = new AsyncTwitterFactory();\r
private TrainTwitterAdapter listener = new TrainTwitterAdapter(this);\r
\r
private Timer timer = null;\r
- private int id = 0;\r
+ private static int id = 0;\r
\r
@Override\r
public IBinder onBind(Intent intent) {\r
}\r
\r
// TODO\r
- //private PendingIntent alarmSender;\r
+ // private PendingIntent alarmSender;\r
\r
public void schedule2(long delay) {\r
try {\r
query.setQuery(text);\r
twitter.search(query);\r
}\r
-\r
+ // TODO\r
+ //notificate("id = " + id);\r
+ \r
id++;\r
} catch (Exception e) {\r
Debug.d(this, null, e);\r
}\r
}\r
\r
-// public void scheduleStop() {\r
-// if (timer != null) {\r
-// timer.cancel();\r
-// }\r
-// }\r
+ private void notificate(String msg) {\r
+ try {\r
+ String ns = Context.NOTIFICATION_SERVICE;\r
+ NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);\r
+\r
+ int icon = R.drawable.icon;\r
+ CharSequence tickerText = "\93d\8eÔ\82ª\92x\82ê\82Ä\82é?";\r
+ long when = System.currentTimeMillis();\r
+ Notification notification = new Notification(icon, tickerText, when);\r
+\r
+ Context context = getApplicationContext();\r
+ CharSequence contentTitle = "My notification";\r
+ CharSequence contentText = msg;\r
+ Intent notificationIntent = new Intent(this,\r
+ TrainDelayedActivity.class);\r
+ PendingIntent contentIntent = PendingIntent.getActivity(this, 0,\r
+ notificationIntent, 0);\r
+ notification.setLatestEventInfo(context, contentTitle, contentText,\r
+ contentIntent);\r
+\r
+ int HELLO_ID = 1;\r
+ mNotificationManager.notify(HELLO_ID, notification);\r
+ } catch (Exception e) {\r
+ Debug.d(this, null, e);\r
+ }\r
+ }\r
+\r
+ // public void scheduleStop() {\r
+ // if (timer != null) {\r
+ // timer.cancel();\r
+ // }\r
+ // }\r
\r
@Override\r
public void onCreate() {\r
Debug.d(this, null, e);\r
}\r
}\r
- \r
+\r
// \8e\9f\89ñ\8bN\93®\93o\98^\r
long now = System.currentTimeMillis();\r
PendingIntent alarmSender = PendingIntent.getService(\r
TrainDelayedServiceImpl.this,\r
TrainDelayedServiceImpl.class), 0);\r
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);\r
- alarm.set(AlarmManager.RTC, now + DateUtil.LEN * 60 * 1000, alarmSender);\r
+ alarm.set(AlarmManager.RTC, now + DateUtil.LEN * 60 * 1000,\r
+ alarmSender);\r
\r
// \83T\81[\83r\83X\8fI\97¹\r
TrainDelayedServiceImpl.this.stopSelf();\r
@Override\r
public void onDestroy() {\r
Debug.d(this, Debug.ON_DESTROY);\r
- //TODO\r
- //scheduleStop();\r
+ // TODO\r
+ // scheduleStop();\r
\r
super.onDestroy();\r
}\r
package com.td.utility;\r
\r
import java.text.DecimalFormat;\r
+import java.util.Calendar;\r
import java.util.Date;\r
\r
public class DateUtil {\r
sb.append(fmt2.format((int) (ymd % 100)));\r
return sb.toString();\r
}\r
+\r
+ public static long getTime(Date date, int i, int from) {\r
+ // \8d¡\93ú(date)\82©\82ç\81Ai\93ú\8cã\82Ì\81Afrom\8e\9e\r
+ Calendar cal = Calendar.getInstance();\r
+ cal.setTime(date);\r
+ cal.add(Calendar.DAY_OF_MONTH, i);\r
+ cal.set(Calendar.HOUR_OF_DAY, from / 100);\r
+ cal.set(Calendar.MINUTE, from % 100);\r
+ \r
+ return cal.getTimeInMillis();\r
+ }\r
}\r
}\r
\r
public static void d(Object target, String msg, Throwable t){\r
- if (!Log.isLoggable(FILTER, Log.DEBUG)){\r
+ d(target, msg, t, Log.DEBUG);\r
+ }\r
+\r
+ public static void i(Object target, String msg){\r
+ i(target, msg, null);\r
+ }\r
+\r
+ public static void i(Object target, String msg, Throwable t){\r
+ d(target, msg, t, Log.INFO);\r
+ }\r
+\r
+ private static void d(Object target, String msg, Throwable t, int level){\r
+ if (!Log.isLoggable(FILTER, level)){\r
return;\r
}\r
\r