OSDN Git Service

カメラボタンの操作を仮実装。
authorMRSa <mrsa@myad.jp>
Fri, 10 Aug 2018 16:00:28 +0000 (01:00 +0900)
committerMRSa <mrsa@myad.jp>
Fri, 10 Aug 2018 16:00:28 +0000 (01:00 +0900)
app/src/main/java/net/osdn/gokigen/gr2control/camera/ICameraButtonControl.java
app/src/main/java/net/osdn/gokigen/gr2control/camera/ricohgr2/operation/RicohGr2CameraButtonControl.java
app/src/main/java/net/osdn/gokigen/gr2control/liveview/LiveViewFragment.java
app/src/main/java/net/osdn/gokigen/gr2control/liveview/LiveViewKeyPanelClickListener.java [new file with mode: 0644]
app/src/main/res/layout-land/fragment_live_view.xml
app/src/main/res/values/strings.xml

index 20fd6fb..817546a 100644 (file)
@@ -2,5 +2,66 @@ package net.osdn.gokigen.gr2control.camera;
 
 public interface ICameraButtonControl
 {
-    void pushButton(int code);
+    void pushedButton(String code);
+
+
+    String FRONT_LEFT = "bjogleft";
+    String FRONT_RIGHT = "bjogright";
+    String ADJ_LEFT = "badjleft";
+    String ADJ_ENTER = "badjok";
+    String ADJ_RIGHT = "badjright";
+
+    String TOGGLE_AEAF_OFF = "baf 0";
+    String TOGGLE_AEAF_ON = "baf 1";
+
+    String LEVER_AEAFL = "bafl";
+    String LEVER_CAF = "bafc";
+
+    String BUTTON_UP = "bup";
+    String BUTTON_LEFT = "bleft";
+    String BUTTON_ENTER = "bok";
+    String BUTTON_RIGHT = "bright";
+    String BUTTON_DOWN = "bdown";
+
+    String BUTTON_FUNCTION_1 = "bdisp";
+    String BUTTON_FUNCTION_2 = "btrash";
+    String BUTTON_FUNCTION_3 = "beffect";
+
+    String BUTTON_PLUS = "btele";
+    String BUTTON_MINUS = "bwide";
+    String BUTTON_PLAYBACK = "bplay";
+
+    String KEYLOCK_ON = "uilock on";
+    String KEYLOCK_OFF = "uilock off";
+
+    String LENS_OPEN = "acclock off";
+    String LENS_RETRACT = "acclock on";
+
+    String MUTE_ON = "audio mute on";
+    String MUTE_OFF = "audio mute off";
+
+    String LCD_SLEEP_ON = "lcd sleep on";
+    String LCD_SLEEP_OFF = "lcd sleep off";
+
+    String LED1_ON = "led on 1";
+    String LED1_OFF = "led off 1";
+
+    String BEEP = "audio resplay 0 1 3";
+
+    String MODE_REFRESH = "mode refresh";
+
+    String SHUTTER = "brl 0";
+    String SHUTTER_PRESS_AND_HALF_HOLD = "brl 2 1";
+
+    String TAKEMODE_M = "bdial M";
+    String TAKEMODE_TAV = "bdial TAV";
+    String TAKEMODE_AV = "bdial AV";
+    String TAKEMODE_TV = "bdial TV";
+    String TAKEMODE_P = "bdial P";
+    String TAKEMODE_AUTO = "bdial AUTO";
+    String TAKEMODE_MY1 = "bdial MY1";
+    String TAKEMODE_MY2 = "bdial MY2";
+    String TAKEMODE_MY3 = "bdial MY3";
+    String TAKEMODE_MOVIE = "bdial MOVIE";
+
 }
index bd0f81b..c2eb2f1 100644 (file)
@@ -1,10 +1,10 @@
 package net.osdn.gokigen.gr2control.camera.ricohgr2.operation;
 
-        import android.support.annotation.NonNull;
-        import android.util.Log;
+import android.support.annotation.NonNull;
+import android.util.Log;
 
-        import net.osdn.gokigen.gr2control.camera.ICameraButtonControl;
-        import net.osdn.gokigen.gr2control.camera.utils.SimpleHttpClient;
+import net.osdn.gokigen.gr2control.camera.ICameraButtonControl;
+import net.osdn.gokigen.gr2control.camera.utils.SimpleHttpClient;
 
 /**
  *
@@ -21,19 +21,9 @@ public class RicohGr2CameraButtonControl implements ICameraButtonControl
      *
      */
     @Override
