OSDN Git Service

Olympusの送信ダイアログをhttp用のダイアログに役割拡大。
authorMRSa <mrsa@myad.jp>
Mon, 13 Jan 2020 12:59:16 +0000 (21:59 +0900)
committerMRSa <mrsa@myad.jp>
Mon, 13 Jan 2020 12:59:16 +0000 (21:59 +0900)
app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java
app/src/main/java/net/osdn/gokigen/a01d/camera/utils/SimpleHttpClient.java
app/src/main/java/net/osdn/gokigen/a01d/camera/utils/SimpleHttpSendCommandDialog.java [moved from app/src/main/java/net/osdn/gokigen/a01d/camera/olympuspen/operation/OlympusPenSendCommandDialog.java with 80% similarity]
app/src/main/res/layout-land/http_request_layout.xml [moved from app/src/main/res/layout-land/olympuspen_request_layout.xml with 93% similarity]
app/src/main/res/layout/http_request_layout.xml [moved from app/src/main/res/layout/olympuspen_request_layout.xml with 93% similarity]
app/src/main/res/values-ja/strings.xml
app/src/main/res/values/strings.xml

index 99ed853..d07047d 100644 (file)
@@ -15,7 +15,7 @@ import net.osdn.gokigen.a01d.camera.olympus.cameraproperty.OlyCameraPropertyList
 import net.osdn.gokigen.a01d.camera.ICameraStatusReceiver;
 import net.osdn.gokigen.a01d.camera.ICameraConnection;
 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.ICameraPowerOn;
-import net.osdn.gokigen.a01d.camera.olympuspen.operation.OlympusPenSendCommandDialog;
+import net.osdn.gokigen.a01d.camera.utils.SimpleHttpSendCommandDialog;
 import net.osdn.gokigen.a01d.camera.panasonic.operation.PanasonicSendCommandDialog;
 import net.osdn.gokigen.a01d.camera.ricohgr2.operation.RicohGr2SendCommandDialog;
 import net.osdn.gokigen.a01d.camera.sony.cameraproperty.SonyCameraApiListFragment;
@@ -39,6 +39,9 @@ import androidx.fragment.app.FragmentTransaction;
 import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceManager;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  *   A01d ;
  *
