{
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();
}
if (timerCounter.isStarted())
{
timerCounter.stop();
+ controller.vibrate(120);
}
updateTimerLabel();
}
if (!timerCounter.isStarted())
{
timerCounter.reset();
+ controller.vibrate(50);
}
updateTimerLabel();
}
}
}
-
/**
*
*
}
return (elapsedTime);
}
-
}
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));
}
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;
+
/**
*
*
{
private final String TAG = toString();
private final ButtonClickListener clickListener = new ButtonClickListener();
+ private Vibrator vibrator = null;
+ //private PowerManager powerManager = null;
+
WearableActivityController()
{
@Override
public void setup(WearableActivity activity, IClickCallback callback)
{
- setupPermissions();
- setupHardwares();
+ setupPermissions(activity);
+ setupHardwares(activity);
setupScreen(activity);
setupListeners(activity, callback);
}
*
*
*/
- private void setupPermissions()
+ private void setupPermissions(WearableActivity activity)
{
/*
// Set up permissions
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);
}
/**
//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();
+ }
+ }
}