From cb1bd611a45b66878e1851ea906fdaa4589b1971 Mon Sep 17 00:00:00 2001 From: MRSa Date: Tue, 27 Feb 2018 00:16:34 +0900 Subject: [PATCH] =?utf8?q?=E3=83=90=E3=82=A4=E3=83=96=E3=83=AC=E3=83=BC?= =?utf8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=82=92=E5=AE=9F=E8=A1=8C=E3=81=A7?= =?utf8?q?=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= =?utf8?q?=E3=80=82=E8=A1=A8=E7=A4=BA=E3=81=AE=E6=A1=81=E3=82=92=E5=B0=91?= =?utf8?q?=E3=81=97=E8=A6=8B=E7=9B=B4=E3=81=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../joggingtimer/IWearableActivityControl.java | 2 + .../osdn/gokigen/joggingtimer/MainActivity.java | 12 +++-- .../osdn/gokigen/joggingtimer/MyTimerCounter.java | 8 ++- .../joggingtimer/WearableActivityController.java | 60 +++++++++++++++++++--- wear/src/main/res/values-ja/strings.xml | 2 +- wear/src/main/res/values-round/strings.xml | 2 +- wear/src/main/res/values/strings.xml | 2 +- 7 files changed, 75 insertions(+), 13 deletions(-) diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/IWearableActivityControl.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/IWearableActivityControl.java index 518df5d..bf3afc4 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/IWearableActivityControl.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/IWearableActivityControl.java @@ -11,4 +11,6 @@ public interface IWearableActivityControl { void setup(WearableActivity activity, IClickCallback callback); void exitApplication(WearableActivity activity); + + void vibrate(int duration); } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/MainActivity.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/MainActivity.java index ecfcf90..25e098d 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/MainActivity.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/MainActivity.java @@ -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); } - } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/MyTimerCounter.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/MyTimerCounter.java index e118287..9e8f845 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/MyTimerCounter.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/MyTimerCounter.java @@ -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)); } diff --git a/wear/src/main/java/net/osdn/gokigen/joggingtimer/WearableActivityController.java b/wear/src/main/java/net/osdn/gokigen/joggingtimer/WearableActivityController.java index 0d46f58..2a14cac 100644 --- a/wear/src/main/java/net/osdn/gokigen/joggingtimer/WearableActivityController.java +++ b/wear/src/main/java/net/osdn/gokigen/joggingtimer/WearableActivityController.java @@ -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(); + } + } } diff --git a/wear/src/main/res/values-ja/strings.xml b/wear/src/main/res/values-ja/strings.xml index ae43764..580cb24 100644 --- a/wear/src/main/res/values-ja/strings.xml +++ b/wear/src/main/res/values-ja/strings.xml @@ -3,5 +3,5 @@ JoggingTimer ジョギングタイマ - 00:00:00.0 + 0:00\'00\"0 \ No newline at end of file diff --git a/wear/src/main/res/values-round/strings.xml b/wear/src/main/res/values-round/strings.xml index 837fe07..9da4621 100644 --- a/wear/src/main/res/values-round/strings.xml +++ b/wear/src/main/res/values-round/strings.xml @@ -3,5 +3,5 @@ JoggingTimer Jogging Timer - 0:00:00.0 + 0:00\'00\"0 diff --git a/wear/src/main/res/values/strings.xml b/wear/src/main/res/values/strings.xml index f51f411..9da4621 100644 --- a/wear/src/main/res/values/strings.xml +++ b/wear/src/main/res/values/strings.xml @@ -3,5 +3,5 @@ JoggingTimer Jogging Timer - 00:00:00.0 + 0:00\'00\"0 -- 2.11.0