OSDN Git Service

とりあえず、カメラとの接続・切断シーケンスができた。
authorMRSa <mrsa@myad.jp>
Sun, 27 Aug 2017 14:35:53 +0000 (23:35 +0900)
committerMRSa <mrsa@myad.jp>
Sun, 27 Aug 2017 14:35:53 +0000 (23:35 +0900)
21 files changed:
app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/IOlympusInterfaceProvider.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/cameraproperty/CameraPropertyLoader.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/cameraproperty/CameraPropertyValueSelector.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/cameraproperty/OlyCameraPropertyListFragment.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraWrapper.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlympusInterfaceProvider.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ICameraStatusReceiver.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/IOlyCameraConnection.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/OlyCameraConnection.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/property/CameraPropertyUtilities.java [moved from app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/CameraPropertyUtilities.java with 95% similarity]
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/property/IOlyCameraProperty.java [moved from app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/IOlyCameraProperty.java with 69% similarity]
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/property/IOlyCameraPropertyProvider.java [moved from app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/IOlyCameraPropertyProvider.java with 95% similarity]
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/property/OlyCameraPropertyProxy.java [new file with mode: 0644]
app/src/main/java/net/osdn/gokigen/a01d/liveview/IStatusViewDrawer.java
app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewClickListener.java
app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java
app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceFragment.java
app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceSynchronizer.java
app/src/main/res/layout-land/fragment_live_view.xml
app/src/main/res/layout/fragment_live_view.xml

index 4a6dc17..e098bb9 100644 (file)
@@ -1,6 +1,7 @@
 package net.osdn.gokigen.a01d;
 
 import android.Manifest;
+import android.content.SharedPreferences;
 import android.content.pm.PackageManager;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.app.FragmentTransaction;
@@ -8,24 +9,32 @@ import android.support.v4.content.ContextCompat;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
+import android.support.v7.preference.PreferenceManager;
 import android.util.Log;
 import android.view.WindowManager;
 
 import net.osdn.gokigen.a01d.camera.olympus.IOlympusInterfaceProvider;
+import net.osdn.gokigen.a01d.camera.olympus.cameraproperty.OlyCameraPropertyListFragment;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.OlympusInterfaceProvider;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ICameraStatusReceiver;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection;
+import net.osdn.gokigen.a01d.liveview.IStatusViewDrawer;
 import net.osdn.gokigen.a01d.liveview.LiveViewFragment;
