OSDN Git Service

ラップタイム表示をリストビューに変更(途中)
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / stopwatch / MainActivity.java
1 package net.osdn.gokigen.joggingtimer.stopwatch;
2
3 import android.content.Intent;
4 import android.graphics.Color;
5 import android.os.Bundle;
6 import android.support.wear.widget.BoxInsetLayout;
7 import android.support.wearable.activity.WearableActivity;
8 import android.util.Log;
9 import android.view.KeyEvent;
10 import android.view.View;
11 import android.widget.ImageButton;
12 import android.widget.LinearLayout;
13 import android.widget.ListView;
14 import android.widget.RelativeLayout;
15 import android.widget.ScrollView;
16 import android.widget.TextView;
17
18 import net.osdn.gokigen.joggingtimer.R;
19 import net.osdn.gokigen.joggingtimer.recordlist.ListActivity;
20 import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
21
22 import java.text.SimpleDateFormat;
23 import java.util.Date;
24 import java.util.List;
25 import java.util.Locale;
26
27 /**
28  *
29  *
30  */
31 public class MainActivity extends WearableActivity implements IClickCallback, MyTimerTrigger.ITimeoutReceiver, MyTimerCounter.ICounterStatusNotify
32 {
33     private final String TAG = toString();
34     private final IWearableActivityControl controller = new WearableActivityController();
35     private MyTimerCounter counter = new MyTimerCounter();
36     private boolean isCounterLapTime = false;
37     private boolean isLaptimeView = true;
38     private ITimerStopTrigger stopTrigger = null;
39
40     /**
41      *
42      */
43     @Override
44     protected void onCreate(Bundle savedInstanceState)
45     {
46         super.onCreate(savedInstanceState);
47         Log.v(TAG, "onCreate()");
48
49         setContentView(R.layout.activity_main);
50
51         controller.setup(this, this, counter);
52
53         // Enables Always-on
54         setAmbientEnabled();
55     }
56
57     /**
58      *
59      */
60     @Override
61     protected void onResume()
62     {
63         super.onResume();
64
65         // インテントを取得する
66         Intent intent = getIntent();
67         String action = intent.getAction();
68         Log.v(TAG, "onResume() : " + action);
69
70         boolean isStartTimer = false;
71         if (action != null)
72         {
73             if (action.equals("com.google.android.wearable.action.STOPWATCH"))
74             {
75                 isStartTimer = true;
76             }
77             else if (action.equals("vnd.google.fitness.TRACK"))
78             {
79                 String activity = intent.getStringExtra("actionStatus");
80                 if ((activity != null)&&(activity.equals("ActiveActionStatus")))
81                 {
82                     isStartTimer = true;
83                 }
84             }
85         }
86         controller.setupReferenceData();
87
88         if (isStartTimer)
89         {
90             // start a timer!
91             startTimer();
92         }
93
94         // 表示ビューの切り替え
95         changeGraphicView(isLaptimeView);
96     }
97
98     /**
99      *
100      */
101     @Override
102     protected void onPause()
103     {
104         super.onPause();
105         Log.v(TAG, "onPause()");
106     }
107
108     /**
109      *
110      *
111      */
112     @Override
113     public void onStart()
114     {
115         super.onStart();
116         Log.v(TAG, "onStart()");
117
118         // データベースのセットアップ
119         counter.setCallback(this);
120         controller.setupDatabase(this, false);
121     }
122
123     /**
124      *
125      *
126      */
127     @Override
128     public void onStop()
129     {
130         super.onStop();
131         Log.v(TAG, "onStop()");
132         if (stopTrigger != null)
133         {
134             stopTrigger.forceStop();
135         }
136         controller.exitApplication(this);
137     }
138
139     /**
140      *
141      *
142      */
143     @Override
144     public void onEnterAmbient(Bundle ambientDetails)
145     {
146         super.onEnterAmbient(ambientDetails);
147         Log.v(TAG, "onEnterAmbient()");
148     }
149
150     /**
151      *
152      *
153      */
154     @Override
155     public void onExitAmbient()
156     {
157         super.onExitAmbient();
158         Log.v(TAG, "onExitAmbient()");
159         //updateTimerLabel();
160     }
161
162     /**
163      *
164      *
165      */
166     @Override
167     public void onUpdateAmbient()
168     {
169         super.onUpdateAmbient();
170         Log.v(TAG, "onUpdateAmbient()");
171     }
172
173     /**
174      *
175      */
176     private void updateTimerLabel()
177     {
178         ITimerCounter timerCounter = counter;
179         if (timerCounter == null)
180         {
181             return;
182         }
183
184         int bgColor;
185         BoxInsetLayout insetLayout = findViewById(R.id.box_inset_layout);
186         RelativeLayout layout = findViewById(R.id.relative_main_layout);
187
188         ImageButton btn1 = findViewById(R.id.btn1);
189         ImageButton btn2 = findViewById(R.id.btn2);
190         ImageButton btn3 = findViewById(R.id.btn3);
191
192         updateMainSubCounter();
193
194         if (timerCounter.isStarted())
195         {
196             bgColor = Color.BLACK;
197             insetLayout.setBackgroundColor(bgColor);
198             insetLayout.invalidate();
199
200             layout.setBackgroundColor(bgColor);
201             layout.invalidate();
202
203             btn1.setImageResource(R.drawable.ic_flag_black_24dp);
204             btn1.setBackgroundColor(bgColor);
205             btn1.setVisibility(View.VISIBLE);
206             btn1.invalidate();
207
208             btn2.setImageResource(R.drawable.ic_stop_black_24dp);
209             btn2.setBackgroundColor(bgColor);
210             btn2.setVisibility(View.VISIBLE);
211             btn2.invalidate();
212
213             btn3.setImageResource(R.drawable.ic_block_black_24dp);
214             btn3.setBackgroundColor(bgColor);
215             btn3.setVisibility(View.INVISIBLE);
216             btn3.invalidate();
217         }
218         else if (timerCounter.isReset())
219         {
220             bgColor = Color.BLACK;
221             insetLayout.setBackgroundColor(bgColor);
222             insetLayout.invalidate();
223
224             layout.setBackgroundColor(bgColor);
225             layout.invalidate();
226
227             btn1.setImageResource(R.drawable.ic_play_arrow_black_24dp);
228             btn1.setBackgroundColor(bgColor);
229             btn1.setVisibility(View.VISIBLE);
230             btn1.invalidate();
231
232             btn2.setImageResource(R.drawable.ic_format_list_bulleted_black_24dp);
233             btn2.setBackgroundColor(bgColor);
234             btn2.setVisibility(View.VISIBLE);
235             btn2.invalidate();
236
237             btn3.setImageResource(R.drawable.ic_refresh_black_24dp);
238             btn3.setBackgroundColor(bgColor);
239             btn3.setVisibility(View.INVISIBLE);
240             btn3.invalidate();
241         }
242         else
243         {
244             bgColor = Color.BLACK;
245             insetLayout.setBackgroundColor(bgColor);
246             insetLayout.invalidate();
247
248             layout.setBackgroundColor(bgColor);
249             layout.invalidate();
250
251             btn1.setImageResource(R.drawable.ic_play_arrow_black_24dp);
252             btn1.setVisibility(View.VISIBLE);
253             btn1.setBackgroundColor(bgColor);
254             btn1.invalidate();
255
256             btn2.setImageResource(R.drawable.ic_format_list_bulleted_black_24dp);
257             btn2.setVisibility(View.VISIBLE);
258             btn2.setBackgroundColor(bgColor);
259             btn2.invalidate();
260
261             btn3.setImageResource(R.drawable.ic_refresh_black_24dp);
262             btn3.setVisibility(View.VISIBLE);
263             btn3.setBackgroundColor(bgColor);
264             btn3.invalidate();
265         }
266         updateElapsedTimes();
267     }
268
269     @Override
270     public void clickedCounter()
271     {
272         // 表示順番を変える
273         isCounterLapTime = !isCounterLapTime;
274     }
275
276     /**
277      *
278      */
279     @Override
280     public void clickedBtn1()
281     {
282         startTimer();
283     }
284
285     /**
286      *
287      *
288      */
289     private void startTimer()
290     {
291         try
292         {
293             ITimerCounter timerCounter = counter;
294             if (timerCounter != null)
295             {
296                 if (timerCounter.isStarted())
297                 {
298                     Log.v(TAG, "startTimer() LAP TIME");
299                     // チャタリング防止(ラップタイムとして、3秒以内は記録しないようにする)
300                     if (timerCounter.getCurrentElapsedTime() > 3000)
301                     {
302                         long lapTime = timerCounter.timeStamp();
303                         controller.vibrate(50);
304                         controller.getDataEntry().appendTimeData(lapTime);
305                     }
306                 }
307                 else
308                 {
309                     Log.v(TAG, "startTimer() START");
310                     timerCounter.start();
311                     MyTimerTrigger trigger = new MyTimerTrigger(this, 100, timerCounter);
312                     trigger.startTimer();
313                     stopTrigger = trigger;
314                     controller.timerStarted(true);
315                     controller.vibrate(120);
316
317                     Date date = new Date();
318                     SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
319                     String title = sdf1.format(date);
320                     controller.getDataEntry().createIndex(title, timerCounter.getStartTime());
321                 }
322                 updateTimerLabel();
323             }
324         }
325         catch (Exception e)
326         {
327             e.printStackTrace();
328         }
329     }
330
331     /**
332      *
333      *
334      */
335     private boolean stopTimer()
336     {
337         boolean ret = false;
338         try
339         {
340             ITimerCounter timerCounter = counter;
341             if (timerCounter != null)
342             {
343                 if (timerCounter.isStarted())
344                 {
345                     timerCounter.stop();
346                     controller.timerStarted(false);
347                     controller.vibrate(120);
348                     controller.getDataEntry().finishTimeData(timerCounter.getStartTime(), timerCounter.getStopTime());
349                     ret = true;
350                 }
351                 updateTimerLabel();
352             }
353         }
354         catch (Exception e)
355         {
356             e.printStackTrace();
357         }
358         return (ret);
359     }
360
361     /**
362      *
363      */
364     @Override
365     public void clickedBtn2()
366     {
367         ITimerCounter timerCounter = counter;
368         if (timerCounter != null)
369         {
370             if (!timerCounter.isStarted())
371             {
372                 // 停止中は、記録一覧を呼び出す
373                 launchListActivity();
374
375                 // ぶるぶる
376                 controller.vibrate(35);
377             }
378         }
379         updateTimerLabel();
380     }
381
382     /**
383      *
384      */
385     @Override
386     public void clickedBtn3()
387     {
388         ITimerCounter timerCounter = counter;
389         if (timerCounter != null)
390         {
391             if (!timerCounter.isStarted())
392             {
393                 timerCounter.reset();
394                 controller.vibrate(50);
395             }
396             updateTimerLabel();
397         }
398     }
399
400     @Override
401     public void clickedArea()
402     {
403         Log.v(TAG, "clickedArea()");
404
405     }
406
407     @Override
408     public boolean pushedBtn1()
409     {
410         return (false);
411     }
412
413     @Override
414     public boolean pushedBtn2()
415     {
416         return (stopTimer());
417     }
418
419     @Override
420     public boolean pushedBtn3()
421     {
422         return (false);
423     }
424
425     @Override
426     public boolean pushedArea()
427     {
428         isLaptimeView = !isLaptimeView;
429         Log.v(TAG, "pushedArea() : " + isLaptimeView);
430         changeGraphicView(isLaptimeView);
431         updateTimerLabel();
432         return (true);
433     }
434
435     /**
436      *
437      *
438      */
439     @Override
440     public void timeout()
441     {
442         try
443         {
444             runOnUiThread(new Runnable() {
445                 @Override
446                 public void run() {
447                     updateTimerLabel();
448                 }
449             });
450         }
451         catch (Exception e)
452         {
453             e.printStackTrace();
454         }
455     }
456
457     /**
458      *
459      *
460      */
461     private void updateMainSubCounter()
462     {
463         TextView main = findViewById(R.id.main_counter);
464         TextView sub = findViewById(R.id.sub_counter1);
465
466         ITimerCounter timerCounter = counter;
467         if (timerCounter != null)
468         {
469             long time1 = timerCounter.getPastTime();
470             CharSequence str1 = TimeStringConvert.getTimeString(time1);
471             CharSequence str2 = "";
472             if (timerCounter.isStarted())
473             {
474                 long time2 = timerCounter.getCurrentElapsedTime();
475                 int lapCount = timerCounter.getElapsedCount();
476                 if ((time2 >= 100) && (lapCount > 1))
477                 {
478                     str2 =  "[" + lapCount + "] " + TimeStringConvert.getTimeString(time2);
479                 }
480             }
481
482             if ((str2.length() > 0)&&(isCounterLapTime))
483             {
484                 // ラップタイムの方を大きく表示する
485                 main.setText(str2);
486                 sub.setText(str1);
487             }
488             else
489             {
490                 main.setText(str1);
491                 sub.setText(str2);
492             }
493             main.invalidate();
494             sub.invalidate();
495         }
496     }
497
498     /**
499      *
500      *
501      */
502     private void updateElapsedTimes()
503     {
504         if (isLaptimeView)
505         {
506            updateElapsedTimesGraph();
507         }
508         else
509         {
510             updateElapsedTimesText();
511         }
512     }
513
514     /**
515      *
516      *
517      */
518     private void updateElapsedTimesGraph()
519     {
520         Log.v(TAG, "updateElapsedTimesGraph()");
521
522         LapTimeGraphView view = findViewById(R.id.graph_area);
523         view.invalidate();
524     }
525
526     /**
527      *
528      *
529      */
530     private void updateElapsedTimesText()
531     {
532 /*
533         String dummy = "";
534         TextView area1 = findViewById(R.id.sub_counter2);
535         TextView area2 = findViewById(R.id.sub_counter3);
536         TextView area3 = findViewById(R.id.sub_counter4);
537         TextView area4 = findViewById(R.id.sub_counter5);
538         TextView area5 = findViewById(R.id.sub_counter6);
539
540         ITimerCounter timerCounter = counter;
541         if (timerCounter != null)
542         {
543             List<Long> elapsedTimes = timerCounter.getTimerList();
544             List<Long> referenceTimes = timerCounter.getReferenceTimeList();
545             int indexSize = elapsedTimes.size();
546             int referenceSize = referenceTimes.size();
547             if (indexSize <= 1)
548             {
549                 // ラップの記録がないので表示しません
550                 area1.setText(dummy);
551                 area1.invalidate();
552                 area2.setText(dummy);
553                 area2.invalidate();
554                 area3.setText(dummy);
555                 area3.invalidate();
556                 area4.setText(dummy);
557                 area4.invalidate();
558                 area5.setText(dummy);
559                 area5.invalidate();
560                 return;
561             }
562             if (indexSize <= 2)
563             {
564                 // ラップが1つとれた場合
565                 long time = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
566                 long refTime = (referenceSize >= indexSize) ? (referenceTimes.get(indexSize - 1) - referenceTimes.get(indexSize - 2)) : 0;
567                 String elapsedTime = "[" + (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time);
568                 if (refTime > 0)
569                 {
570                     elapsedTime = elapsedTime + " ( " + TimeStringConvert.getDiffTimeString( time - refTime) + " )";
571                 }
572                 area1.setText(elapsedTime);
573                 area1.invalidate();
574                 area2.setText(dummy);
575                 area2.invalidate();
576                 area3.setText(dummy);
577                 area3.invalidate();
578                 area4.setText(dummy);
579                 area4.invalidate();
580                 area5.setText(dummy);
581                 area5.invalidate();
582                 return;
583             }
584
585             if (indexSize <= 3)
586             {
587                 // ラップが3つとれた場合
588                 long time1 = (elapsedTimes.get(indexSize - 2) - elapsedTimes.get(indexSize - 3));
589                 long refTime1 = (referenceSize >= (indexSize - 1)) ? (referenceTimes.get(indexSize - 2) - referenceTimes.get(indexSize - 3)) : 0;
590                 long time2 = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
591                 long refTime2 = (referenceSize >= indexSize) ? (referenceTimes.get(indexSize - 1) - referenceTimes.get(indexSize - 2)) : 0;
592                 String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + TimeStringConvert.getTimeString(time1);
593                 if (refTime1 > 0)
594                 {
595                     elapsedTime1 = elapsedTime1 + " ( " + TimeStringConvert.getDiffTimeString( time1 - refTime1) + " )";
596                 }
597                 String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time2);
598                 if (refTime2 > 0)
599                 {
600                     elapsedTime2 = elapsedTime2 + " ( " + TimeStringConvert.getDiffTimeString( time2 - refTime2) + " )";
601                 }
602                 area1.setText(elapsedTime1);
603                 area1.invalidate();
604                 area2.setText(elapsedTime2);
605                 area2.invalidate();
606                 area3.setText(dummy);
607                 area3.invalidate();
608                 area4.setText(dummy);
609                 area4.invalidate();
610                 area5.setText(dummy);
611                 area5.invalidate();
612                 return;
613             }
614
615             if (indexSize <= 4)
616             {
617                 // ラップが4つとれた場合
618                 long time1 = (elapsedTimes.get(indexSize - 3) - elapsedTimes.get(indexSize - 4));
619                 long refTime1 = (referenceSize >= (indexSize - 2)) ? (referenceTimes.get(indexSize - 3) - referenceTimes.get(indexSize - 4)) : 0;
620
621                 long time2 = (elapsedTimes.get(indexSize - 2) - elapsedTimes.get(indexSize - 3));
622                 long refTime2 = (referenceSize >= (indexSize - 1)) ? (referenceTimes.get(indexSize - 2) - referenceTimes.get(indexSize - 3)) : 0;
623
624                 long time3 = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
625                 long refTime3 = (referenceSize >= indexSize) ? (referenceTimes.get(indexSize - 1) - referenceTimes.get(indexSize - 2)) : 0;
626
627                 String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 3) + "] " + TimeStringConvert.getTimeString(time1);
628                 if (refTime1 > 0)
629                 {
630                     elapsedTime1 = elapsedTime1 + " ( " + TimeStringConvert.getDiffTimeString( time1 - refTime1) + " )";
631                 }
632
633                 String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + TimeStringConvert.getTimeString(time2);
634                 if (refTime2 > 0)
635                 {
636                     elapsedTime2 = elapsedTime2 + " ( " + TimeStringConvert.getDiffTimeString( time2 - refTime2) + " )";
637                 }
638
639                 String elapsedTime3 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time3);
640                 if (refTime3 > 0)
641                 {
642                     elapsedTime3 = elapsedTime3 + " ( " + TimeStringConvert.getDiffTimeString( time3 - refTime3) + " )";
643                 }
644                 area1.setText(elapsedTime1);
645                 area1.invalidate();
646                 area2.setText(elapsedTime2);
647                 area2.invalidate();
648                 area3.setText(elapsedTime3);
649                 area3.invalidate();
650                 area4.setText(dummy);
651                 area4.invalidate();
652                 area5.setText(dummy);
653                 area5.invalidate();
654                 return;
655             }
656
657             if (indexSize <= 5)
658             {
659                 // ラップが5つとれた場合
660                 long time1 = (elapsedTimes.get(indexSize - 4) - elapsedTimes.get(indexSize - 5));
661                 long refTime1 = (referenceSize >= (indexSize - 3)) ? (referenceTimes.get(indexSize - 4) - referenceTimes.get(indexSize - 5)) : 0;
662
663                 long time2 = (elapsedTimes.get(indexSize - 3) - elapsedTimes.get(indexSize - 4));
664                 long refTime2 = (referenceSize >= (indexSize - 2)) ? (referenceTimes.get(indexSize - 3) - referenceTimes.get(indexSize - 4)) : 0;
665
666                 long time3 = (elapsedTimes.get(indexSize - 2) - elapsedTimes.get(indexSize - 3));
667                 long refTime3 = (referenceSize >= indexSize) ? (referenceTimes.get(indexSize - 2) - referenceTimes.get(indexSize - 3)) : 0;
668
669                 long time4 = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
670                 long refTime4 = (referenceSize >= indexSize) ? (referenceTimes.get(indexSize - 1) - referenceTimes.get(indexSize - 2)) : 0;
671
672                 String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 4) + "] " + TimeStringConvert.getTimeString(time1);
673                 if (refTime1 > 0)
674                 {
675                     elapsedTime1 = elapsedTime1 + " ( " + TimeStringConvert.getDiffTimeString( time1 - refTime1) + " )";
676                 }
677
678                 String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 3) + "] " + TimeStringConvert.getTimeString(time2);
679                 if (refTime2 > 0)
680                 {
681                     elapsedTime2 = elapsedTime2 + " ( " + TimeStringConvert.getDiffTimeString( time2 - refTime2) + " )";
682                 }
683
684                 String elapsedTime3 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + TimeStringConvert.getTimeString(time3);
685                 if (refTime3 > 0)
686                 {
687                     elapsedTime3 = elapsedTime3 + " ( " + TimeStringConvert.getDiffTimeString( time3 - refTime3) + " )";
688                 }
689
690                 String elapsedTime4 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time3);
691                 if (refTime4 > 0)
692                 {
693                     elapsedTime4 = elapsedTime4 + " ( " + TimeStringConvert.getDiffTimeString( time4 - refTime4) + " )";
694                 }
695
696                 area1.setText(elapsedTime1);
697                 area1.invalidate();
698                 area2.setText(elapsedTime2);
699                 area2.invalidate();
700                 area3.setText(elapsedTime3);
701                 area3.invalidate();
702                 area4.setText(elapsedTime4);
703                 area4.invalidate();
704                 area5.setText(dummy);
705                 area5.invalidate();
706                 return;
707             }
708
709             // ラップが6つ以上ある場合
710             long time1 = (elapsedTimes.get(indexSize - 5) - elapsedTimes.get(indexSize - 6));
711             long refTime1 = (referenceSize >= (indexSize - 4)) ? (referenceTimes.get(indexSize - 5) - referenceTimes.get(indexSize - 6)) : 0;
712
713             long time2 = (elapsedTimes.get(indexSize - 4) - elapsedTimes.get(indexSize - 5));
714             long refTime2 = (referenceSize >= (indexSize - 3)) ? (referenceTimes.get(indexSize - 4) - referenceTimes.get(indexSize - 5)) : 0;
715
716             long time3 = (elapsedTimes.get(indexSize - 3) - elapsedTimes.get(indexSize - 4));
717             long refTime3 = (referenceSize >= indexSize - 2) ? (referenceTimes.get(indexSize - 3) - referenceTimes.get(indexSize - 4)) : 0;
718
719             long time4 = (elapsedTimes.get(indexSize - 2) - elapsedTimes.get(indexSize - 3));
720             long refTime4 = (referenceSize >= indexSize - 1) ? (referenceTimes.get(indexSize - 2) - referenceTimes.get(indexSize - 3)) : 0;
721
722             long time5 = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
723             long refTime5 = (referenceSize >= indexSize) ? (referenceTimes.get(indexSize - 1) - referenceTimes.get(indexSize - 2)) : 0;
724
725             String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 5) + "] " + TimeStringConvert.getTimeString(time1);
726             if (refTime1 > 0)
727             {
728                 elapsedTime1 = elapsedTime1 + " ( " + TimeStringConvert.getDiffTimeString( time1 - refTime1) + " )";
729             }
730
731             String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 4) + "] " + TimeStringConvert.getTimeString(time2);
732             if (refTime2 > 0)
733             {
734                 elapsedTime2 = elapsedTime2 + " ( " + TimeStringConvert.getDiffTimeString( time2 - refTime2) + " )";
735             }
736
737             String elapsedTime3 = "[" +  (timerCounter.getElapsedCount() - 3) + "] " + TimeStringConvert.getTimeString(time3);
738             if (refTime3 > 0)
739             {
740                 elapsedTime3 = elapsedTime3 + " ( " + TimeStringConvert.getDiffTimeString( time3 - refTime3) + " )";
741             }
742
743             String elapsedTime4 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + TimeStringConvert.getTimeString(time4);
744             if (refTime4 > 0)
745             {
746                 elapsedTime4 = elapsedTime4 + " ( " + TimeStringConvert.getDiffTimeString( time4 - refTime4) + " )";
747             }
748
749             String elapsedTime5 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time5);
750             if (refTime5 > 0)
751             {
752                 elapsedTime5 = elapsedTime5 + " ( " + TimeStringConvert.getDiffTimeString( time5 - refTime5) + " )";
753             }
754
755             area1.setText(elapsedTime1);
756             area1.invalidate();
757             area2.setText(elapsedTime2);
758             area2.invalidate();
759             area3.setText(elapsedTime3);
760             area3.invalidate();
761             area4.setText(elapsedTime4);
762             area4.invalidate();
763             area5.setText(elapsedTime5);
764             area5.invalidate();
765         }
766 */
767     }
768
769     /**
770      *  Launch ListActivity
771      *
772      */
773     private void launchListActivity()
774     {
775         Log.v(TAG, "launchListActivity()");
776         try
777         {
778             Intent intent = new Intent(this, ListActivity.class);
779             startActivity(intent);
780         }
781         catch (Exception e)
782         {
783             e.printStackTrace();
784         }
785     }
786
787     /*
788      *
789      *
790      */
791     @Override
792     protected void onUserLeaveHint ()
793     {
794         Log.v(TAG, "onUserLeaveHint() " );
795         // ハードキー(ホームボタン)が押されたとき、これがひろえるが...
796     }
797
798     /*
799      *
800      *
801      */
802     @Override
803     public boolean dispatchKeyEvent(KeyEvent event)
804     {
805         Log.v(TAG, "dispatchKeyEvent() : " + event.getAction() + " (" + event.getKeyCode() + ")");
806
807         return (super.dispatchKeyEvent(event));
808     }
809
810     /**
811      *
812      *
813      */
814     @Override
815     public boolean onKeyDown(int keyCode, KeyEvent event)
816     {
817         Log.v(TAG, "onKeyDown() : " + event.getAction() + " (" + event.getKeyCode() + ")" + keyCode);
818         if (event.getRepeatCount() == 0)
819         {
820             if (keyCode == KeyEvent.KEYCODE_STEM_1)
821             {
822                 startTimer();
823                 return (true);
824             }
825             else if (keyCode == KeyEvent.KEYCODE_STEM_2)
826             {
827                 startTimer();
828                 return (true);
829             }
830             else if (keyCode == KeyEvent.KEYCODE_STEM_3)
831             {
832                 startTimer();
833                 return (true);
834             }
835         }
836         return (super.onKeyDown(keyCode, event));
837     }
838
839     /**
840      *
841      *
842      */
843     @Override
844     public void counterStatusChanged(boolean forceStartTimer)
845     {
846         if (forceStartTimer)
847         {
848             try
849             {
850                 ITimerCounter timerCounter = counter;
851                 if (timerCounter != null)
852                 {
853                     MyTimerTrigger trigger = new MyTimerTrigger(this, 100, timerCounter);
854                     trigger.startTimer();
855                     stopTrigger = trigger;
856                 }
857             }
858             catch (Exception e)
859             {
860                 e.printStackTrace();
861             }
862         }
863
864         runOnUiThread(new Runnable()
865         {
866             @Override
867             public void run()
868             {
869                 updateTimerLabel();
870             }
871         });
872     }
873
874     /**
875      *
876      *
877      */
878     private void changeGraphicView(boolean isGraphics)
879     {
880         try
881         {
882             LapTimeGraphView graphView = findViewById(R.id.graph_area);
883             ListView listView = findViewById(R.id.laptime_list_area);
884
885 /*
886             TextView area1 = findViewById(R.id.sub_counter2);
887             TextView area2 = findViewById(R.id.sub_counter3);
888             TextView area3 = findViewById(R.id.sub_counter4);
889             ScrollView scr = findViewById(R.id.scroll_area);
890             LinearLayout lap = findViewById(R.id.lap_time_area);
891 */
892             if (isGraphics)
893             {
894                 graphView.setITimerCounter(counter);
895                 graphView.setVisibility(View.VISIBLE);
896                 listView.setVisibility(View.GONE);
897 /*
898                 scr.setVisibility(View.GONE);
899                 lap.setVisibility(View.GONE);
900                 area1.setVisibility(View.GONE);
901                 area2.setVisibility(View.GONE);
902                 area3.setVisibility(View.GONE);
903 */
904             }
905             else
906             {
907                 graphView.setVisibility(View.GONE);
908                 listView.setVisibility(View.VISIBLE);
909 /*
910                 scr.setVisibility(View.VISIBLE);
911                 lap.setVisibility(View.VISIBLE);
912                 area1.setVisibility(View.VISIBLE);
913                 area2.setVisibility(View.VISIBLE);
914                 area3.setVisibility(View.VISIBLE);
915 */
916             }
917             controller.vibrate(30);
918         }
919         catch (Exception e)
920         {
921             e.printStackTrace();
922         }
923     }
924
925     /*
926      *
927      *
928      */
929 /*
930     private String getElapsedTime()
931     {
932         String elapsedTime = "";
933         ITimerCounter timerCounter = counter;
934         if (timerCounter != null)
935         {
936             int count = timerCounter.getElapsedCount();
937             if (count > 0)
938             {
939                 elapsedTime = "[" + timerCounter.getElapsedCount() + "] " + MyTimerCounter.getTimeString(timerCounter.getCurrentElapsedTime());
940             }
941         }
942         return (elapsedTime);
943     }
944 */
945 }