OSDN Git Service

フィルターの設定を追加。初版機能はほぼ実装済み。
authorMRSa <mrsa@myad.jp>
Fri, 17 Mar 2017 16:51:14 +0000 (01:51 +0900)
committerMRSa <mrsa@myad.jp>
Fri, 17 Mar 2017 16:51:14 +0000 (01:51 +0900)
12 files changed:
app/src/main/AndroidManifest.xml
app/src/main/java/jp/sfjp/gokigen/a01c/IShowInformation.java
app/src/main/java/jp/sfjp/gokigen/a01c/MainActivity.java
app/src/main/java/jp/sfjp/gokigen/a01c/liveview/CameraLiveImageView.java
app/src/main/java/jp/sfjp/gokigen/a01c/liveview/ICameraFeatureDispatcher.java
app/src/main/java/jp/sfjp/gokigen/a01c/liveview/OlyCameraLiveViewOnTouchListener.java
app/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/CameraPropertyListenerImpl.java
app/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/CameraStatusDisplay.java
app/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/ICameraStatusDisplay.java
app/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/IOlyCameraCoordinator.java
app/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/IOlyCameraProperty.java
app/src/main/java/jp/sfjp/gokigen/a01c/olycamerawrapper/OlyCameraCoordinator.java

index f1c4232..38b15cd 100644 (file)
@@ -10,6 +10,7 @@
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.INTERNET"/>
 
     <application
index dbd5850..9c8870f 100644 (file)
@@ -22,7 +22,15 @@ public interface IShowInformation
     int BUTTON_5 = 5;
     int BUTTON_6 = 6;
 
+    int VIBRATE_PATTERN_NONE  = 0;
+    int VIBRATE_PATTERN_SIMPLE_SHORT  = 1;
+    int VIBRATE_PATTERN_SIMPLE_MIDDLE  = 2;
+    int VIBRATE_PATTERN_SIMPLE_LONG = 3;
+    int VIBRATE_PATTERN_SIMPLE_LONGLONG = 4;
+
     void setMessage(final int area, final int color, final String message);
     void setButtonDrawable(final int button, final int labelId);
 
+    void vibrate(int vibratePattern);
+
 }
index 7fd572f..edb9283 100644 (file)
@@ -2,6 +2,7 @@ package jp.sfjp.gokigen.a01c;
 
 import android.graphics.Color;
 import android.os.Bundle;
+import android.os.Vibrator;
 import android.preference.PreferenceManager;
 import android.support.wearable.activity.WearableActivity;
 import android.util.Log;
@@ -34,6 +35,7 @@ public class MainActivity extends WearableActivity implements  IChangeScene, ISh
     private IOlyCameraCoordinator coordinator = null;
     private IMessageDrawer messageDrawer = null;
     private OlyCameraLiveViewOnTouchListener listener = null;
+    private Vibrator vibrator = null;
     /**
      *
      */
@@ -53,6 +55,7 @@ public class MainActivity extends WearableActivity implements  IChangeScene, ISh
                 (ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED)||
                 (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED)||
                 (ContextCompat.checkSelfPermission(this, Manifest.permission.WAKE_LOCK) != PackageManager.PERMISSION_GRANTED)||