+import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor;
 import net.osdn.gokigen.a01d.preference.PreferenceFragment;
 
 /**
- *
+ *   A01d ;
  *
  */
 public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver, IChangeScene
 {
     private final String TAG = toString();
     private IOlympusInterfaceProvider interfaceProvider = null;
+    private IStatusViewDrawer statusViewDrawer = null;
+
+    private PreferenceFragment preferenceFragment = null;
+    private OlyCameraPropertyListFragment propertyListFragment = null;
 
     @Override
     protected void onCreate(Bundle savedInstanceState)
@@ -85,8 +94,11 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
      */
     private void onReadyClass()
     {
-
-
+        // 自動接続の支持があったとき
+        if (isAutoConnectCamera())
+        {
+            changeCameraConnection();
+        }
     }
 
     /**
@@ -96,6 +108,7 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
     private void initializeFragment()
     {
         LiveViewFragment fragment = new LiveViewFragment();
+        statusViewDrawer = fragment;
         fragment.prepare(this);
         fragment.setRetainInstance(true);
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
@@ -104,6 +117,27 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
     }
 
     /**
+     *
+     */
+    @Override
+    protected void onPause()
+    {
+        super.onPause();
+        try
+        {
+            IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
+            if (connection != null)
+            {
+                connection.stopWatchWifiStatus(this);
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    /**
      *   カメラのプロパティ一覧画面を開く
      *   (カメラと接続中のときのみ)
      *
@@ -111,7 +145,24 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
     @Override
     public void changeSceneToCameraPropertyList()
     {
-
+        IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
+        if (connection != null)
+        {
+            IOlyCameraConnection.CameraConnectionStatus status = connection.getConnectionStatus();
+            if (status == IOlyCameraConnection.CameraConnectionStatus.CONNECTED)
+            {
+                if (propertyListFragment == null)
+                {
+                    propertyListFragment = new OlyCameraPropertyListFragment();
+                }
+                propertyListFragment.setInterface(this, interfaceProvider.getCameraPropertyProvider());
+                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
+                transaction.replace(R.id.fragment1, propertyListFragment);
+                // backstackに追加
+                transaction.addToBackStack(null);
+                transaction.commit();
+            }
+        }
     }
 
     /**
@@ -121,14 +172,16 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
     @Override
     public void changeSceneToConfiguration()
     {
-        PreferenceFragment fragment = new PreferenceFragment();
-        fragment.setInterface(this, interfaceProvider, this);
+        if (preferenceFragment == null)
+        {
+            preferenceFragment = new PreferenceFragment();
+        }
+        preferenceFragment.setInterface(this, interfaceProvider, this);
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
-        transaction.replace(R.id.fragment1, fragment);
+        transaction.replace(R.id.fragment1, preferenceFragment);
         // backstackに追加
         transaction.addToBackStack(null);
         transaction.commit();
-
     }
 
     /**
@@ -150,10 +203,11 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
             IOlyCameraConnection.CameraConnectionStatus status = connection.getConnectionStatus();
             if (status == IOlyCameraConnection.CameraConnectionStatus.CONNECTED)
             {
-                //
+                // 接続中のときには切断する
                 connection.disconnect(false);
                 return;
             }
+            // 接続中でない時は、接続中にする
             connection.startWatchWifiStatus(this);
         }
     }
@@ -181,44 +235,94 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
         }
     }
 
+    /**
+     *
+     *
+     */
     @Override
     public void onStatusNotify(String message)
     {
         Log.v(TAG, " CONNECTION MESSAGE : " + message);
+        if (statusViewDrawer != null)
+        {
+            statusViewDrawer.updateStatusView(message);
+            IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
+            if (connection != null)
+            {
+                statusViewDrawer.updateConnectionStatus(connection.getConnectionStatus());
+            }
+        }
     }
 
-
+    /**
+     *
+     *
+     */
     @Override
     public void onCameraConnected()
     {
         Log.v(TAG, "onCameraConnected()");
 
-        IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
-        if (connection != null)
+        try {
+            IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
+            if (connection != null)
+            {
+                // クラス構造をミスった...のでこんなところで、無理やりステータスを更新する
+                connection.forceUpdateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus.CONNECTED);
+            }
+            if (statusViewDrawer != null)
+            {
+                statusViewDrawer.updateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus.CONNECTED);
+            }
+        }
+        catch (Exception e)
         {
-            // クラス構造をミスった...のでこんなところで、無理やりステータスを更新する
-            connection.forceUpdateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus.CONNECTED);
+            e.printStackTrace();
         }
-
     }
 
+    /**
+     *
+     *
+     */
     @Override
     public void onCameraDisconnected()
     {
         Log.v(TAG, "onCameraDisconnected()");
+        if (statusViewDrawer != null)
+        {
+            statusViewDrawer.updateStatusView(getString(R.string.camera_disconnected));
+            statusViewDrawer.updateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus.DISCONNECTED);
+        }
 
     }
 
+    /**
+     *
+     *
+     */
     @Override
     public void onCameraOccursException(String message, Exception e)
     {
         Log.v(TAG, "onCameraOccursException() " + message);
-
+        IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
+        if (connection != null)
+        {
+            connection.alertConnectingFailed(message + " " + e.getLocalizedMessage());
+        }
+        if (statusViewDrawer != null)
+        {
+            statusViewDrawer.updateStatusView(message);
+            if (connection != null)
+            {
+                statusViewDrawer.updateConnectionStatus(connection.getConnectionStatus());
+            }
+        }
     }
 
-    @Override
-    public boolean isAutoConnectCamera()
+    private boolean isAutoConnectCamera()
     {
-        return  (true);
+        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+        return (preferences.getBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true));
     }
 }
index 02c752a..dd635cb 100644 (file)
@@ -2,7 +2,7 @@ package net.osdn.gokigen.a01d.camera.olympus;
 
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraHardwareStatus;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraRunMode;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection;
 
 /**
index d0e5240..e78913c 100644 (file)
@@ -4,7 +4,7 @@ package net.osdn.gokigen.a01d.camera.olympus.cameraproperty;
 import android.util.Log;
 
 import net.osdn.gokigen.a01d.R;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
 
 import java.util.ArrayList;
 import java.util.Collections;
index 468afc3..f54530d 100644 (file)
@@ -11,7 +11,7 @@ import android.widget.AdapterView;
 import android.widget.ListView;
 
 import net.osdn.gokigen.a01d.R;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
 
 import java.util.List;
 
index 889f858..216d5de 100644 (file)
@@ -20,7 +20,7 @@ import android.widget.ListView;
 import java.util.HashMap;
 
 import net.osdn.gokigen.a01d.R;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
 
 public class OlyCameraPropertyListFragment extends Fragment implements CameraPropertyLoader.IPropertyLoaderCallback
 {
index 5849b17..e206a20 100644 (file)
@@ -1,6 +1,7 @@
 package net.osdn.gokigen.a01d.camera.olympus.wrapper;
 
 import android.app.Activity;
+import android.util.Log;
 
 import jp.co.olympus.camerakit.OLYCamera;
 
@@ -8,14 +9,15 @@ import jp.co.olympus.camerakit.OLYCamera;
  *
  *
  */
