OSDN Git Service

Wifi設定をPreferenceから出せるようにした。Nikonの接続シーケンスまで確認。
authorMRSa <mrsa@myad.jp>
Sat, 16 Nov 2019 10:04:26 +0000 (19:04 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 16 Nov 2019 10:04:26 +0000 (19:04 +0900)
23 files changed:
app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/nikon/wrapper/playback/NikonImageObjectReceiver.java
app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/nikon/wrapper/playback/NikonPlaybackControl.java
app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/connection/NikonCameraConnectSequenceForPlayback.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/IPreferencePropertyAccessor.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/canon/CanonPreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/fujix/FujiXPreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/nikon/NikonPreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/olympus/OpcPreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/olympuspen/OlympusPenPreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/panasonic/PanasonicPreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/ricohgr2/RicohGr2PreferenceFragment.java
app/src/main/java/net/osdn/gokigen/pkremote/preference/sony/SonyPreferenceFragment.java
app/src/main/res/values-ja/strings.xml
app/src/main/res/values/strings.xml
app/src/main/res/xml/preferences_canon.xml
app/src/main/res/xml/preferences_fuji_x.xml
app/src/main/res/xml/preferences_nikon.xml
app/src/main/res/xml/preferences_olympus.xml
app/src/main/res/xml/preferences_opc.xml
app/src/main/res/xml/preferences_panasonic.xml
app/src/main/res/xml/preferences_ricoh_gr2.xml
app/src/main/res/xml/preferences_sony.xml
build.gradle

index 30acdda..48a6f91 100644 (file)
@@ -5,6 +5,7 @@ import android.util.Log;
 import net.osdn.gokigen.pkremote.camera.interfaces.control.ICameraConnection;
 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContent;
 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentListCallback;
+import net.osdn.gokigen.pkremote.camera.utils.SimpleLogDumper;
 import net.osdn.gokigen.pkremote.camera.vendor.nikon.wrapper.NikonInterfaceProvider;
 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.IPtpIpCommandCallback;
 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.IPtpIpCommandPublisher;
@@ -24,20 +25,30 @@ public class NikonImageObjectReceiver implements IPtpIpCommandCallback
 {
     private final String TAG = toString();
     private final NikonInterfaceProvider provider;
-    private boolean isDumpLog = false;
+    private boolean isDumpLog = true;
     private List<ICameraContent> imageObjectList;
     private List<PtpIpImageContentInfo> ptpIpImageObjectList;
     private ICameraContentListCallback callback = null;
     private int subDirectoriesCount = -1;
     private int receivedSubDirectoriesCount = -1;
+    private List<Integer> storageIdList;
 
     NikonImageObjectReceiver(NikonInterfaceProvider provider)
     {
         this.provider = provider;
         this.imageObjectList = new ArrayList<>();
         this.ptpIpImageObjectList = new ArrayList<>();
+
+        this.storageIdList = new ArrayList<>();
+    }
+
+    private void parseStorageId(byte[] rx_body)
+    {
+        storageIdList.clear();
+        SimpleLogDumper.dump_bytes(" [GetStorageIds] ", rx_body);
     }
 
+
     @Override
     public void receivedMessage(int id, byte[] rx_body)
     {
@@ -49,6 +60,7 @@ public class NikonImageObjectReceiver implements IPtpIpCommandCallback
             {
                 case GET_STORAGE_ID:
                     // TODO: ストレージのIDを 0x00100010 で固定にしている。複数スロットある場合もあるので、このタイミングでちゃんと応答を parse してループさせる必要がある
+                    parseStorageId(rx_body);
                     publisher.enqueueCommand(new PtpIpCommandGeneric(this, GET_STORAGE_INFO, isDumpLog,  0, 0x9102, 4, 0x00010001));
                     subDirectoriesCount = -1;  // ここから画像取得シーケンスに入るので、、、
                     break;
@@ -203,7 +215,8 @@ public class NikonImageObjectReceiver implements IPtpIpCommandCallback
                 // オブジェクト一覧をクリアする
                 this.imageObjectList.clear();
                 this.ptpIpImageObjectList.clear();
-                publisher.enqueueCommand(new PtpIpCommandGeneric(this, GET_STORAGE_ID, isDumpLog, 0, 0x9101));
+
+                publisher.enqueueCommand(new PtpIpCommandGeneric(this, GET_STORAGE_ID, isDumpLog, 0, 0x1004));  // GetStorageIDs
                 this.callback = callback;
             }
         }
index 823d925..bbe73de 100644 (file)
@@ -38,9 +38,9 @@ public class NikonPlaybackControl implements IPlaybackControl
     private final NikonInterfaceProvider provider;
     private final PtpIpFullImageReceiver fullImageReceiver;
     private final PtpIpSmallImageReceiver smallImageReciever;
-    private String raw_suffix = "CR2";
+    private String raw_suffix = "NEF";
     private boolean use_screennail_image = false;
-    private NikonImageObjectReceiver canonImageObjectReceiver;
+    private NikonImageObjectReceiver nikonImageObjectReceiver;
 
     public NikonPlaybackControl(Activity activity, NikonInterfaceProvider provider)
     {
@@ -48,7 +48,7 @@ public class NikonPlaybackControl implements IPlaybackControl
         this.provider = provider;
         this.fullImageReceiver = new PtpIpFullImageReceiver(activity, provider.getCommandPublisher());
         this.smallImageReciever = new PtpIpSmallImageReceiver(activity, provider.getCommandPublisher());
-        canonImageObjectReceiver = new NikonImageObjectReceiver(provider);
+        nikonImageObjectReceiver = new NikonImageObjectReceiver(provider);
 
         try
         {
@@ -107,7 +107,7 @@ public class NikonPlaybackControl implements IPlaybackControl
                 start = 1;
             }
             final String indexStr = path.substring(start);
-            PtpIpImageContentInfo content = canonImageObjectReceiver.getContentObject(indexStr);
+            PtpIpImageContentInfo content = nikonImageObjectReceiver.getContentObject(indexStr);
             if (content != null)
             {
                 IPtpIpCommandPublisher publisher = provider.getCommandPublisher();
@@ -147,7 +147,7 @@ public class NikonPlaybackControl implements IPlaybackControl
             final String indexStr = path.substring(start);
             //Log.v(TAG, "downloadContentThumbnail() : [" + path + "] " + indexStr);
 
-            PtpIpImageContentInfo content = canonImageObjectReceiver.getContentObject(indexStr);
+            PtpIpImageContentInfo content = nikonImageObjectReceiver.getContentObject(indexStr);
             if (content != null)
             {
                 IPtpIpCommandPublisher publisher = provider.getCommandPublisher();
@@ -174,7 +174,7 @@ public class NikonPlaybackControl implements IPlaybackControl
                 start = 1;
             }
             final String indexStr = path.substring(start);
-            PtpIpImageContentInfo content = canonImageObjectReceiver.getContentObject(indexStr);
+            PtpIpImageContentInfo content = nikonImageObjectReceiver.getContentObject(indexStr);
             if (content != null)
             {
                 if (isSmallSize)
@@ -208,7 +208,7 @@ public class NikonPlaybackControl implements IPlaybackControl
             Thread thread = new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    canonImageObjectReceiver.getCameraContents(callback);
+                    nikonImageObjectReceiver.getCameraContents(callback);
                 }
             });
             thread.start();
index 7dba88a..b39ec0f 100644 (file)
@@ -113,7 +113,7 @@ public class NikonCameraConnectSequenceForPlayback implements Runnable, IPtpIpCo
                 if (checkEventInitialize(rx_body))
                 {
                     interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting1), false, false, 0);
-                    commandIssuer.enqueueCommand(new PtpIpCommandGeneric(this, SEQ_OPEN_SESSION, isDumpLog, 0, 0x1002, 4, 0x41));
+                    commandIssuer.enqueueCommand(new PtpIpCommandGeneric(this, SEQ_OPEN_SESSION, isDumpLog, 0, 0x1002, 4, 0x41));  // OpenSession
                 }
                 else
                 {
@@ -123,20 +123,14 @@ public class NikonCameraConnectSequenceForPlayback implements Runnable, IPtpIpCo
 
             case SEQ_OPEN_SESSION:
                 interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting2), false, false, 0);