+                (ContextCompat.checkSelfPermission(this, Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED)||
                 (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED))
         {
             ActivityCompat.requestPermissions(this,
@@ -79,6 +82,9 @@ public class MainActivity extends WearableActivity implements  IChangeScene, ISh
             // warn the user that location function is not available.
         }
 
+        // バイブレータをつかまえる
+        vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
+
         listener = new OlyCameraLiveViewOnTouchListener(this);
 
         setupCameraCoordinator();
@@ -286,6 +292,7 @@ public class MainActivity extends WearableActivity implements  IChangeScene, ISh
         coordinator.setRecViewMode(false);
         listener.setEnableOperation(true);
         setMessage(IShowInformation.AREA_C, Color.WHITE, "");
+        coordinator.updateStatusAll();
     }
 
     /**
@@ -437,4 +444,46 @@ public class MainActivity extends WearableActivity implements  IChangeScene, ISh
     {
         return (getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS));
     }
+
+    /**
+     *
+     *
+     */
+    @Override
+    public void vibrate(int vibratePattern)
+    {
+        try
+        {
+            if ((vibrator == null)||(!vibrator.hasVibrator()))
+            {
+                return;
+            }
+
+            switch (vibratePattern)
+            {
+                case IShowInformation.VIBRATE_PATTERN_SIMPLE_LONGLONG:
+                    vibrator.vibrate(300);
+                    break;
+                case IShowInformation.VIBRATE_PATTERN_SIMPLE_LONG:
+                    vibrator.vibrate(150);
+                    break;
+                case IShowInformation.VIBRATE_PATTERN_SIMPLE_MIDDLE:
+                    vibrator.vibrate(75);
+                    break;
+                case IShowInformation.VIBRATE_PATTERN_SIMPLE_SHORT:
+                    vibrator.vibrate(20);
+                    break;
+                case IShowInformation.VIBRATE_PATTERN_NONE:
+                default:
+                    // ぶるぶるしない
+                    break;
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+
 }
index f0107b4..a1d5ce8 100644 (file)
@@ -572,32 +572,63 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
             Paint paint = new Paint();
             paint.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.CENTER));
             paint.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.CENTER));
+            paint.setAntiAlias(true);
             Paint.FontMetrics fontMetrics = paint.getFontMetrics();
             float cx = (canvas.getWidth() / 2.0f) - (paint.measureText(message) / 2.0f);
             float cy = (canvas.getHeight() / 2.0f) - ((fontMetrics.ascent + fontMetrics.descent) / 2.0f);
             canvas.drawText(message, cx, cy, paint);
         }
 
-        // ç\94»é\9d¢ä¸\8aé\83¨å\8f³側に表示する
+        // ç\94»é\9d¢ä¸\8aé\83¨å·¦側に表示する
         message = messageHolder.getMessage(ShowMessageHolder.MessageArea.UPLEFT);
         if ((message != null)&&(message.length() > 0))
         {
             Paint paintUp = new Paint();
             paintUp.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.UPLEFT));
             paintUp.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.UPLEFT));
-            canvas.drawText(message, viewRect.left, viewRect.top, paintUp);
+            paintUp.setAntiAlias(true);
+            Paint.FontMetrics fontMetrics = paintUp.getFontMetrics();
+            canvas.drawText(message, viewRect.left + 3.0f, viewRect.top + (fontMetrics.descent - fontMetrics.ascent), paintUp);
         }
 
-        // 画面下部右側に表示する
+        // 画面上部右側に表示する
+        message = messageHolder.getMessage(ShowMessageHolder.MessageArea.UPRIGHT);
+        if ((message != null)&&(message.length() > 0))
+        {
+            Paint paintUp = new Paint();
+            paintUp.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.UPRIGHT));
+            paintUp.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.UPRIGHT));
+            paintUp.setAntiAlias(true);
+            float width = paintUp.measureText(message);
+            Paint.FontMetrics fontMetrics = paintUp.getFontMetrics();
+            canvas.drawText(message, (viewRect.right - 3.0f) - width, viewRect.top + (fontMetrics.descent - fontMetrics.ascent), paintUp);
+        }
+
+        // 画面下部左側に表示する
         message = messageHolder.getMessage(ShowMessageHolder.MessageArea.LOWLEFT);
         if ((message != null)&&(message.length() > 0))
         {
             Paint paint = new Paint();
             paint.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.LOWLEFT));
             paint.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.LOWLEFT));
+            paint.setAntiAlias(true);
             Paint.FontMetrics fontMetrics = paint.getFontMetrics();
             canvas.drawText(message, viewRect.left + 3.0f, viewRect.bottom - fontMetrics.bottom, paint);
         }
