OSDN Git Service

メディア未接続時の警告表示を追加。
authorMRSa <mrsa@myad.jp>
Sun, 9 Apr 2017 11:01:08 +0000 (20:01 +0900)
committerMRSa <mrsa@myad.jp>
Sun, 9 Apr 2017 11:01:08 +0000 (20:01 +0900)
長押しで撮影モードを逆順で変更するように。

wear/src/main/java/jp/sfjp/gokigen/a01c/MainActivity.java
wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/ICameraFeatureDispatcher.java
wear/src/main/java/jp/sfjp/gokigen/a01c/liveview/OlyCameraLiveViewOnTouchListener.java
wear/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/CameraStatusListenerImpl.java
wear/src/main/res/values-ja/strings.xml
wear/src/main/res/values/strings.xml

index 250d96e..493840a 100644 (file)
@@ -45,6 +45,9 @@ public class MainActivity extends WearableActivity implements  IChangeScene, ISh
         super.onCreate(savedInstanceState);
         Log.v(TAG, "onCreate()");
 
+        // Ambientモードを許してみる...
+        setAmbientEnabled();
+
         //  画面全体の設定
         setContentView(R.layout.activity_main);
 
index ac5a592..f2cc543 100644 (file)
@@ -67,4 +67,5 @@ public interface ICameraFeatureDispatcher
     int FEATURE_ART_FILTER_DOWN = 14;
     int FEATURE_ART_FILTER_UP = 15;
     int FEATURE_TOGGLE_SHOW_LEVEL_GAUGE = 16;
+    int FEATURE_CHANGE_TAKEMODE_REVERSE = 17;
 }