-                commandIssuer.enqueueCommand(new PtpIpCommandGeneric(this, SEQ_INIT_SESSION, isDumpLog, 0, 0x902f));
+                commandIssuer.enqueueCommand(new PtpIpCommandGeneric(this, SEQ_INIT_SESSION, isDumpLog, 0, 0x1001));  // GetDeviceInfo
                 break;
 
             case SEQ_INIT_SESSION:
-                interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting3), false, false, 0);
-                commandIssuer.enqueueCommand(new PtpIpCommandGeneric(this, SEQ_CHANGE_REMOTE, isDumpLog, 0, 0x9114, 4, 0x15));
-                break;
-
             case SEQ_CHANGE_REMOTE:
-                interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting4), false, false, 0);
-                commandIssuer.enqueueCommand(new PtpIpCommandGeneric(this, SEQ_SET_EVENT_MODE, isDumpLog, 0, 0x902f, 4, 0x02));
-                break;
-
             case SEQ_SET_EVENT_MODE:
+                interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting3), false, false, 0);
+                interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting4), false, false, 0);
                 interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.canon_connect_connecting5), false, false, 0);
                 interfaceProvider.getInformationReceiver().updateMessage(context.getString(R.string.connect_connect_finished), false, false, 0);
                 connectFinished();
