From 1108b85e410ae924d9d0b4f8c7e9614a0beb713e Mon Sep 17 00:00:00 2001 From: MRSa Date: Sun, 9 Apr 2017 23:03:21 +0900 Subject: [PATCH] =?utf8?q?=E3=83=BB=E3=83=87=E3=82=B8=E3=82=BF=E3=83=AB?= =?utf8?q?=E6=B0=B4=E6=BA=96=E5=99=A8=E3=81=A7=E6=B0=B4=E5=B9=B3=E3=81=AB?= =?utf8?q?=E3=81=AA=E3=81=A3=E3=81=9F=E3=82=89=E3=80=81=E3=81=B6=E3=82=8B?= =?utf8?q?=E3=81=B6=E3=82=8B=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?utf8?q?=E3=81=97=E3=81=9F=E3=80=82=20=E3=83=BB=E3=83=87=E3=82=B8?= =?utf8?q?=E3=82=BF=E3=83=AB=E6=B0=B4=E6=BA=96=E5=99=A8=E3=81=AE=E8=A8=AD?= =?utf8?q?=E5=AE=9A=E7=8A=B6=E6=85=8B=E3=82=92=E5=BE=A9=E5=85=83=E3=81=99?= =?utf8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../jp/sfjp/gokigen/a01c/IShowInformation.java | 1 + .../java/jp/sfjp/gokigen/a01c/MainActivity.java | 4 ++++ .../gokigen/a01c/liveview/CameraLiveImageView.java | 1 + .../a01c/olycamerawrapper/LevelMeterHolder.java | 26 ++++++++++++++++++++-- .../olycamerawrapper/OlyCameraCoordinator.java | 2 +- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/wear/src/main/java/jp/sfjp/gokigen/a01c/IShowInformation.java b/wear/src/main/java/jp/sfjp/gokigen/a01c/IShowInformation.java index 6f2dcc0..c49c9c9 100644 --- a/wear/src/main/java/jp/sfjp/gokigen/a01c/IShowInformation.java +++ b/wear/src/main/java/jp/sfjp/gokigen/a01c/IShowInformation.java @@ -28,6 +28,7 @@ public interface IShowInformation int VIBRATE_PATTERN_SIMPLE_MIDDLE = 2; int VIBRATE_PATTERN_SIMPLE_LONG = 3; int VIBRATE_PATTERN_SIMPLE_LONGLONG = 4; + int VIBRATE_PATTERN_SHORT_DOUBLE = 5; void setMessage(final int area, final int color, final String message); void setButtonDrawable(final int button, final int labelId); diff --git a/wear/src/main/java/jp/sfjp/gokigen/a01c/MainActivity.java b/wear/src/main/java/jp/sfjp/gokigen/a01c/MainActivity.java index 493840a..8454557 100644 --- a/wear/src/main/java/jp/sfjp/gokigen/a01c/MainActivity.java +++ b/wear/src/main/java/jp/sfjp/gokigen/a01c/MainActivity.java @@ -485,6 +485,10 @@ public class MainActivity extends WearableActivity implements IChangeScene, ISh case IShowInformation.VIBRATE_PATTERN_SIMPLE_SHORT: vibrator.vibrate(20); break; + case IShowInformation.VIBRATE_PATTERN_SHORT_DOUBLE: + long[] pattern = { 10, 25, 20, 25, 0 }; + vibrator.vibrate(pattern, -1); + break; case IShowInformation.VIBRATE_PATTERN_NONE: default: // ぶるぶるしない diff --git a/wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/CameraLiveImageView.java b/wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/CameraLiveImageView.java index 6ba288d..d318532 100644 --- a/wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/CameraLiveImageView.java +++ b/wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/CameraLiveImageView.java @@ -98,6 +98,7 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); showGridFeature = preferences.getBoolean(ICameraPropertyAccessor.SHOW_GRID_STATUS, true); + showLevelGaugeFeature = preferences.getBoolean(ICameraPropertyAccessor.SHOW_LEVEL_GAUGE_STATUS, false); int framingGridStatus = Integer.parseInt(preferences.getString(ICameraPropertyAccessor.FRAME_GRID, ICameraPropertyAccessor.FRAME_GRID_DEFAULT_VALUE)); gridFrameDrawer = GridFrameFactory.getGridFrameDrawer(framingGridStatus); diff --git a/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/LevelMeterHolder.java b/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/LevelMeterHolder.java index b49caa2..868c559 100644 --- a/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/LevelMeterHolder.java +++ b/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/LevelMeterHolder.java @@ -6,10 +6,13 @@ import android.util.Log; import java.util.Map; import jp.co.olympus.camerakit.OLYCamera; +import jp.sfjp.gokigen.a01c.IShowInformation; -public class LevelMeterHolder implements ILevelGauge +class LevelMeterHolder implements ILevelGauge { private final String TAG = toString(); + private final IShowInformation vibrationNotifier; + private final float GAUGE_FLAT_THRESHOLD = 1.1f; private final float GAUGE_SENSITIVITY = 0.3f; private float prevRoll = 0.0f; private float prevPitch = 0.0f; @@ -18,16 +21,18 @@ public class LevelMeterHolder implements ILevelGauge private float roll = Float.NaN; private float pitch = Float.NaN; private String orientation = ""; + private boolean isFlat = false; private boolean isWatchingLevelGauge = false; /** * コンストラクタ * */ - LevelMeterHolder(boolean initialValue) + LevelMeterHolder(IShowInformation vibrationNotifier, boolean initialValue) { // 初期値 isWatchingLevelGauge = initialValue; + this.vibrationNotifier = vibrationNotifier; } /** * レベルゲージの情報確認 @@ -69,6 +74,23 @@ public class LevelMeterHolder implements ILevelGauge // 差動レベルが一定以下の場合は、報告しない //Log.v(TAG, "Level Gauge: " + orientation + "[" + roll + "(" + diffRoll + ")" + "," + pitch + "(" + diffPitch + ")]"); //} + + // 水平になったかどうかの処理... + if (Math.abs(roll) < GAUGE_FLAT_THRESHOLD) + { + if (!isFlat) + { + // rollがフラットになったよ通知 ... バイブレータでぶるぶるさせる。。。(あんまり役に立たない感じだが。。) 入れるかどうか考える。 + vibrationNotifier.vibrate(IShowInformation.VIBRATE_PATTERN_SHORT_DOUBLE); + Log.v(TAG, "Level Gauge (FLAT) : " + orientation + "[" + roll + "(" + diffRoll + ")" + "," + pitch + "(" + diffPitch + ")]"); + } + isFlat = true; + } + else + { + // フラット状態から外れたとき... + isFlat = false; + } } catch (Exception e) { diff --git a/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/OlyCameraCoordinator.java b/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/OlyCameraCoordinator.java index c6cd4ab..2dbcc0e 100644 --- a/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/OlyCameraCoordinator.java +++ b/wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/OlyCameraCoordinator.java @@ -64,7 +64,7 @@ public class OlyCameraCoordinator implements IOlyCameraCoordinator, IIndicatorCo singleShot = new SingleShotControl(camera, focusFrameDisplay, this); // 撮影 propertyProxy = new OlyCameraPropertyProxy(camera); // カメラプロパティ cameraStatusDisplay = new CameraStatusDisplay(propertyProxy, showInformation); // 画面表示 - this.levelMeter = new LevelMeterHolder(android.support.v7.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean(ICameraPropertyAccessor.SHOW_LEVEL_GAUGE_STATUS, false)); // デジタル水準器 + this.levelMeter = new LevelMeterHolder(showInformation, android.support.v7.preference.PreferenceManager.getDefaultSharedPreferences(context).getBoolean(ICameraPropertyAccessor.SHOW_LEVEL_GAUGE_STATUS, false)); // デジタル水準器 setCameraStatusListener(new CameraStatusListenerImpl(context, cameraStatusDisplay, levelMeter)); camera.setCameraPropertyListener(new CameraPropertyListenerImpl(cameraStatusDisplay)); loadSaveCameraProperties = new LoadSaveCameraProperties(context, propertyProxy, this); -- 2.11.0