OSDN Git Service

ライブビューの拡大機能を搭載。
authorMRSa <mrsa@myad.jp>
Thu, 1 Feb 2018 15:19:07 +0000 (00:19 +0900)
committerMRSa <mrsa@myad.jp>
Thu, 1 Feb 2018 15:19:07 +0000 (00:19 +0900)
wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/button/PushedLowerArea.java
wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/IZoomLensHolder.java
wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/ZoomLensHolder.java
wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/dispatcher/FeatureDispatcher.java
wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/dispatcher/ICameraFeatureDispatcher.java

index f95fab6..d65376c 100644 (file)
@@ -37,27 +37,27 @@ class PushedLowerArea implements IPushedButton
         {
             case "P":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
-                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHOT_BRACKET_EXPOSURE : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X7 : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
                 break;
 
             case "A":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
-                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHOT_BRACKET_APERATURE : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X7 : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
                 break;
 
             case "S":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
-                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHOT_BRACKET_SHUTTER : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X7 : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
                 break;
 
             case "M":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
-                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHOT_BRACKET_WB : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X14 : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
                 break;
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
-                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHOT_BRACKET_ART_FILTER : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X10 : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
                 break;
 
             case "Movie":
@@ -68,7 +68,7 @@ class PushedLowerArea implements IPushedButton
             case "iAuto":
             default:
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_IAUTO;
-                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHOT_INTERVAL_5SEC : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X5 : ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT;
                 break;
         }
         return (dispatcher.dispatchAction(IShowInformation.LOWER_AREA, preferences.getInt(preference_action_id, defaultAction)));
index 2e62f5c..6c716df 100644 (file)
@@ -16,5 +16,6 @@ public interface IZoomLensHolder
     void driveZoomLens(int direction);
     boolean isDrivingZoomLens();
     float getCurrentDigitalZoomScale();
+    boolean magnifyLiveView(int scale);
     void changeDigitalZoomScale(float scale, boolean isCyclic);
 }
index f009a31..90ae9ad 100644 (file)
@@ -1,5 +1,6 @@
 package jp.sfjp.gokigen.a01c.olycamerawrapper;
 
+import android.graphics.PointF;
 import android.util.Log;
 
 import java.util.Map;
@@ -170,6 +171,45 @@ class ZoomLensHolder implements IZoomLensHolder
         return (currentDigitalScale);
     }
 
+    public boolean magnifyLiveView(int scale)
+    {
+        try
+        {
+            if (camera != null)
+            {
+                if (camera.isMagnifyingLiveView())
+                {
+                    // ライブビュー拡大中の場合には、拡大をやめる。
+                    camera.stopMagnifyingLiveView();
+                    return(true);
+                }
+
+                // ライブビュー画像について、中心を指定されたサイズに拡大する
+                OLYCamera.MagnifyingLiveViewScale lvScale = OLYCamera.MagnifyingLiveViewScale.X14;
+                if (scale  == 5)
+                {
+                    lvScale = OLYCamera.MagnifyingLiveViewScale.X5;
+                }
+                else if (scale  == 7)
+                {
+                    lvScale = OLYCamera.MagnifyingLiveViewScale.X7;
+                }
+                else if (scale  == 10)
+                {
+                    lvScale = OLYCamera.MagnifyingLiveViewScale.X10;
+                }
+                camera.startMagnifyingLiveViewAtPoint(new PointF(0.5f, 0.5f), lvScale);
+
+                return (true);
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
+
     /**
      *   デジタルズームを実行する
      *
index dd196f4..912b3b5 100644 (file)
@@ -300,6 +300,38 @@ public class FeatureDispatcher implements ICameraFeatureDispatcher
                 }
                 break;
 
+            case FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X5:
+                // ライブビュー拡大(5倍)
+                if (!changeLiveViewMagnify(5))
+                {
+                    duration =IShowInformation.VIBRATE_PATTERN_NONE;
+                }
+                break;
+
+            case FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X7:
+                // ライブビュー拡大(7倍)
+                if (!changeLiveViewMagnify(7))
+                {
+                    duration =IShowInformation.VIBRATE_PATTERN_NONE;
+                }
+                break;
+
+            case FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X10:
+                // ライブビュー拡大(10倍)
+                if (!changeLiveViewMagnify(10))
+                {
+                    duration =IShowInformation.VIBRATE_PATTERN_NONE;
+                }
+                break;
+
+            case FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X14:
+                // ライブビュー拡大(14倍)
+                if (!changeLiveViewMagnify(14))
+                {
+                    duration =IShowInformation.VIBRATE_PATTERN_NONE;
+                }
+                break;
+
             default:
                 // 上記以外...なにもしない
                 duration =IShowInformation.VIBRATE_PATTERN_NONE;
@@ -866,6 +898,24 @@ public class FeatureDispatcher implements ICameraFeatureDispatcher
         return (isExecute);
     }
 
+
+    /**
+     *   ライブビューのサイズを指定した倍率に拡大する(拡大中の場合にはもとに戻す。)
+     *
+     * @param scale  拡大倍率
+     * @return  実行した場合true, 実行しなかった場合はfalse
+     */
+    private boolean changeLiveViewMagnify(int scale)
+    {
+        boolean isExecute = false;
+        IZoomLensHolder zoom = camera.getZoomLensHolder();
+        if (zoom != null)
+        {
+            isExecute = zoom.magnifyLiveView(scale);
+        }
+        return (isExecute);
+    }
+
     /**
      *   設定画面を開く
      *
index 7364764..194c6f0 100644 (file)
@@ -109,6 +109,10 @@ public interface ICameraFeatureDispatcher
     int FEATURE_DIGITAL_ZOOM_CHANGE = 50;
     int FEATURE_DIGITAL_ZOOMIN = 51;
     int FEATURE_DIGITAL_ZOOMOUT = 52;
+    int FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X5 = 53;
+    int FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X7 = 54;
+    int FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X10 = 55;
+    int FEATURE_CHANGE_LIVEVIEW_MAGNIFY_X14 = 56;
 
 
     // エリアタッチ時の機能(featureNumber)