OSDN Git Service

バイブレーションを実行できるようにする。表示の桁を少し見直し。
authorMRSa <mrsa@myad.jp>
Mon, 26 Feb 2018 15:16:34 +0000 (00:16 +0900)
committerMRSa <mrsa@myad.jp>
Mon, 26 Feb 2018 15:16:34 +0000 (00:16 +0900)
wear/src/main/java/net/osdn/gokigen/joggingtimer/IWearableActivityControl.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/MainActivity.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/MyTimerCounter.java
wear/src/main/java/net/osdn/gokigen/joggingtimer/WearableActivityController.java
wear/src/main/res/values-ja/strings.xml
wear/src/main/res/values-round/strings.xml
wear/src/main/res/values/strings.xml

index 518df5d..bf3afc4 100644 (file)
@@ -11,4 +11,6 @@ public interface IWearableActivityControl
 {
     void setup(WearableActivity activity, IClickCallback callback);
     void exitApplication(WearableActivity activity);
+
+    void vibrate(int duration);
 }
index ecfcf90..25e098d 100644 (file)
@@ -201,13 +201,19 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         {
             if (timerCounter.isStarted())
             {
-                timerCounter.timeStamp();
+                // チャタリング防止(ラップタイムとして、3秒以内は記録しないようにする)
+                if (timerCounter.getCurrentElapsedTime() > 3000)
+                {
+                    timerCounter.timeStamp();
+                    controller.vibrate(50);
+                }
             }
             else
             {
                 timerCounter.start();
                 MyTimerTrigger trigger = new MyTimerTrigger(this, 100, timerCounter);
                 trigger.startTimer();
+                controller.vibrate(120);
             }
             updateTimerLabel();
         }
@@ -225,6 +231,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             if (timerCounter.isStarted())
             {
                 timerCounter.stop();
+                controller.vibrate(120);
             }
             updateTimerLabel();
         }
@@ -242,6 +249,7 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
             if (!timerCounter.isStarted())
             {
                 timerCounter.reset();
+                controller.vibrate(50);
             }
             updateTimerLabel();
         }
@@ -319,7 +327,6 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         }
     }
 
-
     /**
      *
      *
@@ -338,5 +345,4 @@ public class MainActivity extends WearableActivity implements IClickCallback, My
         }
         return (elapsedTime);
     }
-
 }
index e118287..9e8f845 100644 (file)
@@ -38,7 +38,13 @@ public class MyTimerCounter implements Parcelable, ITimerCounter
         int sec = (int) (millis / 1000) % 60;
         int minutes = (int) ((millis / (1000 * 60)) % 60);
         int hours = (int) ((millis / (1000 * 60 * 60)) % 24);
-        return (String.format(Locale.US,"%02d:%02d:%02d.%d", hours, minutes, sec, ms));
+
+        if (hours < 1)
+        {
+            // 1時間経過していない時は、時間表示は省略する
+            return (String.format(Locale.US,"%02d'%02d\"%d", minutes, sec, ms));
+        }
+        return (String.format(Locale.US,"%d:%02d'%02d\"%d", hours, minutes, sec, ms));
         //return (DateFormat.format("hh:mm:ss.S", time));
     }
 
index 0d46f58..2a14cac 100644 (file)
@@ -1,10 +1,19 @@
 package net.osdn.gokigen.joggingtimer;
 
+import android.Manifest;
+import android.content.pm.PackageManager;
+import android.os.PowerManager;
+import android.os.Vibrator;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
 import android.support.wearable.activity.WearableActivity;
 import android.util.Log;
 import android.widget.ImageButton;
 import android.widget.TextView;
 
+import static android.content.Context.POWER_SERVICE;
+import static android.content.Context.VIBRATOR_SERVICE;
+
 /**
  *
  *
@@ -14,6 +23,9 @@ class WearableActivityController implements IWearableActivityControl
 {
     private final String TAG = toString();
     private final ButtonClickListener clickListener = new ButtonClickListener();
+    private Vibrator vibrator = null;
+    //private PowerManager powerManager = null;
+
 
     WearableActivityController()
     {
@@ -23,8 +35,8 @@ class WearableActivityController implements IWearableActivityControl
     @Override
     public void setup(WearableActivity activity, IClickCallback callback)
     {
-        setupPermissions();
-        setupHardwares();
+        setupPermissions(activity);
+        setupHardwares(activity);
         setupScreen(activity);
         setupListeners(activity, callback);
     }
@@ -34,7 +46,7 @@ class WearableActivityController implements IWearableActivityControl
      *
      *
      */
-    private void setupPermissions()
+    private void setupPermissions(WearableActivity activity)
     {
 /*
         // Set up permissions
@@ -60,17 +72,29 @@ class WearableActivityController implements IWearableActivityControl
                     REQUEST_NEED_PERMISSIONS);
         }
 */
-
+        if ((ContextCompat.checkSelfPermission(activity, Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED)||
+                (ContextCompat.checkSelfPermission(activity, Manifest.permission.WAKE_LOCK) != PackageManager.PERMISSION_GRANTED))
+        {
+            ActivityCompat.requestPermissions(activity,
+                    new String[]{
+                            Manifest.permission.VIBRATE,
+                            Manifest.permission.WAKE_LOCK,
+                    },
+                    100);
+        }
     }
 
     /**
      *
      *
      */
-    private void setupHardwares()
+    private void setupHardwares(WearableActivity activity)
     {
+        // バイブレータをつかまえる
+        vibrator = (Vibrator) activity.getSystemService(VIBRATOR_SERVICE);
 
-
+        // パワーマネージャをつかまえる
+        // powerManager = (PowerManager) activity.getSystemService(POWER_SERVICE);
     }
 
     /**
@@ -126,4 +150,28 @@ class WearableActivityController implements IWearableActivityControl
         //finishAndRemoveTask();
         //android.os.Process.killProcess(android.os.Process.myPid());
     }
+
+    @Override
+    public void vibrate(final int duration)
+    {
+        try
+        {
+            if ((vibrator == null)||(!vibrator.hasVibrator()))
+            {
+                return;
+            }
+
+            Thread thread = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    vibrator.vibrate(duration);
+                }
+            });
+            thread.start();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
 }
index ae43764..580cb24 100644 (file)
@@ -3,5 +3,5 @@
     <string name="app_name">JoggingTimer</string>
     <string name="app_title">ジョギングタイマ</string>
     <string name="blank"> </string>
-    <string name="counter">00:00:00.0</string>
+    <string name="counter">0:00\'00\"0</string>
 </resources>
\ No newline at end of file
index 837fe07..9da4621 100644 (file)
@@ -3,5 +3,5 @@
     <string name="app_name">JoggingTimer</string>
     <string name="app_title">Jogging Timer</string>
     <string name="blank"> </string>
-    <string name="counter">0:00:00.0</string>
+    <string name="counter">0:00\'00\"0</string>
 </resources>
index f51f411..9da4621 100644 (file)
@@ -3,5 +3,5 @@
     <string name="app_name">JoggingTimer</string>
     <string name="app_title">Jogging Timer</string>
     <string name="blank"> </string>
-    <string name="counter">00:00:00.0</string>
+    <string name="counter">0:00\'00\"0</string>
 </resources>