-class OlyCameraWrapper
+class OlyCameraWrapper implements ICameraRunMode
 {
-    private final Activity context;
+    private final String TAG = toString();
+    //private final Activity context;
     private final OLYCamera camera;
 
     OlyCameraWrapper(Activity context)
     {
-        this.context = context;
+        //this.context = context;
         camera = new OLYCamera();
         camera.setContext(context.getApplicationContext());
     }
@@ -25,4 +27,34 @@ class OlyCameraWrapper
         return (camera);
     }
 
+    @Override
+    public void changeRunMode(boolean isRecording)
+    {
+        OLYCamera.RunMode runMode = (isRecording) ? OLYCamera.RunMode.Recording : OLYCamera.RunMode.Playback;
+        Log.v(TAG, "changeRunMode() : " + runMode);
+        try
+        {
+            camera.changeRunMode(runMode);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public boolean isRecordingMode()
+    {
+        boolean isRecordingMode = false;
+        try
+        {
+            OLYCamera.RunMode runMode = camera.getRunMode();
+            isRecordingMode =  (runMode == OLYCamera.RunMode.Recording);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (isRecordingMode);
+    }
 }
index 2783262..370ba61 100644 (file)
@@ -6,6 +6,8 @@ import net.osdn.gokigen.a01d.camera.olympus.IOlympusInterfaceProvider;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ICameraStatusReceiver;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.OlyCameraConnection;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.OlyCameraPropertyProxy;
 
 
 /**
@@ -16,11 +18,13 @@ public class OlympusInterfaceProvider implements IOlympusInterfaceProvider
 {
     private final OlyCameraWrapper wrapper;
     private final OlyCameraConnection connection;
+    private final OlyCameraPropertyProxy propertyProxy;
 
     public OlympusInterfaceProvider(Activity context, ICameraStatusReceiver provider)
     {
         this.wrapper = new OlyCameraWrapper(context);
         this.connection = new OlyCameraConnection(context, this.wrapper.getOLYCamera(), provider);
+        this.propertyProxy = new OlyCameraPropertyProxy(this.wrapper.getOLYCamera());
 
     }
 
@@ -39,7 +43,7 @@ public class OlympusInterfaceProvider implements IOlympusInterfaceProvider
     @Override
     public IOlyCameraPropertyProvider getCameraPropertyProvider()
     {
-        return null;
+        return (propertyProxy);
     }
 
     @Override
index 03faf8e..79feab8 100644 (file)
@@ -10,6 +10,4 @@ public interface ICameraStatusReceiver
     void onCameraConnected();
     void onCameraDisconnected();
     void onCameraOccursException(String message, Exception e);
-
-    boolean isAutoConnectCamera();
 }
index 22b3a60..043601c 100644 (file)
@@ -24,6 +24,8 @@ public interface IOlyCameraConnection
     void disconnect(final boolean powerOff);
     void connect();
 
+    void alertConnectingFailed(String message);
+
     /** 接続状態 **/
     CameraConnectionStatus getConnectionStatus();
     void forceUpdateConnectionStatus(CameraConnectionStatus status);
index b84bcd3..3538481 100644 (file)
@@ -101,15 +101,14 @@ public class OlyCameraConnection implements IOlyCameraConnection, OLYCameraConne
         String action = intent.getAction();
         if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION))
         {
+            Log.v(TAG,"onReceiveBroadcastOfConnection() : CONNECTIVITY_ACTION");
+
             WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
             WifiInfo info = wifiManager.getConnectionInfo();
             if (wifiManager.isWifiEnabled() && info != null && info.getNetworkId() != -1)
             {
                 // 自動接続が指示されていた場合は、カメラとの接続処理を行う
-                if (statusReceiver.isAutoConnectCamera())
-                {
-                    connectToCamera();
-                }
+                connectToCamera();
             }
         }
     }