index 46f9853..6b0d33e 100644 (file)
@@ -11,9 +11,13 @@ public interface IPreferencePropertyAccessor
 
     String AUTO_CONNECT_TO_CAMERA = "auto_connect_to_camera";
 
+    String DEBUG_INFO = "debug_info";
+
     String BLE_POWER_ON = "ble_power_on";
     String BLE_WIFI_ON = "ble_wifi_on";
 
+    String WIFI_SETTINGS = "wifi_settings";
+
     String TAKE_MODE =  "take_mode";
     String TAKE_MODE_DEFAULT_VALUE =  "P";
 
index 41a717a..0de5ff1 100644 (file)
@@ -1,8 +1,10 @@
 package net.osdn.gokigen.pkremote.preference.canon;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import java.util.Map;
@@ -22,13 +24,18 @@ import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
 import net.osdn.gokigen.pkremote.scene.IChangeScene;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *
  *
  */
-public class CanonPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+public class CanonPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private PtpIpCameraPowerOff powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -64,6 +71,8 @@ public class CanonPreferenceFragment  extends PreferenceFragmentCompat implement
 
             logCatViewer = new LogCatViewer(changeScene);
             logCatViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -190,8 +199,9 @@ public class CanonPreferenceFragment  extends PreferenceFragmentCompat implement
             });
             connectionMethod.setSummary(connectionMethod.getValue() + " ");
 
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
         }
         catch (Exception e)
         {
@@ -318,4 +328,28 @@ public class CanonPreferenceFragment  extends PreferenceFragmentCompat implement
             });
         }
     }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index 29defe9..ca6df77 100644 (file)
@@ -1,8 +1,10 @@
 package net.osdn.gokigen.pkremote.preference.fujix;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import java.util.Map;
@@ -22,13 +24,18 @@ import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
 import net.osdn.gokigen.pkremote.scene.IChangeScene;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *
  *
  */
-public class FujiXPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+public class FujiXPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private CameraPowerOffFujiX powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -64,6 +71,8 @@ public class FujiXPreferenceFragment  extends PreferenceFragmentCompat implement
 
             logCatViewer = new LogCatViewer(changeScene);
             logCatViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -204,9 +213,10 @@ public class FujiXPreferenceFragment  extends PreferenceFragmentCompat implement
             });
             connectionMethod.setSummary(connectionMethod.getValue() + " ");
 
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
-    }
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
+        }
         catch (Exception e)
         {
             e.printStackTrace();
@@ -337,4 +347,27 @@ public class FujiXPreferenceFragment  extends PreferenceFragmentCompat implement
         }
     }
 
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index caf9992..367183b 100644 (file)
@@ -1,8 +1,10 @@
 package net.osdn.gokigen.pkremote.preference.nikon;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import java.util.Map;
@@ -22,13 +24,18 @@ import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
 import net.osdn.gokigen.pkremote.scene.IChangeScene;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *
  *
  */
-public class NikonPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+public class NikonPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private PtpIpCameraPowerOff powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -64,6 +71,8 @@ public class NikonPreferenceFragment  extends PreferenceFragmentCompat implement
 
             logCatViewer = new LogCatViewer(changeScene);
             logCatViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -190,8 +199,9 @@ public class NikonPreferenceFragment  extends PreferenceFragmentCompat implement
             });
             connectionMethod.setSummary(connectionMethod.getValue() + " ");
 
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
         }
         catch (Exception e)
         {
@@ -311,7 +321,6 @@ public class NikonPreferenceFragment  extends PreferenceFragmentCompat implement
                         // Preferenceの画面に反映させる
                         setBooleanPreference(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
                         setBooleanPreference(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true);
-
                         setBooleanPreference(IPreferencePropertyAccessor.BLE_WIFI_ON, IPreferencePropertyAccessor.BLE_WIFI_ON, false);
                     }
                     catch (Exception e)
@@ -323,4 +332,27 @@ public class NikonPreferenceFragment  extends PreferenceFragmentCompat implement
         }
     }
 
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index 1c5b66e..4523704 100644 (file)
@@ -3,8 +3,10 @@ package net.osdn.gokigen.pkremote.preference.olympus;
 
 import android.app.ProgressDialog;
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import net.osdn.gokigen.pkremote.R;
@@ -32,13 +34,18 @@ import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceManager;
 import jp.co.olympus.camerakit.OLYCamera;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *   SettingFragment
  *
  */
