OSDN Git Service

ロックアップする不具合を改修。
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / stopwatch / MainActivity.java
index 9d1fa24..538fd19 100644 (file)
@@ -6,6 +6,7 @@ import android.os.Bundle;
 import android.support.wear.widget.BoxInsetLayout;
 import android.support.wearable.activity.WearableActivity;
 import android.util.Log;
+import android.view.KeyEvent;
 import android.view.View;
 import android.widget.ImageButton;
 import android.widget.RelativeLayout;
@@ -13,8 +14,13 @@ import android.widget.TextView;
 
 import net.osdn.gokigen.joggingtimer.R;
 import net.osdn.gokigen.joggingtimer.recordlist.ListActivity;
+import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Locale;
 
 /**
  *
@@ -80,6 +86,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         Intent intent = getIntent();
         String action = intent.getAction();
         Log.v(TAG, "onResume() : " + action);
+
         boolean isStartTimer = false;
         if (action != null)
         {
@@ -122,6 +129,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
     {
         super.onStart();
         Log.v(TAG, "onStart()");
+        controller.setupDatabase(this, false);
     }
 
     /**
@@ -156,7 +164,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
     {
         super.onExitAmbient();
         Log.v(TAG, "onExitAmbient()");
-        updateTimerLabel();
+        //updateTimerLabel();
     }
 
     /**
@@ -190,7 +198,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
 
             if (timerCounter.isStarted())
             {
-                bgColor = Color.CYAN;
+                bgColor = Color.BLACK;
                 insetLayout.setBackgroundColor(bgColor);
                 insetLayout.invalidate();
 
@@ -216,7 +224,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             }
             else if (timerCounter.isReset())
             {
-                bgColor = Color.WHITE;
+                bgColor = Color.BLACK;
                 insetLayout.setBackgroundColor(bgColor);
                 insetLayout.invalidate();
 
@@ -242,7 +250,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             }
             else
             {
-                bgColor = Color.rgb(250, 80, 80);
+                bgColor = Color.BLACK;
                 insetLayout.setBackgroundColor(bgColor);
                 insetLayout.invalidate();
 
@@ -291,27 +299,73 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
      */
     private void startTimer()
     {
-        ITimerCounter timerCounter = counter;
-        if (timerCounter != null)
+        try
         {
-            if (timerCounter.isStarted())
+            ITimerCounter timerCounter = counter;
+            if (timerCounter != null)
             {
-                // チャタリング防止(ラップタイムとして、3秒以内は記録しないようにする)
-                if (timerCounter.getCurrentElapsedTime() > 3000)
+                if (timerCounter.isStarted())
+                {
+                    Log.v(TAG, "startTimer() LAP TIME");
+                    // チャタリング防止(ラップタイムとして、3秒以内は記録しないようにする)
+                    if (timerCounter.getCurrentElapsedTime() > 3000)
+                    {
+                        long lapTime = timerCounter.timeStamp();
+                        controller.vibrate(50);
+                        controller.getDataEntry().appendTimeData(lapTime);
+                    }
+                }
+                else
                 {
-                    timerCounter.timeStamp();
-                    controller.vibrate(50);
+                    Log.v(TAG, "startTimer() START");
+                    timerCounter.start();
+                    MyTimerTrigger trigger = new MyTimerTrigger(this, 100, timerCounter);
+                    trigger.startTimer();
+                    controller.timerStarted(true);
+                    controller.vibrate(120);
+
+                    Date date = new Date();
+                    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
+                    String title = sdf1.format(date);
+                    controller.getDataEntry().createIndex(title, "", 0, timerCounter.getStartTime());
                 }
+                updateTimerLabel();
             }
-            else
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     *
+     *
+     */
+    private boolean stopTimer()
+    {
+        boolean ret = false;
+        try
+        {
+            ITimerCounter timerCounter = counter;
+            if (timerCounter != null)
             {
-                timerCounter.start();
-                MyTimerTrigger trigger = new MyTimerTrigger(this, 100, timerCounter);
-                trigger.startTimer();
-                controller.vibrate(120);
+                if (timerCounter.isStarted())
+                {
+                    timerCounter.stop();
+                    controller.timerStarted(false);
+                    controller.vibrate(120);
+                    controller.getDataEntry().finishTimeData(timerCounter.getStartTime(), timerCounter.getStopTime());
+                    ret = true;
+                }
+                updateTimerLabel();
             }
-            updateTimerLabel();
         }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (ret);
     }
 
     /**
@@ -327,6 +381,9 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             {
                 // 停止中は、記録一覧を呼び出す
                 launchListActivity();
+
+                // ぶるぶる
+                controller.vibrate(35);
             }
         }
         updateTimerLabel();
@@ -359,19 +416,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
     @Override
     public boolean pushedBtn2()
     {
-        boolean ret = false;
-        ITimerCounter timerCounter = counter;
-        if (timerCounter != null)
-        {
-            if (timerCounter.isStarted())
-            {
-                timerCounter.stop();
-                controller.vibrate(120);
-                ret = true;
-            }
-            updateTimerLabel();
-        }
-        return (ret);
+        return (stopTimer());
     }
 
     @Override
@@ -380,6 +425,35 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         return (false);
     }
 
+    @Override
+    public void dataIsReloaded(ArrayList<Long> list)
+    {
+        ITimerCounter timerCounter = counter;
+        if ((timerCounter != null)&&(list != null))
+        {
+            try
+            {
+                timerCounter.reloadTimerCounter(list.get(0), list);
+
+                MyTimerTrigger trigger = new MyTimerTrigger(this, 100, timerCounter);
+                trigger.startTimer();
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+
+        runOnUiThread(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                updateTimerLabel();
+            }
+        });
+    }
+
     /**
      *
      *
@@ -402,6 +476,10 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         }
     }
 
+    /**
+     *
+     *
+     */
     private void updateMainSubCounter()
     {
         TextView main = findViewById(R.id.main_counter);
@@ -411,7 +489,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         if (timerCounter != null)
         {
             long time1 = timerCounter.getPastTime();
-            CharSequence str1 = MyTimerCounter.getTimeString(time1);
+            CharSequence str1 = TimeStringConvert.getTimeString(time1);
 
             CharSequence str2 = "";
             if (timerCounter.isStarted())
@@ -420,7 +498,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
                 int lapCount = timerCounter.getElapsedCount();
                 if ((time2 >= 100) && (lapCount > 1))
                 {
-                    str2 =  "[" + lapCount + "] " + MyTimerCounter.getTimeString(time2);
+                    str2 =  "[" + lapCount + "] " + TimeStringConvert.getTimeString(time2);
                 }
             }
 
@@ -440,7 +518,10 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         }
     }
 
-
+    /**
+     *
+     *
+     */
     private void updateElapsedTimes()
     {
         String dummy = "";
@@ -468,7 +549,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             {
                 // ラップが1つとれた場合
                 long time = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
-                String elapsedTime = "[" + (timerCounter.getElapsedCount() - 1) + "] " + MyTimerCounter.getTimeString(time);
+                String elapsedTime = "[" + (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time);
                 area1.setText(elapsedTime);
                 area1.invalidate();
                 area2.setText(dummy);
@@ -482,8 +563,8 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
                 // ラップが3つとれた場合
                 long time1 = (elapsedTimes.get(indexSize - 2) - elapsedTimes.get(indexSize - 3));
                 long time2 = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
-                String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + MyTimerCounter.getTimeString(time1);
-                String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + MyTimerCounter.getTimeString(time2);
+                String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + TimeStringConvert.getTimeString(time1);
+                String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time2);
                 area1.setText(elapsedTime1);
                 area1.invalidate();
                 area2.setText(elapsedTime2);
@@ -497,9 +578,9 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             long time1 = (elapsedTimes.get(indexSize - 3) - elapsedTimes.get(indexSize - 4));
             long time2 = (elapsedTimes.get(indexSize - 2) - elapsedTimes.get(indexSize - 3));
             long time3 = (elapsedTimes.get(indexSize - 1) - elapsedTimes.get(indexSize - 2));
-            String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 3) + "] " + MyTimerCounter.getTimeString(time1);
-            String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + MyTimerCounter.getTimeString(time2);
-            String elapsedTime3 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + MyTimerCounter.getTimeString(time3);
+            String elapsedTime1 = "[" +  (timerCounter.getElapsedCount() - 3) + "] " + TimeStringConvert.getTimeString(time1);
+            String elapsedTime2 = "[" +  (timerCounter.getElapsedCount() - 2) + "] " + TimeStringConvert.getTimeString(time2);
+            String elapsedTime3 = "[" +  (timerCounter.getElapsedCount() - 1) + "] " + TimeStringConvert.getTimeString(time3);
             area1.setText(elapsedTime1);
             area1.invalidate();
             area2.setText(elapsedTime2);
@@ -531,6 +612,58 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
      *
      *
      */
+    @Override
+    protected void onUserLeaveHint ()
+    {
+        Log.v(TAG, "onUserLeaveHint() " );
+        // ハードキー(ホームボタン)が押されたとき、これがひろえるが...
+    }
+
+    /*
+     *
+     *
+     */
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event)
+    {
+        Log.v(TAG, "dispatchKeyEvent() : " + event.getAction() + " (" + event.getKeyCode() + ")");
+
+        return (super.dispatchKeyEvent(event));
+    }
+
+    /*
+     *
+     *
+     */
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event)
+    {
+        Log.v(TAG, "onKeyDown() : " + event.getAction() + " (" + event.getKeyCode() + ")" + keyCode);
+        if (event.getRepeatCount() == 0)
+        {
+            if (keyCode == KeyEvent.KEYCODE_STEM_1)
+            {
+                startTimer();
+                return (true);
+            }
+            else if (keyCode == KeyEvent.KEYCODE_STEM_2)
+            {
+                startTimer();
+                return (true);
+            }
+            else if (keyCode == KeyEvent.KEYCODE_STEM_3)
+            {
+                startTimer();
+                return (true);
+            }
+        }
+        return (super.onKeyDown(keyCode, event));
+    }
+
+    /*
+     *
+     *
+     */
 /*
     private String getElapsedTime()
     {