@@ -189,6 +188,7 @@ public class OlyCameraConnection implements IOlyCameraConnection, OLYCameraConne
     @Override
     public void onDisconnectedByError(OLYCamera camera, OLYCameraKitException e)
     {
+        Log.v(TAG, "onDisconnectedByError()");
         connectionStatus = CameraConnectionStatus.DISCONNECTED;
 
         // カメラが切れた時に通知する
@@ -233,7 +233,8 @@ public class OlyCameraConnection implements IOlyCameraConnection, OLYCameraConne
      *
      * @param message 表示用のメッセージ
      */
-    private void alertConnectingFailed(String message)
+    @Override
+    public void alertConnectingFailed(String message)
     {
         final AlertDialog.Builder builder = new AlertDialog.Builder(context)
                 .setTitle(context.getString(R.string.dialog_title_connect_failed))
@@ -1,4 +1,4 @@
-package net.osdn.gokigen.a01d.camera.olympus.wrapper;
+package net.osdn.gokigen.a01d.camera.olympus.wrapper.property;
 
 /**
  *   使用するカメラプロパティのキー一覧
@@ -11,6 +11,9 @@ public interface IOlyCameraProperty
     String SOUND_VOLUME_LEVEL = "SOUND_VOLUME_LEVEL";
     String RAW = "RAW";
 
+    String FOCUS_STILL = "FOCUS_STILL";
+    String AE_LOCK_STATE = "AE_LOCK_STATE";
+
     //String TAKE_MODE_MOVIE = "<TAKEMODE/movie>";
     //String DRIVE_MODE_SINGLE = "<TAKE_DRIVE/DRIVE_NORMAL>";
 }
diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/property/OlyCameraPropertyProxy.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/property/OlyCameraPropertyProxy.java
new file mode 100644 (file)
index 0000000..5681061
--- /dev/null
@@ -0,0 +1,193 @@
+package net.osdn.gokigen.a01d.camera.olympus.wrapper.property;
+
+import android.util.Log;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import jp.co.olympus.camerakit.OLYCamera;
+
+/**
+ *   カメラプロパティをやり取りするクラス (Wrapperクラス)
+ */
+public class OlyCameraPropertyProxy implements IOlyCameraPropertyProvider
+{
+    private final String TAG = toString();
+    private final OLYCamera camera;
+
+    /**
+     *   コンストラクタ
+     *
+     * @param camera OLYCameraクラス
+     */
+    public OlyCameraPropertyProxy(OLYCamera camera)
+    {
+        this.camera = camera;
+    }
+
+    /**
+     *  フォーカス状態を知る(MF or AF)
+     * @return true : MF / false : AF
+     */
+    boolean isManualFocus()
+    {
+        boolean isManualFocus = false;
+        try
+        {
+            String value = camera.getCameraPropertyValue(IOlyCameraProperty.FOCUS_STILL);
+            Log.v(TAG, "OlyCameraPropertyProxy::isManualFocus() " + value);
+            isManualFocus = !(value.contains("AF"));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (isManualFocus);
+    }
+
+    /**
+     *  AE ロック状態を知る
+     *
+     * @return true : AE Lock / false : AE Unlock
+     */
+    boolean isExposureLocked()
+    {
+        boolean isExposureLocked =false;
+        try
+        {
+            String value = camera.getCameraPropertyValue(IOlyCameraProperty.AE_LOCK_STATE);
+            Log.v(TAG, "OlyCameraPropertyProxy::isExposureLocked() " + value);
+            isExposureLocked = !(value.contains("UNLOCK"));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (isExposureLocked);
+    }
+
+    @Override
+    public Set<String> getCameraPropertyNames()
+    {
+        try
+        {
+            return (camera.getCameraPropertyNames());
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public String getCameraPropertyValue(String name)
+    {
+        try
+        {
+            return (camera.getCameraPropertyValue(name));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public Map<String, String> getCameraPropertyValues(Set<String> names)
+    {
+        try
+        {
+            return (camera.getCameraPropertyValues(names));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public String getCameraPropertyTitle(String name)
+    {
+        try
+        {
+            return (camera.getCameraPropertyTitle(name));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public List<String> getCameraPropertyValueList(String name)
+    {
+        try
+        {
+            return (camera.getCameraPropertyValueList(name));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public String getCameraPropertyValueTitle(String propertyValue)
+    {
+        try
+        {
+            return (camera.getCameraPropertyValueTitle(propertyValue));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (null);
+    }
+
+    @Override
+    public void setCameraPropertyValue(String name, String value)
+    {
+        try
+        {
+            camera.setCameraPropertyValue(name, value);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void setCameraPropertyValues(Map<String, String> values)
+    {
+        try
+        {
+            camera.setCameraPropertyValues(values);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public boolean canSetCameraProperty(String name)
+    {
+        try
+        {
+            return (camera.canSetCameraProperty(name));
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
+}
index 1b23efd..29f96c4 100644 (file)
@@ -1,9 +1,12 @@
 package net.osdn.gokigen.a01d.liveview;
 
-interface IStatusViewDrawer
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection;
+
+public interface IStatusViewDrawer
 {
     void updateGridIcon();
-    void updateConnectionStatus();
+    void updateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus connectionStatus);
+    void updateStatusView(String message);
     /*
     void updateStatusView(String message);
     void updateFocusAssistStatus();
index 4edf831..5cc2df5 100644 (file)
@@ -10,7 +10,6 @@ import net.osdn.gokigen.a01d.R;
  *
  *
  */
-
 class LiveViewClickListener implements View.OnClickListener
 {
     final String TAG = toString();
index e5a250f..fcff125 100644 (file)
@@ -18,6 +18,7 @@ import android.widget.TextView;
 
 import net.osdn.gokigen.a01d.IChangeScene;
 import net.osdn.gokigen.a01d.R;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection;
 import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor;
 
 import java.io.File;
@@ -201,7 +202,7 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer
 
            connectStatus = view.findViewById(R.id.connect_disconnect_button);
            connectStatus.setOnClickListener(onClickListener);
-           updateConnectionStatus();
+           updateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus.UNKNOWN);
 
            statusArea = view.findViewById(R.id.informationMessageTextView);
        }
@@ -226,11 +227,19 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer
      *
      */
     @Override
-    public void updateConnectionStatus()
+    public void updateConnectionStatus(IOlyCameraConnection.CameraConnectionStatus connectionStatus)
     {
         try
         {
             int id = R.drawable.ic_cloud_off_black_24dp;
+            if (connectionStatus == IOlyCameraConnection.CameraConnectionStatus.CONNECTING)
+            {
+                id = R.drawable.ic_cloud_queue_black_24dp;
+            }
+            else if  (connectionStatus == IOlyCameraConnection.CameraConnectionStatus.CONNECTED)
+            {
+                id = R.drawable.ic_cloud_done_black_24dp;
+            }
             connectStatus.setImageDrawable(ResourcesCompat.getDrawable(getResources(), id, null));
             connectStatus.invalidate();
             imageView.invalidate();
@@ -685,6 +694,7 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer
      *   表示エリアに文字を表示する
      *
      */
+    @Override
     public void updateStatusView(String message)
     {
         messageValue = message;
@@ -760,7 +770,6 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer
     }
 */
 
-
     private void runOnUiThread(Runnable action)
     {
         Activity activity = getActivity();
index 5e16308..c1e3e98 100644 (file)
@@ -16,8 +16,8 @@ import net.osdn.gokigen.a01d.IChangeScene;
 import net.osdn.gokigen.a01d.R;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraHardwareStatus;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraRunMode;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraProperty;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraProperty;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
 import net.osdn.gokigen.a01d.camera.olympus.IOlympusInterfaceProvider;
 import net.osdn.gokigen.a01d.camera.olympus.operation.CameraPowerOff;
 
index 1832877..953416e 100644 (file)
@@ -3,9 +3,9 @@ package net.osdn.gokigen.a01d.preference;
 import android.content.SharedPreferences;
 import android.util.Log;
 
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraProperty;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlyCameraPropertyProvider;
-import net.osdn.gokigen.a01d.camera.olympus.wrapper.CameraPropertyUtilities;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraProperty;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider;
+import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.CameraPropertyUtilities;
 
 class PreferenceSynchronizer implements Runnable
 {
index 64871dd..7802827 100644 (file)
@@ -95,7 +95,7 @@
             android:gravity="start"
             android:text="@string/information"
             android:textColor="@color/background_translucent_dark"
-            android:textSize="12pt" />
+            android:textSize="9pt" />
 
         <ImageButton
             android:id="@+id/camera_property_settings_button"
index f2d1db8..f5bfcae 100644 (file)
@@ -98,7 +98,7 @@
             android:gravity="start"
             android:text="@string/information"
             android:textColor="@color/background_translucent_dark"
-            android:textSize="12pt" />
+            android:textSize="9pt" />
 
         <ImageButton
             android:id="@+id/camera_property_settings_button"