-public class OpcPreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, OpcPreferenceSynchronizer.IPropertySynchronizeCallback
+public class OpcPreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, OpcPreferenceSynchronizer.IPropertySynchronizeCallback, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private IOlyCameraPropertyProvider propertyInterface = null;
     private ICameraHardwareStatus hardwareStatusInterface = null;
     private ICameraRunMode changeRunModeExecutor = null;
@@ -77,6 +84,8 @@ public class OpcPreferenceFragment extends PreferenceFragmentCompat implements S
         powerOffController.prepare();
         logCatViewer = new LogCatViewer(changeScene);
         logCatViewer.prepare();
+
+        this.context = context;
     }
 
     /**
@@ -212,8 +221,9 @@ public class OpcPreferenceFragment extends PreferenceFragmentCompat implements S
             });
             smallPictureSize.setSummary(smallPictureSize.getValue() + " ");
         }
-        findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-        findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+        findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+        findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+        findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
     }
 
     /**
@@ -504,4 +514,28 @@ public class OpcPreferenceFragment extends PreferenceFragmentCompat implements S
             }
         });
     }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index 9d49d2d..299260f 100644 (file)
@@ -1,8 +1,10 @@
 package net.osdn.gokigen.pkremote.preference.olympuspen;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import java.util.Map;
@@ -22,13 +24,18 @@ import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
 import net.osdn.gokigen.pkremote.scene.IChangeScene;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *
  *
  */
-public class OlympusPenPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+public class OlympusPenPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private OlympusPenCameraPowerOff powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -64,6 +71,8 @@ public class OlympusPenPreferenceFragment  extends PreferenceFragmentCompat impl
 
             logCatViewer = new LogCatViewer(changeScene);
             logCatViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -200,8 +209,9 @@ public class OlympusPenPreferenceFragment  extends PreferenceFragmentCompat impl
             });
             smallPictureSize.setSummary(smallPictureSize.getValue() + " ");
 
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
         }
         catch (Exception e)
         {
@@ -332,4 +342,27 @@ public class OlympusPenPreferenceFragment  extends PreferenceFragmentCompat impl
         }
     }
 
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index d17145b..8d2f989 100644 (file)
@@ -1,8 +1,10 @@
 package net.osdn.gokigen.pkremote.preference.panasonic;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import androidx.annotation.NonNull;
@@ -22,13 +24,18 @@ import net.osdn.gokigen.pkremote.scene.IChangeScene;
 
 import java.util.Map;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *
  *
  */
-public class PanasonicPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+public class PanasonicPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private CameraPowerOffPanasonic powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -68,6 +75,8 @@ public class PanasonicPreferenceFragment  extends PreferenceFragmentCompat imple
 
             //cameraApiListViewer = new PanasonicCameraApiListViewer(changeScene);
             //cameraApiListViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -183,8 +192,9 @@ public class PanasonicPreferenceFragment  extends PreferenceFragmentCompat imple
             });
             connectionMethod.setSummary(connectionMethod.getValue() + " ");
 
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
             //findPreference("panasonic_api_list").setOnPreferenceClickListener(cameraApiListViewer);
         }
         catch (Exception e)
@@ -316,4 +326,27 @@ public class PanasonicPreferenceFragment  extends PreferenceFragmentCompat imple
         }
     }
 
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index eb05b91..19e3e2f 100644 (file)
@@ -1,9 +1,11 @@
 package net.osdn.gokigen.pkremote.preference.ricohgr2;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 
+import android.provider.Settings;
 import android.util.Log;
 
 import net.osdn.gokigen.pkremote.R;
@@ -23,9 +25,14 @@ import androidx.preference.Preference;
 import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceManager;
 
-public class RicohGr2PreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
+public class RicohGr2PreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private CameraPowerOffRicohGr2 powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -61,6 +68,8 @@ public class RicohGr2PreferenceFragment  extends PreferenceFragmentCompat implem
 
             logCatViewer = new LogCatViewer(changeScene);
             logCatViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -242,8 +251,9 @@ public class RicohGr2PreferenceFragment  extends PreferenceFragmentCompat implem
             });
             smallPictureSize.setSummary(smallPictureSize.getValue() + " ");
 */
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
         }
         catch (Exception e)
         {
@@ -376,4 +386,28 @@ public class RicohGr2PreferenceFragment  extends PreferenceFragmentCompat implem
             });
         }
     }