index 970724c..274aa31 100644 (file)
@@ -275,27 +275,27 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         {
             case "P":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_COLORTONE_DOWN;
+                defaultAction = (isLongClick) ? ICameraFeatureDispatcher.FEATURE_COLORTONE_DOWN : ICameraFeatureDispatcher.FEATURE_COLORTONE_DOWN;
                 break;
 
             case "A":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_APERTURE_DOWN;
+                defaultAction = (isLongClick) ? ICameraFeatureDispatcher.FEATURE_APERTURE_DOWN : ICameraFeatureDispatcher.FEATURE_APERTURE_DOWN;
                 break;
 
             case "S":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_DOWN;
+                defaultAction = (isLongClick) ?  ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_DOWN : ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_DOWN;
                 break;
 
             case "M":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_DOWN;
+                defaultAction = (isLongClick) ?  ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_DOWN : ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_DOWN;
                 break;
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_ART_FILTER_DOWN;
+                defaultAction = (isLongClick) ?  ICameraFeatureDispatcher.FEATURE_ART_FILTER_DOWN : ICameraFeatureDispatcher.FEATURE_ART_FILTER_DOWN;
                 break;
 
             case "iAuto":
@@ -329,27 +329,27 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         {
             case "P":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_COLORTONE_UP;
+                defaultAction = (isLongClick) ? ICameraFeatureDispatcher.FEATURE_COLORTONE_UP : ICameraFeatureDispatcher.FEATURE_COLORTONE_UP;
                 break;
 
             case "A":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_APERTURE_UP;
+                defaultAction = (isLongClick) ? ICameraFeatureDispatcher.FEATURE_APERTURE_UP : ICameraFeatureDispatcher.FEATURE_APERTURE_UP;
                 break;
 
             case "S":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_UP;
+                defaultAction = (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_UP : ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_UP;
                 break;
 
             case "M":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_UP;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_UP :  ICameraFeatureDispatcher.FEATURE_SHUTTER_SPEED_UP;
                 break;
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_ART_FILTER_UP;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_ART_FILTER_UP : ICameraFeatureDispatcher.FEATURE_ART_FILTER_UP;
                 break;
 
             case "iAuto":
@@ -383,23 +383,27 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         {
             case "P":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN;
                 break;
 
             case "A":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN;
                 break;
 
             case "S":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN;
                 break;
 
             case "M":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_APERTURE_DOWN;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_APERTURE_DOWN : ICameraFeatureDispatcher.FEATURE_APERTURE_DOWN;
                 break;
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN;
                 break;
 
             case "iAuto":
@@ -409,6 +413,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
 
             case "movie":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_DOWN;
                 break;
 
             default:
@@ -434,23 +439,27 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         {
             case "P":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_P;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP;
                 break;
 
             case "A":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_A;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP;
                 break;
 
             case "S":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_S;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP;
                 break;
 
             case "M":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_M;
-                defaultAction = ICameraFeatureDispatcher.FEATURE_APERTURE_UP;
+                defaultAction = (isLongClick) ? ICameraFeatureDispatcher.FEATURE_APERTURE_UP : ICameraFeatureDispatcher.FEATURE_APERTURE_UP;
                 break;
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP;
                 break;
 
             case "iAuto":
@@ -460,6 +469,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
 
             case "movie":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_MOVIE;
+                defaultAction =  (isLongClick) ? ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP : ICameraFeatureDispatcher.FEATURE_EXPOSURE_BIAS_UP;
                 break;
 
             default:
@@ -529,6 +539,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         if (isLongClick)
         {
             preference_action_id = preference_action_id + ACTION_SECOND_CHOICE;
+            defaultAction = ICameraFeatureDispatcher.FEATURE_CHANGE_TAKEMODE_REVERSE;
         }
         String takeMode = getTakeMode();
         switch (takeMode)
@@ -694,7 +705,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
 
     /**
      *   撮影モードの変更指示
-     *   (P > A > S > S > ART > iAuto > ...)
+     *   (P > A > S > M > ART > iAuto > ...)
      */
     private void changeTakeMode()
     {
@@ -742,6 +753,58 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         //camera.updateTakeMode();
     }
 
+
+    /**
+     *   撮影モードの変更指示
+     *   (iAuto < P < A < S < M < ART < iAuto < ...)
+     */
+    private void changeTakeModeReverse()
+    {
+        IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
+        String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.TAKE_MODE));
+        if (propetyValue == null)
+        {
+            // データ取得失敗
+            return;
+        }
+        String targetMode = "<" + IOlyCameraProperty.TAKE_MODE;  // 変更先モード
+        switch (propetyValue)
+        {
+            case "P":
+                targetMode = targetMode + "/iAuto>";
+                break;
+
+            case "A":
+                targetMode =  targetMode + "/P>";
+                break;
+
+            case "S":
+                targetMode =  targetMode + "/A>";
+                break;
+
+            case "M":
+                targetMode =  targetMode + "/S>";
+                break;
+
+            case "ART":
+                targetMode =  targetMode + "/M>";
+                break;
+
+            case "iAuto":
+            case "movie":
+            default:
+                targetMode =  targetMode + "/ART>";
+                break;
+        }
+        Log.v(TAG, "changeTakeMode() " + targetMode);
+        propertyProxy.setCameraPropertyValue(IOlyCameraProperty.TAKE_MODE, targetMode);
+        camera.unlockAutoFocus();
+
+        //  撮影モードの更新
+        //camera.updateTakeMode();
+    }
+
+
     /**
      *   シャッターボタンが押された!
      *   (現在は、連続撮影モードやムービー撮影についてはまだ非対応)
@@ -997,6 +1060,10 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
                 // デジタル水準器の表示・非表示
                 changeShowLevelGauge();
                 break;
+            case ICameraFeatureDispatcher.FEATURE_CHANGE_TAKEMODE_REVERSE:
+                // 撮影モードの変更(逆順)
+                changeTakeModeReverse();
+                break;
         }
 
         // コマンド実行完了後、ぶるぶるさせる
index 5b768be..c883599 100644 (file)
@@ -100,6 +100,7 @@ public class CameraStatusListenerImpl implements OLYCameraStatusListener, ICamer
                 case EXPOSURE_METERING_WARNING:
                 case HIGH_TEMPERATURE_WARNING:
                 case ACTUAL_ISO_SENSITIVITY_WARNING:
+                case MEDIA_MOUNT_STATUS:
                     // ワーニング系のメッセージの表示更新
                     display.updateWarning(decideWarningMessage(camera));
                     break;
@@ -114,7 +115,6 @@ public class CameraStatusListenerImpl implements OLYCameraStatusListener, ICamer
                 case MEDIA_ERROR:
                 case DETECT_FACES:
                 case LENS_MOUNT_STATUS:
-                case MEDIA_MOUNT_STATUS:
                 case REMAINING_RECORDABLE_TIME:
                 case MINIMUM_FOCAL_LENGTH:
                 case MAXIMUM_FOCAL_LENGTH:
@@ -151,7 +151,39 @@ public class CameraStatusListenerImpl implements OLYCameraStatusListener, ICamer
                 // 露出警告
                 message = message + " " + context.getString(R.string.exposure_metering_warning);
             }
+            try
+            {
+                boolean mediaError = false;
+                String media = camera.getMediaMountStatus();
+                if (media != null)
+                {
+                    switch (media)
+                    {
+                        case "normal":
+                            // エラーなし
+                            break;
+                        case "readonly":
+                        case "cardfull":
+                        case "unmount":
+                        case "error":
+                            mediaError = true;
+                            break;
+                        default:
+                            Log.v(TAG, "getMediaMountStatus : " + media);
+                            mediaError = true;
+                            break;
+                    }
+                }
+                if (mediaError)
+                {
+                    message = message + " " + context.getString(R.string.media_status_warning);
+                }
 
+            }
+            catch (Exception ee)
+            {
+                ee.printStackTrace();
+            }
         }
         catch (Exception e)
         {
index 873e5c6..aea3643 100644 (file)
@@ -23,6 +23,7 @@
     
     <string name="high_temperature_warning">温度</string>
     <string name="exposure_metering_warning">露出</string>
+    <string name="media_status_warning">カード</string>
     <string name="iso_sensitivity_warning">ISO</string>
 
     <string name="dialog_start_load_property_message">Please Wait</string>
index 35b350b..3a3cee4 100644 (file)
@@ -22,6 +22,7 @@
 
     <string name="high_temperature_warning">TEMP</string>
     <string name="exposure_metering_warning">EXP</string>
+    <string name="media_status_warning">MEDIA</string>
     <string name="iso_sensitivity_warning">ISO</string>
 
     <string name="dialog_start_load_property_message">Please Wait</string>