OSDN Git Service

コマンドを投げるところを作成した。
authorMRSa <mrsa@myad.jp>
Mon, 18 Jun 2018 15:41:51 +0000 (00:41 +0900)
committerMRSa <mrsa@myad.jp>
Mon, 18 Jun 2018 15:41:51 +0000 (00:41 +0900)
app/src/main/java/net/osdn/gokigen/a01d/ConfirmationDialog.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/cameraproperty/CameraPropertyOperator.java
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/operation/CameraPowerOff.java
app/src/main/java/net/osdn/gokigen/a01d/camera/sony/cameraproperty/SendRequestDialog.java
app/src/main/java/net/osdn/gokigen/a01d/camera/sony/cameraproperty/SonyCameraApiListFragment.java
app/src/main/java/net/osdn/gokigen/a01d/camera/sony/operation/CameraPowerOffSony.java
app/src/main/res/values-ja/strings.xml
app/src/main/res/values/strings.xml

index 8e5c53c..bc5756c 100644 (file)
@@ -1,14 +1,24 @@
+
 package net.osdn.gokigen.a01d;
 
 import android.content.Context;
 import android.content.DialogInterface;
+import android.support.v4.app.DialogFragment;
 import android.support.v7.app.AlertDialog;
 
-public class ConfirmationDialog
+public class ConfirmationDialog extends DialogFragment
 {
-    private final Context context;
+    private Context context = null;
+
+    public static ConfirmationDialog newInstance(Context context)
+    {
+        ConfirmationDialog instance = new ConfirmationDialog();
+        instance.prepare(context);
 
-    public ConfirmationDialog(Context context)
+        return (instance);
+    }
+
+    private void prepare(Context context)
     {
         this.context = context;
     }
@@ -59,6 +69,28 @@ public class ConfirmationDialog
         alertDialog.show();
     }
 
