import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
+import com.td.broadcast.DelayReceiver;
import com.td.db.Monitor;
import com.td.db.MonitorDao;
import com.td.db.Train;
import com.td.db.TrainDao;
+import com.td.service.SchedulerTest;
import com.td.service.TrainDelayedServiceImpl;
import com.td.utility.BaseActivity;
import com.td.utility.EditPrefUtil;
-import com.td.utility.Util;
public class TrainDelayedActivity extends BaseActivity {
- public static final String PREF_TRD_SFLG = "TRD_SFLG";
-
private TextView textView1;
private Button button1;
private Button button2;
private LinearLayout linearLayout9;
private EditPrefUtil pref = new EditPrefUtil(this);
- private int prefSFlag;
+ private int prefSvsStatus;
+ private boolean isClick = false;
+ //private DelayReceiver receiver = new DelayReceiver(this);
+ private BroadcastReceiver receiver = new BroadcastReceiver(){
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+
+ if (action.compareTo(DelayReceiver.START_SERVICE) == 0){
+ setStatus();
+ }
+ else if (action.compareTo(DelayReceiver.STOP_SERVICE) == 0){
+ // \96¢\8eg\97p
+ }
+ }
+ };
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(DelayReceiver.START_SERVICE);
+ intentFilter.addAction(DelayReceiver.STOP_SERVICE);
+ registerReceiver(receiver, intentFilter);
+
button1 = (Button) this.findViewById(R.id.button01);
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
intent.putExtra("TEXT", "\83T\83\93\83v\83\8b\83\81\83b\83Z\81[\83W");
sendBroadcast(intent);
- //pref.put(TrainDelayedServiceImpl.PREF_SVS_DBFLG, 0);
- //pref.update();
-
- //SchedulerTest.repeat(TrainDelayedActivity.this);
- //SchedulerTest.main();
+ SchedulerTest.repeat(TrainDelayedActivity.this);
+ SchedulerTest.main();
}});
button2 = (Button) this.findViewById(R.id.button02);
button4 = (Button) this.findViewById(R.id.button04);
button4.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
+ if (isClick){
+ return;
+ }
+ isClick = true;
new AlertDialog.Builder(TrainDelayedActivity.this)
.setTitle(getString(R.string.warn_dialog_title))
.setMessage(getString(R.string.start_service_qmsg))
// \83T\81[\83r\83X\82ð\8aJ\8en
Intent intent = new Intent(TrainDelayedActivity.this,
TrainDelayedServiceImpl.class);
+ intent.setAction(TrainDelayedServiceImpl.START_ACTION);
startService(intent);
- // TODO
- pref.put(PREF_TRD_SFLG, 1);
+ pref.put(TrainDelayedServiceImpl.PREF_SVS_STATUS, 1);
pref.update();
setStatus();
+
+ isClick = false;
}
})
.setNegativeButton(getString(R.string.cancel_button), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
- ;
+ isClick = false;
}
})
.create().show();
button5 = (Button) this.findViewById(R.id.button05);
button5.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
+ if (isClick){
+ return;
+ }
+ isClick = true;
// TODO
//HistoryDao.getInstance().delete(TrainDelayedActivity.this);
AlarmManager alerm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alerm.cancel(alarmSender);
- // TODO
- pref.put(PREF_TRD_SFLG, 0);
+ pref.put(TrainDelayedServiceImpl.PREF_SVS_STATUS, 0);
pref.update();
setStatus();
+
+ isClick = false;
}
})
.setNegativeButton(getString(R.string.cancel_button), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
- ;
+ isClick = false;
}
})
.create().show();
private void setStatus() {
String text = "";
- prefSFlag = pref.getInt(PREF_TRD_SFLG, 0);
+ prefSvsStatus = pref.getInt(TrainDelayedServiceImpl.PREF_SVS_STATUS, 0);
boolean enabled1 = true;
boolean enabled2 = true;
msgNo = (msgNo < 0)? 3 : msgNo;
}
- if (Util.toBoolean(prefSFlag)){
- enabled4 = false;
- }
- else {
+ switch (prefSvsStatus){
+ case 0:
msgNo = (msgNo < 0)? 4 : msgNo;
enabled5 = false;
+ break;
+ case 1:
+ enabled4 = false;
+ enabled5 = false;
+ break;
+ case 2:
+ enabled4 = false;
+ break;
}
button1.setEnabled(enabled1);
import com.td.utility.Util;\r
\r
public class TrainDelayedServiceImpl extends Service {\r
+ public static final String PREF_SVS_STATUS = "SVS_STATUS";\r
public static final String PREF_SVS_DBFLG = "SVS_DBFLG";\r
- public static final String ACTION = TrainDelayedServiceImpl.class\r
- .getSimpleName();\r
- \r
+ public static final String START_ACTION = "com.td.START";\r
+\r
private final IBinder binder = new Binder();\r
private static Scheduler scheduler = null;\r
\r
private static AsyncTwitterFactory factory = new AsyncTwitterFactory();\r
private AsyncTwitter twitter = factory.getInstance();\r
private TrainTwitterAdapter listener = new TrainTwitterAdapter(this);\r
+ private String action = null;\r
\r
private static int id = 0;\r
\r
try {\r
Debug.d(this, "run() " + id);\r
\r
- if (scheduler == null){\r
+ if (scheduler == null) {\r
return;\r
}\r
List<Train> list = scheduler.getTrains();\r
- if (list == null){\r
+ if (list == null) {\r
return;\r
}\r
\r
twitter.search(query);\r
}\r
// TODO\r
- //notificate("id = " + id);\r
- \r
+ // notificate("id = " + id);\r
+\r
id = (id + 1) % 1000000;\r
} catch (Exception e) {\r
Debug.d(this, null, e);\r
\r
private Runnable task = new Runnable() {\r
public void run() {\r
+ boolean flag = false;\r
try {\r
- long now = System.currentTimeMillis();\r
-\r
- Debug.d(this, "id=" + id);\r
- synchronized (binder) {\r
- try {\r
- int prefDBFlag = pref.getInt(PREF_SVS_DBFLG, 0);\r
- if (!Util.toBoolean(prefDBFlag)){\r
- pref.put(PREF_SVS_DBFLG, 1);\r
- pref.update();\r
- scheduler = null;\r
+ try {\r
+ long now = System.currentTimeMillis();\r
+\r
+ Debug.d(this, "id=" + id);\r
+ synchronized (binder) {\r
+ try {\r
+ int prefDBFlag = pref.getInt(PREF_SVS_DBFLG, 0);\r
+ if (!Util.toBoolean(prefDBFlag)) {\r
+ pref.put(PREF_SVS_DBFLG, 1);\r
+ pref.update();\r
+ scheduler = null;\r
+ }\r
+\r
+ if (scheduler == null) {\r
+ scheduler = new Scheduler();\r
+ DatabaseHelper.init(getApplicationContext());\r
+ }\r
+ scheduler.init();\r
+ schedule(-1);\r
+ } catch (Exception e) {\r
+ // TODO\r
+ Debug.t(TrainDelayedServiceImpl.this,\r
+ e.getMessage());\r
+ Debug.d(this, null, e);\r
}\r
+ }\r
\r
- if (scheduler == null){\r
- scheduler = new Scheduler();\r
- DatabaseHelper.init(getApplicationContext());\r
- }\r
- scheduler.init();\r
- schedule(-1);\r
- } catch (Exception e) {\r
- // TODO\r
- Debug.t(TrainDelayedServiceImpl.this, e.getMessage());\r
- Debug.d(this, null, e);\r
+ long next = scheduler.calcSchedule(now);\r
+ String nextStr = DateUtil.formatted(next);\r
+ Debug.t(TrainDelayedServiceImpl.this, nextStr);\r
+ Debug.d(this, "calcSchedule " + nextStr);\r
+\r
+ // \8e\9f\89ñ\8bN\93®\93o\98^\r
+ PendingIntent alarmSender = PendingIntent.getService(\r
+ TrainDelayedServiceImpl.this, 0, new Intent(\r
+ TrainDelayedServiceImpl.this,\r
+ TrainDelayedServiceImpl.class), 0);\r
+ AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);\r
+ alarm.set(AlarmManager.RTC, next, alarmSender);\r
+ flag = true;\r
+\r
+ if (action.compareTo(START_ACTION) == 0) {\r
+ pref.put(PREF_SVS_STATUS, 2);\r
+ pref.update();\r
+ \r
+ Intent intent = new Intent(DelayReceiver.START_SERVICE);\r
+ TrainDelayedServiceImpl.this.sendBroadcast(intent); \r
+\r
+ Debug.t(TrainDelayedServiceImpl.this, START_ACTION);\r
}\r
+\r
+ // \83T\81[\83r\83X\8fI\97¹\r
+ TrainDelayedServiceImpl.this.stopSelf();\r
+\r
+ id = (id + 1) % 1000000;\r
+ } catch (Exception e) {\r
+ Debug.t(TrainDelayedServiceImpl.this, e.getMessage());\r
+ Debug.d(this, null, e);\r
+ }\r
+ } finally {\r
+ if (!flag){\r
+ pref.put(PREF_SVS_STATUS, 0);\r
+ pref.update(); \r
+\r
+ Intent intent = new Intent(DelayReceiver.STOP_SERVICE);\r
+ TrainDelayedServiceImpl.this.sendBroadcast(intent); \r
}\r
- \r
- long next = scheduler.calcSchedule(now);\r
- String nextStr = DateUtil.formatted(next);\r
- Debug.t(TrainDelayedServiceImpl.this, nextStr);\r
- Debug.d(this, "calcSchedule " + nextStr);\r
- \r
- // \8e\9f\89ñ\8bN\93®\93o\98^\r
- PendingIntent alarmSender = PendingIntent.getService(\r
- TrainDelayedServiceImpl.this, 0, new Intent(\r
- TrainDelayedServiceImpl.this,\r
- TrainDelayedServiceImpl.class), 0);\r
- AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);\r
- alarm.set(AlarmManager.RTC, next,\r
- alarmSender);\r
-\r
- // \83T\81[\83r\83X\8fI\97¹\r
- TrainDelayedServiceImpl.this.stopSelf();\r
- \r
- id = (id + 1) % 1000000;\r
- } catch (Exception e) {\r
- Debug.t(TrainDelayedServiceImpl.this, e.getMessage());\r
- Debug.d(this, null, e);\r
}\r
}\r
-\r
};\r
\r
@Override\r
\r
Debug.d(this, Debug.ON_START);\r
\r
+ action = intent.getAction();\r
+ action = (action == null) ? "" : action;\r
+\r
Thread thread = new Thread(null, task,\r
TrainDelayedServiceImpl.class.getSimpleName());\r
thread.start();\r
}\r
\r
public List<Keyword> getKeywords() {\r
- if (scheduler == null){\r
+ if (scheduler == null) {\r
return null;\r
}\r
return scheduler.getKeywords();\r