+
+        // 画面下部右側に表示する
+        message = messageHolder.getMessage(ShowMessageHolder.MessageArea.LOWRIGHT);
+        if ((message != null)&&(message.length() > 0))
+        {
+            Paint paint = new Paint();
+            paint.setColor(messageHolder.getColor(ShowMessageHolder.MessageArea.LOWRIGHT));
+            paint.setTextSize(messageHolder.getSize(ShowMessageHolder.MessageArea.LOWRIGHT));
+            paint.setAntiAlias(true);
+            float width = paint.measureText(message);
+            Paint.FontMetrics fontMetrics = paint.getFontMetrics();
+            canvas.drawText(message, (viewRect.right - 3.0f) - width, viewRect.bottom - fontMetrics.bottom, paint);
+        }
+
     }
 
     /**
index 976f3b4..59c7185 100644 (file)
@@ -63,5 +63,6 @@ public interface ICameraFeatureDispatcher
     int FEATURE_SHUTTER_SPEED_UP = 11;
     int FEATURE_COLORTONE_DOWN = 12;
     int FEATURE_COLORTONE_UP = 13;
-
+    int FEATURE_ART_FILTER_DOWN = 14;
+    int FEATURE_ART_FILTER_UP = 15;
 }
index c285481..6bb4781 100644 (file)
@@ -224,6 +224,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
+                defaultAction = ICameraFeatureDispatcher.FEATURE_ART_FILTER_DOWN;
                 break;
 
             case "iAuto":
@@ -273,6 +274,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
 
             case "ART":
                 preference_action_id = preference_action_id + ICameraFeatureDispatcher.MODE_ART;
+                defaultAction = ICameraFeatureDispatcher.FEATURE_ART_FILTER_UP;
                 break;
 
             case "iAuto":
@@ -767,6 +769,27 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
     }
 
     /**
+     *   アートフィルターを1段階さげる
+     *
+     */
+    private void changeArtFilterDown()
+    {
+        IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
+        propertyProxy.updateCameraPropertyDown(IOlyCameraProperty.ART_FILTER);
+    }
+
+    /**
+     *   アートフィルターを1段階あげる
+     *
+     */
+    private void changeArtFilterUp()
+    {
+        IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
+        propertyProxy.updateCameraPropertyUp(IOlyCameraProperty.ART_FILTER);
+    }
+
+
+    /**
      *   設定画面を開く
      *
      */
@@ -790,11 +813,13 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
         }
 
         // 機能実行の割り当て...
+        int duration = IShowInformation.VIBRATE_PATTERN_SIMPLE_SHORT;
         switch (featureNumber)
         {
             case ICameraFeatureDispatcher.FEATURE_SETTINGS:
                 // 設定画面を開く
                 showSettingsScreen();
+                duration =IShowInformation.VIBRATE_PATTERN_NONE;
                 break;
             case ICameraFeatureDispatcher.FEATURE_TOGGLE_SHOW_GRID:
                 // グリッド標示ON/OFF
@@ -803,6 +828,7 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
             case ICameraFeatureDispatcher.FEATURE_SHUTTER_SINGLESHOT:
                 // シャッター
                 pushShutterButton();
+                duration =IShowInformation.VIBRATE_PATTERN_SIMPLE_MIDDLE;
                 break;
             case ICameraFeatureDispatcher.FEATURE_CHANGE_TAKEMODE:
                 // 撮影モードの変更
@@ -844,7 +870,17 @@ public class OlyCameraLiveViewOnTouchListener  implements View.OnClickListener,
                 // 仕上がり・ピクチャーモードを選択
                 changeColorToneUp();
                 break;
-
+            case ICameraFeatureDispatcher.FEATURE_ART_FILTER_DOWN:
+                // アートフィルターを選択
+                changeArtFilterDown();
+                break;
+            case ICameraFeatureDispatcher.FEATURE_ART_FILTER_UP:
+                // アートフィルターを選択
+                changeArtFilterUp();
+                break;
         }
+
+        // コマンド実行完了後、ぶるぶるさせる
+        statusDrawer.vibrate(duration);
     }
 }
index 0c72e1c..11ef9a9 100644 (file)
@@ -45,10 +45,17 @@ class CameraPropertyListenerImpl implements OLYCameraPropertyListener
                 display.updateAeLockState();
                 break;
 
+            case IOlyCameraProperty.COLOR_TONE:
+                display.updateColorTone();
+                break;
+
+            case IOlyCameraProperty.ART_FILTER:
+                display.updateArtFilter();
+                break;
             default:
                 Log.v(TAG, "onUpdateCameraProperty() : " + name);
                 display.updateCameraStatus();
                 break;
         }
     }
-}
+}
\ No newline at end of file
index 0c91e5c..5e5e646 100644 (file)
@@ -21,13 +21,15 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     private int apertureArea = IShowInformation.AREA_3;                // 絞り値の表示エリア指定
     private int isoSensitivityArea = IShowInformation.AREA_4;         // ISO感度の表示エリア指定
     private int focalLengthArea = 0;                                   // 焦点距離の表示エリア指定