-    public void pushButton(int code)
+    public void pushedButton(String code)
     {
-        pushButton(convertFromCodeToString(code));
-    }
-
-    /**
-     *
-     *
-     */
-    private String convertFromCodeToString(int code)
-    {
-        //  ここでキーコードを文字列に変換する
-        return ("bok");
+        pushButton(code);
     }
 
     /**
index b2ed88c..a7e2e25 100644 (file)
@@ -52,6 +52,7 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFo
     private ICameraStatusWatcher statusWatcher = null;
     private LiveViewClickTouchListener onClickTouchListener = null;
     private LiveViewControlPanelClickListener onPanelClickListener = null;
+    private LiveViewKeyPanelClickListener onKeyPanelClickListener = null;
 
     private TextView statusArea = null;
     private TextView focalLengthArea = null;
@@ -171,6 +172,29 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFo
             setPanelClickListener(view, R.id.whiteBalanceImageView);
             setPanelClickListener(view, R.id.setEffectImageView);
 
+            if (onKeyPanelClickListener == null)
+            {
+                onKeyPanelClickListener = new LiveViewKeyPanelClickListener(interfaceProvider);
+            }
+            setKeyPanelClickListener(view, R.id.button_front_left);
+            setKeyPanelClickListener(view, R.id.button_front_right);
+            setKeyPanelClickListener(view, R.id.button_adjust_left);
+            setKeyPanelClickListener(view, R.id.button_adjust_enter);
+            setKeyPanelClickListener(view, R.id.button_adjust_right);
+            setKeyPanelClickListener(view, R.id.button_toggle_aeaf);
+            setKeyPanelClickListener(view, R.id.lever_ael_caf);
+            setKeyPanelClickListener(view, R.id.button_up);
+            setKeyPanelClickListener(view, R.id.button_left);
+            setKeyPanelClickListener(view, R.id.button_center_enter);
+            setKeyPanelClickListener(view, R.id.button_right);
+            setKeyPanelClickListener(view, R.id.button_down);
+            setKeyPanelClickListener(view, R.id.button_function_1);
+            setKeyPanelClickListener(view, R.id.button_function_2);
+            setKeyPanelClickListener(view, R.id.button_function_3);
+            setKeyPanelClickListener(view, R.id.button_plus);
+            setKeyPanelClickListener(view, R.id.button_minus);
+            setKeyPanelClickListener(view, R.id.button_playback);
+
             /*
             view.findViewById(R.id.show_preference_button).setOnClickListener(onClickTouchListener);
             view.findViewById(R.id.camera_property_settings_button).setOnClickListener(onClickTouchListener);
@@ -290,6 +314,21 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFo
         }
     }
 
+    private void setKeyPanelClickListener(View view, int id)
+    {
+        try
+        {
+            View button = view.findViewById(id);
+            if (button != null)
+            {
+                button.setOnClickListener(onKeyPanelClickListener);
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
 
     /**
      *
diff --git a/app/src/main/java/net/osdn/gokigen/gr2control/liveview/LiveViewKeyPanelClickListener.java b/app/src/main/java/net/osdn/gokigen/gr2control/liveview/LiveViewKeyPanelClickListener.java
new file mode 100644 (file)
index 0000000..638ddd2
--- /dev/null
@@ -0,0 +1,138 @@
+package net.osdn.gokigen.gr2control.liveview;
+
+import android.support.annotation.NonNull;
+import android.util.Log;
+import android.view.View;
+
+import net.osdn.gokigen.gr2control.R;
+import net.osdn.gokigen.gr2control.camera.ICameraButtonControl;
+import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
+
+/**
+ *
+ *
+ */
+class LiveViewKeyPanelClickListener  implements View.OnClickListener
+{
+    private final String TAG = toString();
+    private final IInterfaceProvider interfaceProvider;
+
+    LiveViewKeyPanelClickListener(@NonNull IInterfaceProvider interfaceProvider)
+    {
+        this.interfaceProvider = interfaceProvider;
+    }
+
+    @Override
+    public void onClick(View view)
+    {
+        try
+        {
+            String keyId = "";
+            int id = view.getId();
+            switch (id)
+            {
+                case R.id.button_front_left:
+                    // フロントダイアル左
+                    keyId = ICameraButtonControl.FRONT_LEFT;
+                    break;
+                case R.id.button_front_right:
+                    // フロントダイアル右
+                    keyId = ICameraButtonControl.FRONT_RIGHT;
+                    break;
+                case R.id.button_adjust_left:
+                    // ADJボタン左
+                    keyId = ICameraButtonControl.ADJ_LEFT;
+                    break;
+                case R.id.button_adjust_enter:
+                    // ADJボタン押下
+                    keyId = ICameraButtonControl.ADJ_ENTER;
+                    break;
+                case R.id.button_adjust_right:
+                    // ADJボタン右
+                    keyId = ICameraButtonControl.ADJ_RIGHT;
+                    break;
+                case R.id.button_toggle_aeaf:
+                    // AE/AFのトグルボタン
+                    keyId = decideToggle();
+                    break;
+                case R.id.lever_ael_caf:
+                    // AEL/AFL - C-AF レバー
+                    keyId = decideLever();
+                    break;
+                case R.id.button_up:
+                    // 上ボタン
+                    keyId = ICameraButtonControl.BUTTON_UP;
+                    break;
+                case R.id.button_left:
+                    // 左ボタン
+                    keyId = ICameraButtonControl.BUTTON_LEFT;
+                    break;
+                case R.id.button_center_enter:
+                    // OKボタン
+                    keyId = ICameraButtonControl.BUTTON_ENTER;
+                    break;
+                case R.id.button_right:
+                    // 右ボタン
+                    keyId = ICameraButtonControl.BUTTON_RIGHT;
+                    break;
+                case R.id.button_down:
+                    // 下ボタン
+                    keyId = ICameraButtonControl.BUTTON_DOWN;
+                    break;
+                case R.id.button_function_1:
+                    // Fn1ボタン
+                    keyId = ICameraButtonControl.BUTTON_FUNCTION_1;
+                    break;
+                case R.id.button_function_2:
+                    // Fn2ボタン
+                    keyId = ICameraButtonControl.BUTTON_FUNCTION_2;
+                    break;
+                case R.id.button_function_3:
+                    // Fn3ボタン
+                    keyId = ICameraButtonControl.BUTTON_FUNCTION_3;
+                    break;
+                case R.id.button_plus:
+                    // +ボタン
+                    keyId = ICameraButtonControl.BUTTON_PLUS;
+                    break;
+                case R.id.button_minus:
+                    // -ボタン
+                    keyId = ICameraButtonControl.BUTTON_MINUS;
+                    break;
+                case R.id.button_playback:
+                    // プレイボタン
+                    keyId = ICameraButtonControl.BUTTON_PLAYBACK;
+                    break;
+                default:
+                    Log.v(TAG, "onClick() : " + id);
+                    break;
+            }
+            if (keyId.length() > 1)
+            {
+                ICameraButtonControl buttonControl = interfaceProvider.getRicohGr2Infterface().getButtonControl();
+                if (buttonControl != null)
+                {
+                    buttonControl.pushedButton(keyId);
+                }
+            }
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private String decideToggle()
+    {
+        // AEL/AFL ボタン状態から次のボタン状態指示を決める
+        // あわせて、ボタン状態の表示更新を行う
+        return ("");
+    }
+
+    private String decideLever()
+    {
+        // AEL/AFL - C-AF レバー状態から、次のレバー状態指示を決める。
+        // あわせて、ボタン状態の表示更新を行う
+        return ("");
+    }
+}
index dc03d24..e984311 100644 (file)
     <RelativeLayout
         android:id="@+id/keyPanelLayout"
         android:orientation="horizontal"
-        android:layout_width="440dp"
-        android:layout_height="360dp"
+        android:layout_width="100pt"
+        android:layout_height="120pt"
         android:layout_alignLeft="@id/controlPanelLayout"
         android:layout_alignStart="@id/controlPanelLayout"
         android:layout_alignParentBottom="true"
         android:visibility="invisible"
         android:background="@color/background_translucent_white" >
 
+        <ImageView
+            android:id="@+id/button_front_left"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_alignParentTop="true"
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentStart="true"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_undo_black_24dp"
+            android:layout_marginTop="4pt"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_adjust_left"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_below="@id/button_front_left"
+            android:layout_alignLeft="@id/button_front_left"
+            android:layout_alignStart="@id/button_front_left"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_chevron_left_black_24dp"
+            android:layout_marginTop="4pt"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_adjust_enter"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_toEndOf="@id/button_adjust_left"
+            android:layout_toRightOf="@id/button_adjust_left"
+            android:layout_alignTop="@id/button_adjust_left"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_vertical_align_top_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_adjust_right"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_toEndOf="@id/button_adjust_enter"
+            android:layout_toRightOf="@id/button_adjust_enter"
+            android:layout_alignTop="@id/button_adjust_left"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_chevron_right_black_24dp"
+            android:gravity="center" />
+
+
+        <ImageView
+            android:id="@+id/button_front_right"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_alignTop="@id/button_front_left"
+            android:layout_alignLeft="@id/button_adjust_right"
+            android:layout_alignStart="@id/button_adjust_right"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_redo_black_24dp"
+            android:gravity="center" />
+
+
+        <ImageView
+            android:id="@+id/button_toggle_aeaf"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_below="@id/button_adjust_left"
+            android:layout_alignLeft="@id/button_adjust_left"
+            android:layout_alignStart="@id/button_adjust_left"
+            android:layout_marginTop="6pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_radio_button_unchecked_black_24dp"
+            android:gravity="center" />
+
+        <TextView
+            android:id="@+id/lever_ael_caf"
+            android:layout_width="32pt"
+            android:layout_height="12pt"
+            android:gravity="center"
+            android:clickable="true"
+            android:focusable="true"
+            android:layout_toEndOf="@id/button_toggle_aeaf"
+            android:layout_toRightOf="@id/button_toggle_aeaf"
+            android:layout_alignTop="@id/button_toggle_aeaf"
+            android:text="@string/label_aelock"
+            android:textColor="@color/background_dark"
+            android:textStyle="normal"
+            android:textSize="6pt" />
+
+        <ImageView
+            android:id="@+id/button_up"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_below="@id/lever_ael_caf"
+            android:layout_alignLeft="@id/lever_ael_caf"
+            android:layout_alignStart="@id/lever_ael_caf"
+            android:layout_marginTop="8pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_arrow_upward_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_left"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_below="@id/button_up"
+            android:layout_alignLeft="@id/button_toggle_aeaf"
+            android:layout_alignStart="@id/button_toggle_aeaf"
+            android:layout_marginTop="4pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_arrow_back_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_center_enter"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_toEndOf="@id/button_left"
+            android:layout_toRightOf="@id/button_left"
+            android:layout_alignTop="@id/button_left"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_check_circle_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_right"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_toEndOf="@id/button_center_enter"
+            android:layout_toRightOf="@id/button_center_enter"
+            android:layout_alignTop="@id/button_center_enter"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_arrow_forward_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_down"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_below="@id/button_center_enter"
+            android:layout_alignLeft="@id/button_center_enter"
+            android:layout_alignStart="@id/button_center_enter"
+            android:layout_marginTop="4pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_arrow_downward_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_function_1"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_below="@id/button_down"
+            android:layout_alignLeft="@id/button_down"
+            android:layout_alignStart="@id/button_down"
+            android:layout_marginTop="6pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_replay_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_function_2"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_toEndOf="@id/button_function_1"
+            android:layout_toRightOf="@id/button_function_1"
+            android:layout_alignTop="@id/button_function_1"
+            android:layout_marginLeft="6pt"
+            android:layout_marginStart="6pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_timer_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_function_3"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_toEndOf="@id/button_function_2"
+            android:layout_toRightOf="@id/button_function_2"
+            android:layout_alignTop="@id/button_function_2"
+            android:layout_marginLeft="6pt"
+            android:layout_marginStart="6pt"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_wifi_black_24dp"
+            android:gravity="center" />
+
+
+        <ImageView
+            android:id="@+id/button_plus"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_alignLeft="@id/button_function_3"
+            android:layout_alignStart="@id/button_function_3"
+            android:layout_alignTop="@id/button_adjust_left"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_add_circle_outline_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_minus"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_alignLeft="@id/button_function_3"
+            android:layout_alignStart="@id/button_function_3"
+            android:layout_alignTop="@id/button_toggle_aeaf"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_remove_circle_outline_black_24dp"
+            android:gravity="center" />
+
+        <ImageView
+            android:id="@+id/button_playback"
+            android:layout_width="20pt"
+            android:layout_height="12pt"
+            android:layout_alignLeft="@id/button_function_3"
+            android:layout_alignStart="@id/button_function_3"
+            android:layout_alignTop="@id/button_left"
+            android:scaleType="fitCenter"
+            android:visibility="visible"
+            android:clickable="true"
+            android:focusable="true"
+            android:src="@drawable/ic_play_circle_outline_black_24dp"
+            android:gravity="center" />
+
         <TextView
             android:id="@+id/hideKeyPanelTextView"
             android:layout_width="48dp"
index fdcf513..90b6fff 100644 (file)
@@ -85,6 +85,9 @@
     <string name="dialog_download_message">File Name:</string>
     <string name="download_control_save_success">Saved</string>
 
+    <string name="label_aelock">AEL/AFL</string>
+    <string name="label_c_af">C-AF</string>
+
     <string name="exif_datetime_title">Date : </string>
     <string name="exif_exposure_time_title">Exposure Time : </string>
     <string name="exif_aperture_title">Aperture : </string>