@@ -272,9 +275,12 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
             {
                 try
                 {
-                    // Olympus Penの場合は、コマンド送信ダイアログを表示する
-                    OlympusPenSendCommandDialog.newInstance(interfaceProvider.getOlympusPenInterface()).show(getSupportFragmentManager(), "olympusPenSendCommandDialog");
+                    Map<String, String> headerMap = new HashMap<>();
+                    headerMap.put("User-Agent", "OlympusCameraKit"); // "OI.Share"
+                    headerMap.put("X-Protocol", "OlympusCameraKit"); // "OI.Share"
 
+                    // Olympus Penの場合は、コマンド送信ダイアログを表示する
+                    SimpleHttpSendCommandDialog.newInstance("http://192.168.0.10/", interfaceProvider.getOlympusPenInterface().getLiveViewControl(), headerMap).show(getSupportFragmentManager(), "olympusPenSendCommandDialog");
                 }
                 catch (Exception e)
                 {
index dc2c7a9..aca52ad 100644 (file)
@@ -376,6 +376,17 @@ public class SimpleHttpClient
      *
      *
      */
+    public static String httpPutWithHeader(String url, String putData, Map<String, String> headerMap, String contentType, int timeoutMs)
+    {
+        return (httpCommand(url, "PUT", putData, headerMap, contentType, timeoutMs));
+    }
+
+
+    /**
+     *
+     *
+     *
+     */
     public static String httpPut(String url, String postData, int timeoutMs)
     {
         return (httpCommand(url, "PUT", postData, null, null, timeoutMs));
@@ -1,4 +1,4 @@
-package net.osdn.gokigen.a01d.camera.olympuspen.operation;
+package net.osdn.gokigen.a01d.camera.utils;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -12,41 +12,38 @@ import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
 
-
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
 import androidx.fragment.app.DialogFragment;
 
 import net.osdn.gokigen.a01d.R;
 import net.osdn.gokigen.a01d.camera.ILiveViewControl;
-import net.osdn.gokigen.a01d.camera.olympuspen.IOlympusPenInterfaceProvider;
-import net.osdn.gokigen.a01d.camera.utils.SimpleHttpClient;
-
-import java.util.HashMap;
 import java.util.Map;
 
-public class OlympusPenSendCommandDialog  extends DialogFragment implements View.OnClickListener
+public class SimpleHttpSendCommandDialog extends DialogFragment implements View.OnClickListener
 {
     private final String TAG = toString();
-    private IOlympusPenInterfaceProvider interfaceProvider = null;
+    private ILiveViewControl liveViewControl = null;
     private Dialog myDialog = null;
     private EditText method = null;
     private EditText service = null;
     private EditText parameter = null;
     private EditText command = null;
     private TextView responseArea = null;
+    private String urlToSend = null;
     private Map<String, String> headerMap;
 
     private static final int TIMEOUT_MS = 6000;
-    private static final String COMMUNICATE_URL = "http://192.168.0.10/";
+    private static final String COMMUNICATE_URL_DEFAULT = "http://192.168.0.10/";
 
     /**
      *
      *
      */
-    public static OlympusPenSendCommandDialog newInstance(@NonNull IOlympusPenInterfaceProvider interfaceProvider)
+    public static SimpleHttpSendCommandDialog newInstance(@Nullable String urlToSend, @NonNull ILiveViewControl liveViewControl,  @Nullable Map<String, String> headerMap)
     {
-        OlympusPenSendCommandDialog instance = new OlympusPenSendCommandDialog();
-        instance.prepare(interfaceProvider);
+        SimpleHttpSendCommandDialog instance = new SimpleHttpSendCommandDialog();
+        instance.prepare(urlToSend, liveViewControl, headerMap);
 
         // パラメータはBundleにまとめておく
         Bundle arguments = new Bundle();
@@ -61,14 +58,24 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
      *
      *
      */
-    private void prepare(@NonNull IOlympusPenInterfaceProvider interfaceProvider)
+    private void prepare(@Nullable String urlToSend, @NonNull ILiveViewControl liveViewControl, @Nullable Map<String, String> headerMap)
     {
+        if ((urlToSend == null)||(!urlToSend.contains("http://")))
+        {
+            this.urlToSend = COMMUNICATE_URL_DEFAULT;
+        }
+        else
+        {
+            this.urlToSend = urlToSend;
+        }
+
         //
-        this.interfaceProvider = interfaceProvider;
+        this.liveViewControl = liveViewControl;
 
-        headerMap = new HashMap<>();
-        headerMap.put("User-Agent", "OlympusCameraKit"); // "OI.Share"
-        headerMap.put("X-Protocol", "OlympusCameraKit"); // "OI.Share"
+        this.headerMap = headerMap;
+        //headerMap = new HashMap<>();
+        //headerMap.put("User-Agent", "OlympusCameraKit"); // "OI.Share"
+        //headerMap.put("X-Protocol", "OlympusCameraKit"); // "OI.Share"
     }
 
     @Override
@@ -103,11 +110,11 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
 
         // Get the layout inflater
         LayoutInflater inflater = activity.getLayoutInflater();
-        final View alertView = inflater.inflate(R.layout.olympuspen_request_layout, null, false);
+        final View alertView = inflater.inflate(R.layout.http_request_layout, null, false);
         alertDialog.setView(alertView);
 
         alertDialog.setIcon(R.drawable.ic_linked_camera_black_24dp);
-        alertDialog.setTitle(activity.getString(R.string.dialog_olympuspen_command_title_command));
+        alertDialog.setTitle(activity.getString(R.string.dialog_http_command_title_command));
         method = alertView.findViewById(R.id.edit_method);
         service = alertView.findViewById(R.id.edit_service);
         parameter = alertView.findViewById(R.id.edit_parameter);
@@ -123,13 +130,9 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
         alertDialog.setCancelable(true);
         try
         {
-            if (service != null)
-            {
-                service.setText(activity.getText(R.string.olympuspen_service_string));
-            }
             if (method != null)
             {
-                method.setText(activity.getText(R.string.olympuspen_method_string));
+                method.setText(activity.getText(R.string.http_method_string));
             }
         }
         catch (Exception e)
@@ -163,7 +166,11 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
     {
         // ライブビューの停止と開始
         Log.v(TAG, "changeRunMode() : " + isStartLiveView);
-        ILiveViewControl liveViewControl = interfaceProvider.getLiveViewControl();
+        if (liveViewControl == null)
+        {
+            Log.v(TAG, "liveViewControl is NULL...");
+            return;
+        }
         try
         {
             if (isStartLiveView)
@@ -210,6 +217,7 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
                     methodStr = method.getText().toString().toLowerCase();
                 }
                 final boolean isPost = (methodStr.contains("post"));
+                final boolean isPut = (methodStr.contains("put"));
 
                 if (service != null)
                 {
@@ -233,12 +241,12 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
                 //  > POST : http://xxx.xxx.xxx.xxx/(serviceStr) + "?" (commandStr) , parameterStr ← BODY
                 if (commandStr.length() > 0)
                 {
-                    serviceStr = COMMUNICATE_URL + serviceStr + "?" + commandStr;
+                    serviceStr = urlToSend + serviceStr + "?" + commandStr;
                 }
                 else
                 {
                     // commandStrにデータが記入されていない場合はServiceStrのみ
-                    serviceStr = COMMUNICATE_URL + serviceStr;
+                    serviceStr = urlToSend + serviceStr;
                 }
 
                 final String url = serviceStr;
@@ -255,6 +263,10 @@ public class OlympusPenSendCommandDialog  extends DialogFragment implements View
                             {
                                 reply =  SimpleHttpClient.httpPostWithHeader(url, param, headerMap, null, TIMEOUT_MS);
                             }
+                            else if (isPut)
+                            {
+                                reply =  SimpleHttpClient.httpPutWithHeader(url, param, headerMap, null, TIMEOUT_MS);
+                            }
                             else
                             {
                                 reply = SimpleHttpClient.httpGetWithHeader(url, headerMap, null, TIMEOUT_MS);
@@ -56,7 +56,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_method_hint"
+                android:hint="@string/http_dialog_method_hint"
                 />
 
             <EditText android:id="@+id/edit_service"
@@ -65,7 +65,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_service_hint"
+                android:hint="@string/http_dialog_service_hint"
                 />
 
             <EditText android:id="@+id/edit_command"
@@ -74,7 +74,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_command_hint"
+                android:hint="@string/http_dialog_command_hint"
                 />
 
             <EditText android:id="@+id/edit_parameter"
@@ -83,7 +83,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_parameter_hint"
+                android:hint="@string/http_dialog_parameter_hint"
                 />
 
             <Button
@@ -56,7 +56,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_method_hint"
+                android:hint="@string/http_dialog_method_hint"
                 />
 
             <EditText android:id="@+id/edit_service"
@@ -65,7 +65,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_service_hint"
+                android:hint="@string/http_dialog_service_hint"
                 />
 
             <EditText android:id="@+id/edit_command"
@@ -74,7 +74,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_command_hint"
+                android:hint="@string/http_dialog_command_hint"
                 />
 
             <EditText android:id="@+id/edit_parameter"
@@ -83,7 +83,7 @@
                 android:autoLink="all"
                 android:linksClickable="true"
                 android:inputType="text"
-                android:hint="@string/olympuspen_dialog_parameter_hint"
+                android:hint="@string/http_dialog_parameter_hint"
                 />
 
             <Button
index fbfbcc8..ba05bb6 100644 (file)
     <string name="pref_use_pentax_autofocus_summary">PENTAX一眼カメラ用の命令を使って制御します。</string>
 
 
-    <string name="dialog_olympuspen_command_title_command">メッセージ送信(Olympus)</string>
+    <string name="dialog_http_command_title_command">HTTPメッセージ送信</string>
     <string name="dialog_ricoh_command_title_command">メッセージ送信(RICOH)</string>
     <string name="dialog_panasonic_command_title_command">メッセージ送信(Panasonic)</string>
     <string name="dialog_fujix_command_title_command">メッセージ送信(FUJI)</string>
     <string name="dialog_command_hint">(command)</string>
     <string name="dialog_service_hint">(service)</string>
     <string name="panasonic_service_string">cam.cgi</string>
-    <string name="olympuspen_dialog_service_hint">(service)</string>
-    <string name="olympuspen_dialog_method_hint">GET/POST</string>
-    <string name="olympuspen_method_string">GET</string>
-    <string name="olympuspen_service_string">get_camprop.cgi</string>
-    <string name="olympuspen_dialog_command_hint">(command)</string>
-    <string name="olympuspen_dialog_parameter_hint">(paramenter)</string>
+    <string name="http_dialog_service_hint">(service)</string>
+    <string name="http_dialog_method_hint">GET/POST/PUT</string>
+    <string name="http_method_string">GET</string>
+    <string name="http_service_string">get_camprop.cgi</string>
+    <string name="http_dialog_command_hint">(command)</string>
+    <string name="http_dialog_parameter_hint">(paramenter)</string>
     <string name="ricoh_service_string">GET</string>
     <string name="ricoh_get_status_string">v1/status/camera</string>
 
index 01645a3..ee91104 100644 (file)
     <string name="pref_use_pentax_autofocus_summary">Uses PENTAX DSLR control commands.</string>
 
 
-    <string name="dialog_olympuspen_command_title_command">Send Message(Olympus)</string>
+    <string name="dialog_http_command_title_command">HTTP Send Message</string>
     <string name="dialog_ricoh_command_title_command">Send Message(RICOH)</string>
     <string name="dialog_panasonic_command_title_command">Send Message(Panasonic)</string>
     <string name="dialog_fujix_command_title_command">Send Message(FUJI)</string>
     <string name="dialog_command_hint">(command)</string>
     <string name="dialog_service_hint">(service)</string>
     <string name="panasonic_service_string">cam.cgi</string>
-    <string name="olympuspen_dialog_service_hint">(service)</string>
-    <string name="olympuspen_dialog_method_hint">GET/POST</string>
-    <string name="olympuspen_method_string">GET</string>
-    <string name="olympuspen_service_string">get_camprop.cgi</string>
-    <string name="olympuspen_dialog_command_hint">com=desc</string>
-    <string name="olympuspen_dialog_parameter_hint">propname=desclist</string>
+    <string name="http_dialog_service_hint">(service)</string>
+    <string name="http_dialog_method_hint">GET/POST/PUT</string>
+    <string name="http_method_string">GET</string>
+    <string name="http_service_string">get_camprop.cgi</string>
+    <string name="http_dialog_command_hint">com=desc</string>
+    <string name="http_dialog_parameter_hint">propname=desclist</string>
     <string name="ricoh_service_string">GET</string>
     <string name="ricoh_get_status_string">v1/status/camera</string>