+    public void show(int iconResId, String title, String message)
+    {
+        // 表示イアログの生成
+        final AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
+        alertDialog.setTitle(title);
+        alertDialog.setIcon(iconResId);
+        alertDialog.setMessage(message);
+        alertDialog.setCancelable(true);
+
+        // ボタンを設定する(実行ボタン)
+        alertDialog.setPositiveButton(context.getString(R.string.dialog_positive_execute),
+                new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int which)
+                    {
+                        dialog.dismiss();
+                    }
+                });
+
+        // 確認ダイアログを表示する
+        alertDialog.show();
+    }
+
     // コールバックインタフェース
     public interface Callback
     {
index 5e8c3e6..18bf6f0 100644 (file)
@@ -42,7 +42,7 @@ public class CameraPropertyOperator implements View.OnClickListener
     {
         try
         {
-            final ConfirmationDialog dialog = new ConfirmationDialog(context);
+            final ConfirmationDialog dialog = ConfirmationDialog.newInstance(context);
             dialog.show(R.string.dialog_title_confirmation,
                     R.string.dialog_message_restore_camera_property,
                     new ConfirmationDialog.Callback() {
index 20ca994..ed81654 100644 (file)
@@ -57,7 +57,7 @@ public class CameraPowerOff implements Preference.OnPreferenceClickListener, Con
         {
 
             // 確認ダイアログの生成と表示
-            ConfirmationDialog dialog = new ConfirmationDialog(context);
+            ConfirmationDialog dialog = ConfirmationDialog.newInstance(context);
             dialog.show(R.string.dialog_title_confirmation, R.string.dialog_message_power_off, this);
             return (true);
         }
index 87cb67f..05a5b36 100644 (file)
@@ -87,13 +87,27 @@ public class SendRequestDialog  extends DialogFragment
         final TextView methodName = alertView.findViewById(R.id.method_name);
         final EditText parameter = alertView.findViewById(R.id.edit_parameter);
         final EditText version = alertView.findViewById(R.id.edit_version);
-        try
-        {
+        try {
             methodName.setText("");
             version.setText(activity.getString(R.string.dialog_version_hint));
             ArrayAdapter<String> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item);
             adapter.addAll(cameraApi.getSonyApiServiceList());
+
+            int defaultSelection;
+            for (defaultSelection = (adapter.getCount() - 1); defaultSelection >= 0; defaultSelection--)
+            {
+                String item = adapter.getItem(defaultSelection);
+                if ((item != null) && (item.equals("camera")))
+                {
+                    break;
+                }
+            }
+            if ((defaultSelection < 0) || (defaultSelection >= adapter.getCount()))
+            {
+                defaultSelection = 0;
+            }
             spinner.setAdapter(adapter);
+            spinner.setSelection(defaultSelection);
             spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
             {
                 @Override
index d2217fa..124874a 100644 (file)
@@ -1,6 +1,7 @@
 package net.osdn.gokigen.a01d.camera.sony.cameraproperty;
 
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
@@ -9,6 +10,7 @@ import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.ListFragment;
 import android.support.v7.app.ActionBar;
+import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -22,9 +24,13 @@ import android.widget.ListAdapter;
 import android.widget.ListView;
 import android.widget.Toast;
 
+import net.osdn.gokigen.a01d.ConfirmationDialog;
 import net.osdn.gokigen.a01d.R;
 import net.osdn.gokigen.a01d.camera.IInterfaceProvider;
 
+import org.json.JSONArray;
+import org.json.JSONObject;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -289,9 +295,9 @@ public class SonyCameraApiListFragment extends ListFragment implements SendReque
      *
      */
     @Override
-    public void sendRequest(String service, String apiName, String parameter, String version)
+    public void sendRequest(final String service, final String apiName, final String parameter, final String version)
     {
-        String[] parameterItems = parameter.split(",");
+        final String[] parameterItems = parameter.split(",");
 
         StringBuilder logBuilder = new StringBuilder();
         logBuilder.append("sendRequest(");
@@ -308,6 +314,39 @@ public class SonyCameraApiListFragment extends ListFragment implements SendReque
         logBuilder.append(version);
         logBuilder.append(");");
         Log.v(TAG, logBuilder.toString());
+
+        try
+        {
+            Thread thread = new Thread(new Runnable()
+            {
+                @Override
+                public void run()
+                {
+                    try
+                    {
+                        // メッセージを送信する
+                        JSONArray params = new JSONArray();
+                        if (parameter.length() != 0)
+                        {
+                            for (int index = 0; index < parameterItems.length; index++)
+                            {
+                                params.put(parameterItems[index]);
+                            }
+                        }
+                        receivedReply(interfaceProvider.getSonyInterface().getCameraApi().callGenericSonyApiMethod(service, apiName, params, version));
+                    }
+                    catch (Exception e)
+                    {
+                        e.printStackTrace();
+                    }
+                }
+            });
+            thread.start();
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
     }
 
     @Override
@@ -315,4 +354,40 @@ public class SonyCameraApiListFragment extends ListFragment implements SendReque
     {
         Log.v(TAG, "cancelled()");
     }
+
+
+    private void receivedReply(final JSONObject reply)
+    {
+        try
+        {
+            final Activity activity =  getActivity();
+            if (activity != null)
+            {
+                activity.runOnUiThread(new Runnable()
+                {
+                    @Override
+                    public void run()
+                    {
+                        try
+                        {
+                            ConfirmationDialog dialog = ConfirmationDialog.newInstance(getActivity());
+                            dialog.show(android.R.drawable.ic_dialog_info, getString(R.string.dialog_title_reply), reply.getString("result"));
+                        }
+                        catch (Exception e)
+                        {
+                            ConfirmationDialog dialog = ConfirmationDialog.newInstance(getActivity());
+                            dialog.show(android.R.drawable.ic_dialog_alert, getString(R.string.dialog_title_reply), "RECEIVE ERROR");
+                            e.printStackTrace();
+                        }
+                    }
+                });
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+
+    }
+
 }
index e4f7504..3420631 100644 (file)
@@ -57,7 +57,7 @@ import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor;
         {
 
             // 確認ダイアログの生成と表示
-            ConfirmationDialog dialog = new ConfirmationDialog(context);
+            ConfirmationDialog dialog = ConfirmationDialog.newInstance(context);
             dialog.show(R.string.dialog_title_confirmation, R.string.dialog_message_exit_application, this);
             return (true);
         }
index 4bed38b..ff40d4d 100644 (file)
 
     <string name="dialog_parameter_hint">(parameter)</string>
     <string name="dialog_version_hint">1.0</string>
+    <string name="dialog_title_reply">応答</string>
 
     <string name="only_opc_feature">OPCカメラでのみ有効です。</string>
     <string name="camera_detected">発見 : </string>
index 10a58ea..74b40b5 100644 (file)
 
     <string name="dialog_parameter_hint">(parameter)</string>
     <string name="dialog_version_hint">1.0</string>
+    <string name="dialog_title_reply">Reply</string>
 
     <string name="only_opc_feature">This feature is only available for a OPC Camera.</string>
     <string name="camera_detected">Detected : </string>