-    private int exposureCompensationArea = IShowInformation.AREA_6; // 露出補正値の表示エリア指定
-    private int warningArea = IShowInformation.AREA_5;                // 警告の表示エリア指定
-    private int batteryLevelArea = 0;                                 // バッテリの残量表示エリア指定
-    private int whiteBalanceArea = 0;                                 // ホワイトバランスの表示エリア指定
-    private int driveModeArea = 0;                                    // ドライブモードの表示エリア指定
-    private int aeModeArea = 0;                                        // 測光モードの表示エリア指定
-    private int aeLockStateArea = 0;                                  // AEロック状態の表示エリア指定
+    private int exposureCompensationArea = IShowInformation.AREA_6;  // 露出補正値の表示エリア指定
+    private int warningArea = IShowInformation.AREA_7;                 // 警告の表示エリア指定
+    private int batteryLevelArea = 0;                                  // バッテリの残量表示エリア指定
+    private int whiteBalanceArea = 0;                                  // ホワイトバランスの表示エリア指定
+    private int driveModeArea = 0;                                     // ドライブモードの表示エリア指定
+    private int aeModeArea = 0;                                         // 測光モードの表示エリア指定
+    private int aeLockStateArea = IShowInformation.AREA_6;            // AEロック状態の表示エリア指定
+    private int colorToneArea = IShowInformation.AREA_8;              // 仕上がり・ピクチャーモードの表示エリア指定
+    private int artFilterArea = 0;                                     // アートフィルターの表示エリア指定
 
     /**
      *
@@ -48,10 +50,16 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateTakeMode()
     {
+        if (takeModeArea == 0)
+        {
+            return;
+        }
+        Log.v(TAG, "updateTakeMode()");
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.TAKE_MODE));
-        if ((propetyValue != null)&&(takeModeArea != 0))
+        if (propetyValue != null)
         {
             informationObject.setMessage(takeModeArea, Color.WHITE, propetyValue);
+            updateDisplayArea(propetyValue);
         }
     }
 
@@ -62,8 +70,12 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateDriveMode()
     {
+        if (driveModeArea == 0)
+        {
+            return;
+        }
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.DRIVE_MODE));
-        if ((propetyValue != null)&&(driveModeArea != 0))
+        if (propetyValue != null)
         {
             informationObject.setMessage(driveModeArea, Color.WHITE, propetyValue);
         }
@@ -76,8 +88,12 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateWhiteBalance()
     {
+        if (whiteBalanceArea == 0)
+        {
+            return;
+        }
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.WB_MODE));
-        if ((propetyValue != null)&&(whiteBalanceArea != 0))
+        if (propetyValue != null)
         {
             informationObject.setMessage(whiteBalanceArea, Color.WHITE, propetyValue);
         }
@@ -90,8 +106,12 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateBatteryLevel()
     {
+        if (batteryLevelArea == 0)
+        {
+            return;
+        }
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.BATTERY_LEVEL));
-        if ((propetyValue != null)&&(batteryLevelArea != 0))
+        if (propetyValue != null)
         {
             informationObject.setMessage(batteryLevelArea, Color.WHITE, propetyValue);
         }
@@ -104,8 +124,12 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateAeMode()
     {
+        if (aeModeArea == 0)
+        {
+            return;
+        }
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.AE_MODE));
-        if ((propetyValue != null)&&(aeModeArea != 0))
+        if (propetyValue != null)
         {
             informationObject.setMessage(aeModeArea, Color.WHITE, propetyValue);
         }
@@ -118,14 +142,23 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateAeLockState()
     {
+        if (aeLockStateArea == 0)
+        {
+            return;
+        }
+        String message = "";
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.AE_LOCK_STATE));
-        if ((propetyValue != null)&&(aeLockStateArea != 0))
+        if (propetyValue != null)
         {
             if (propetyValue.equals("LOCK"))
             {
-                informationObject.setMessage(aeLockStateArea, Color.WHITE, "AE-L");
+                message = "AE-L";
             }
         }
+        if (message.length() > 0)
+        {
+            informationObject.setMessage(aeLockStateArea, Color.WHITE, message);
+        }
     }
 
     /**
@@ -146,14 +179,47 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateWarning(String value)
     {
-        if((value != null)&&(warningArea != 0))
+        if (warningArea == 0)
+        {
+            return;
+        }
+        if(value != null)
         {
             {
-                informationObject.setMessage(warningArea, Color.argb(0, 255,204,0), value);
+                informationObject.setMessage(warningArea, Color.argb(255, 255,204,0), value);
             }
         }
     }
 
+    @Override
+    public void updateColorTone()
+    {
+        if (colorToneArea == 0)
+        {
+            return;
+        }
+        String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.COLOR_TONE));
+        if (propetyValue != null)
+        {
+            informationObject.setMessage(colorToneArea, Color.WHITE, propetyValue);
+        }
+    }
+
+
+    @Override
+    public void updateArtFilter()
+    {
+        if (artFilterArea == 0)
+        {
+            return;
+        }
+        String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.ART_FILTER));
+        if (propetyValue != null)
+        {
+            informationObject.setMessage(artFilterArea, Color.WHITE, /*Color.argb(255, 0x72, 0x39, 0x34),*/ propetyValue);
+        }
+    }
+
     /**
      *
      *
@@ -161,7 +227,11 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateExposureCompensation(String value)
     {
-        if((value != null)&&(exposureCompensationArea != 0))
+        if (exposureCompensationArea == 0)
+        {
+            return;
+        }
+        if (value != null)
         {
             if ("0.0".equals(value))
             {
@@ -181,7 +251,11 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateFocalLength(String value)
     {
-        if((value != null)&&(focalLengthArea != 0))
+        if (focalLengthArea == 0)
+        {
+            return;
+        }
+        if (value != null)
         {
             informationObject.setMessage(focalLengthArea, Color.WHITE, value);
         }
@@ -194,13 +268,17 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateIsoSensitivity(String value)
     {
+        if (isoSensitivityArea == 0)
+        {
+            return;
+        }
         String prefix = "ISO";
         String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.ISO_SENSITIVITY));
         if ("Auto".equals(propetyValue))
         {
             prefix = "iso";
         }
-        if((value != null)&&(isoSensitivityArea != 0))
+        if (value != null)
         {
             informationObject.setMessage(isoSensitivityArea, Color.WHITE, prefix + value);
         }
@@ -213,7 +291,11 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateShutterSpeed(String value)
     {
-        if((value != null)&&(shutterSpeedArea != 0))
+        if (shutterSpeedArea == 0)
+        {
+            return;
+        }
+        if (value != null)
         {
             informationObject.setMessage(shutterSpeedArea, Color.WHITE, value);
         }
@@ -226,12 +308,87 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     @Override
     public void updateAperture(String value)
     {
-        if((value != null)&&(apertureArea != 0))
+        if (apertureArea == 0)
+        {
+            return;
+        }
+        if (value != null)
         {
             informationObject.setMessage(apertureArea, Color.WHITE, "F" + value);
         }
     }
 
+
+    /**
+     *   撮影モードに合わせて、表示内容を変化させる...
+     *
+     */
+    private void updateDisplayArea(String takeMode)
+    {
+        switch (takeMode)
+        {
+            case "P":
+                colorToneArea = IShowInformation.AREA_8;
+                artFilterArea = 0;
+                updateColorTone();
+                break;
+
+            case "A":
+                colorToneArea = 0;
+                artFilterArea = 0;
+                informationObject.setMessage(IShowInformation.AREA_8, Color.WHITE, "");
+                break;
+
+            case "S":
+                colorToneArea = 0;
+                artFilterArea = 0;
+                informationObject.setMessage(IShowInformation.AREA_8, Color.WHITE, "");
+                break;
+
+            case "M":
+                colorToneArea = 0;
+                artFilterArea = 0;
+                informationObject.setMessage(IShowInformation.AREA_8, Color.WHITE, "");
+                break;
+
+            case "ART":
+                colorToneArea = 0;
+                artFilterArea = IShowInformation.AREA_8;
+                updateArtFilter();
+                break;
+
+            case "iAuto":
+                colorToneArea = 0;
+                artFilterArea = 0;
+                informationObject.setMessage(IShowInformation.AREA_8, Color.WHITE, "");
+                break;
+
+            case "movie":
+                colorToneArea = 0;
+                artFilterArea = 0;
+                informationObject.setMessage(IShowInformation.AREA_8, Color.WHITE, "");
+                break;
+
+            default:
+                takeModeArea = IShowInformation.AREA_1;                // 撮影モードの表示エリア指定
+                shutterSpeedArea = IShowInformation.AREA_2;           // シャッタースピードの表示エリア指定
+                apertureArea = IShowInformation.AREA_3;                // 絞り値の表示エリア指定
+                isoSensitivityArea = IShowInformation.AREA_4;         // ISO感度の表示エリア指定
+                focalLengthArea = 0;                                   // 焦点距離の表示エリア指定
+                exposureCompensationArea = IShowInformation.AREA_6;  // 露出補正値の表示エリア指定
+                warningArea = IShowInformation.AREA_7;                 // 警告の表示エリア指定
+                batteryLevelArea = 0;                                  // バッテリの残量表示エリア指定
+                whiteBalanceArea = 0;                                  // ホワイトバランスの表示エリア指定
+                driveModeArea = 0;                                     // ドライブモードの表示エリア指定
+                aeModeArea = 0;                                         // 測光モードの表示エリア指定
+                aeLockStateArea = IShowInformation.AREA_6;           // AEロック状態の表示エリア指定
+                colorToneArea = IShowInformation.AREA_8;              // 仕上がり・ピクチャーモードの表示エリア指定
+                artFilterArea = 0;                                     // アートフィルターの表示エリア指定
+                informationObject.setMessage(IShowInformation.AREA_8, Color.WHITE, "");
+                break;
+        }
+    }
+
     /**
      *
      *
@@ -241,4 +398,22 @@ class CameraStatusDisplay implements  ICameraStatusDisplay
     {
         //informationObject.setMessage(IShowInformation.AREA_4, Color.argb(0, 255,204,0), message);
     }
+
+    /**
+     *   すべてのステータスをまとめて更新する
+     *
+     */
+    @Override
+    public void updateCameraStatusAll()
+    {
+        updateTakeMode();
+
+        updateColorTone();
+        updateDriveMode();
+        updateWhiteBalance();
+        updateBatteryLevel();
+        updateAeMode();
+        updateAeLockState();
+        updateArtFilter();
+    }
 }