+
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index 3f4e7bc..24384fb 100644 (file)
@@ -1,8 +1,10 @@
 package net.osdn.gokigen.pkremote.preference.sony;
 
 import android.content.Context;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.util.Log;
 
 import java.util.Map;
@@ -23,13 +25,18 @@ import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
 import net.osdn.gokigen.pkremote.scene.IChangeScene;
 
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.DEBUG_INFO;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.EXIT_APPLICATION;
+import static net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor.WIFI_SETTINGS;
+
 /**
  *
  *
  */
-public class SonyPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener
+public class SonyPreferenceFragment  extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener, Preference.OnPreferenceClickListener
 {
     private final String TAG = toString();
+    private AppCompatActivity context = null;
     private SharedPreferences preferences = null;
     private CameraPowerOffSony powerOffController = null;
     private LogCatViewer logCatViewer = null;
@@ -70,6 +77,8 @@ public class SonyPreferenceFragment  extends PreferenceFragmentCompat implements
 
             cameraApiListViewer = new SonyCameraApiListViewer(changeScene);
             cameraApiListViewer.prepare();
+
+            this.context = context;
         }
         catch (Exception e)
         {
@@ -201,8 +210,9 @@ public class SonyPreferenceFragment  extends PreferenceFragmentCompat implements
             });
             connectionMethod.setSummary(connectionMethod.getValue() + " ");
 
-            findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
-            findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
+            findPreference(EXIT_APPLICATION).setOnPreferenceClickListener(powerOffController);
+            findPreference(DEBUG_INFO).setOnPreferenceClickListener(logCatViewer);
+            findPreference(WIFI_SETTINGS).setOnPreferenceClickListener(this);
             findPreference("sony_api_list").setOnPreferenceClickListener(cameraApiListViewer);
         }
         catch (Exception e)
@@ -335,4 +345,27 @@ public class SonyPreferenceFragment  extends PreferenceFragmentCompat implements
         }
     }
 
+    @Override
+    public boolean onPreferenceClick(Preference preference)
+    {
+        try
+        {
+            String preferenceKey = preference.getKey();
+            if (preferenceKey.contains(WIFI_SETTINGS))
+            {
+                // Wifi 設定画面を表示する
+                Log.v(TAG, " onPreferenceClick : " + preferenceKey);
+                if (context != null)
+                {
+                    context.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
+                }
+            }
+            return (true);
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+        return (false);
+    }
 }
index 24f638a..50a90a3 100644 (file)
     <string name="pref_ble_wifi_on">Bluetooth LEでWIFIをONにする</string>
     <string name="pref_summary_ble_wifi_on">SnapBridge対応カメラは、チェックを入れてください。</string>
 
+    <string name="pref_wifi_settings">WiFi設定</string>
+    <string name="pref_summary_wifi_settings"> </string>
+
 </resources>
index 0d963af..12b03ad 100644 (file)
     <string name="pref_ble_wifi_on">WIFI ON via Bluetooth LE</string>
     <string name="pref_summary_ble_wifi_on">Check ON for \'SnapBridge\' Cameras.</string>
 
+    <string name="pref_wifi_settings">WIFI Settings</string>
+    <string name="pref_summary_wifi_settings"> </string>
+
 </resources>
index f7f80b5..1e94452 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
index 9f778b6..fd95bc1 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
index 230b634..5c6db14 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
index 899495c..778d6c0 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
index 704819d..f1d00fc 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
index 0b22bd9..96306a0 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
 <!--
index 08bdb81..b0ab352 100644 (file)
             android:key="connection_method"
             android:defaultValue="RICOH_GR2"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 <!--
     <PreferenceCategory
index 52e6022..02a2bd4 100644 (file)
             android:key="connection_method"
             android:defaultValue="OPC"/>
 
+        <PreferenceScreen
+            android:key="wifi_settings"
+            android:title="@string/pref_wifi_settings"
+            android:summary="@string/pref_summary_wifi_settings" />
+
     </PreferenceCategory>
 
     <PreferenceCategory
index 48947c3..fb516be 100644 (file)
@@ -7,7 +7,7 @@ buildscript {
         
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.5.1'
+        classpath 'com.android.tools.build:gradle:3.5.2'
         
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files