index 9a5cbd1..f40acb7 100644 (file)
@@ -12,7 +12,8 @@ public interface ICameraStatusDisplay
     void updateExposureCompensation(String value);
     void updateWarning(String value);
 
-
+    void updateColorTone();
+    void updateArtFilter();
     void updateTakeMode();
     void updateDriveMode();
     void updateWhiteBalance();
@@ -20,5 +21,6 @@ public interface ICameraStatusDisplay
     void updateAeMode();
     void updateAeLockState();
     void updateCameraStatus();
+    void updateCameraStatusAll();
     void updateCameraStatus(String message);
 }
index d99bfd2..e5a6460 100644 (file)
@@ -43,6 +43,9 @@ public interface IOlyCameraCoordinator
     /** カメラの状態変化リスナの設定 **/
     void setCameraStatusListener(OLYCameraStatusListener listener);
 
+    /** カメラ状態の表示をすべて更新する **/
+    void updateStatusAll();
+
     /** カメラの状態サマリ(のテキスト情報)を取得する **/
     String getCameraStatusSummary(ICameraStatusSummary decoder);
 
index 9a6175b..72b1e1e 100644 (file)
@@ -35,5 +35,6 @@ public interface IOlyCameraProperty
      String REC_PREVIEW = "RECVIEW";
 
     String COLOR_TONE = "COLORTONE";
+    String ART_FILTER = "RECENTLY_ART_FILTER";
 
 }
index 15d7fc5..db00f26 100644 (file)
@@ -310,6 +310,17 @@ public class OlyCameraCoordinator implements IOlyCameraCoordinator, IIndicatorCo
         return (decoder.getCameraStatusMessage(camera, ""));
     }
 
+    /**
+     *   ステータス表示をすべて更新する
+     *
+     */
+    @Override
+    public void updateStatusAll()
+    {
+        cameraStatusDisplay.updateCameraStatusAll();
+    }
+
+
     @Override
     public void changeRunMode(boolean isRecording)
     {