1 package jp.sfjp.gokigen.a01c.liveview;
4 import android.content.Context;
5 import android.content.SharedPreferences;
6 import android.support.v7.preference.PreferenceManager;
7 import android.util.Log;
8 import android.view.MotionEvent;
9 import android.view.View;
10 import android.widget.Toast;
12 import jp.sfjp.gokigen.a01c.IShowInformation;
13 import jp.sfjp.gokigen.a01c.R;
14 import jp.sfjp.gokigen.a01c.olycamerawrapper.IOlyCameraCoordinator;
15 import jp.sfjp.gokigen.a01c.olycamerawrapper.IOlyCameraProperty;
16 import jp.sfjp.gokigen.a01c.olycamerawrapper.IOlyCameraPropertyProvider;
23 public class OlyCameraLiveViewOnTouchListener implements View.OnClickListener, View.OnTouchListener
25 private final String TAG = toString();
26 private final Context context;
27 private IOlyCameraCoordinator camera = null;
28 private IShowInformation statusDrawer = null;
29 private ILiveImageStatusNotify liveImageView = null;
30 private final SharedPreferences preferences;
32 private boolean prohibitOperation = true;
37 public OlyCameraLiveViewOnTouchListener(Context context)
39 this.context = context;
40 preferences = PreferenceManager.getDefaultSharedPreferences(context);
46 public void prepareInterfaces(IOlyCameraCoordinator cameraCoordinator, IShowInformation statusDrawer, ILiveImageStatusNotify liveImageView)
48 this.camera = cameraCoordinator;
49 this.statusDrawer = statusDrawer;
50 this.liveImageView = liveImageView;
54 * ボタン(オブジェクト)をクリックしたときの処理
58 public void onClick(View v)
61 Log.v(TAG, "onClick() : " + id);
62 if (prohibitOperation)
64 // 操作禁止の指示がされていた場合は何もしない
65 Log.v(TAG, "onClick() : prohibit operation");
107 * 画面(ライブビュー部分)をタッチした時の処理
111 public boolean onTouch(View v, MotionEvent event)
114 Log.v(TAG, "onTouch() : " + id);
115 if (prohibitOperation)
117 // 操作禁止の指示がされていた場合は何もしない
118 Log.v(TAG, "onTouch() : prohibit operation");
121 return ((id == R.id.liveview)&&(touchedLiveViewArea(event)));
127 * @param operation true: 操作可能, false: 操作不可
130 public void setEnableOperation(boolean operation)
132 prohibitOperation = !operation;
136 /***************************************************************
137 * 以下、ボタンが押された時の処理... あとで切り離す。
139 ***************************************************************/
141 private boolean touchedLiveViewArea(MotionEvent event)
143 return (camera.driveAutoFocus(event));
147 private void pushedButton1()
149 String takeMode = getTakeMode();
183 private void pushedButton2()
185 String takeMode = getTakeMode();
218 private void pushedButton3()
220 String takeMode = getTakeMode();
252 private void pushedButton4()
254 String takeMode = getTakeMode();
286 private void pushedButton5()
288 String takeMode = getTakeMode();
320 private void pushedButton6()
322 String takeMode = getTakeMode();
355 private void pushedArea1()
361 private void pushedArea2()
363 String takeMode = getTakeMode();
394 private void pushedArea3()
396 String takeMode = getTakeMode();
429 * テキスト表示エリア(設定画面を開くで固定)
431 private void pushedArea4()
433 showSettingsScreen();
436 /***************************************************************
437 * 以下、具体的な機能の実行... あとで切り離す。
439 ***************************************************************/
441 private String getTakeMode()
443 IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
444 return (propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.TAKE_MODE)));
450 * (P > A > S > S > ART > iAuto > ...)
452 private void changeTakeMode()
454 IOlyCameraPropertyProvider propertyProxy = camera.getCameraPropertyProvider();
455 String propetyValue = propertyProxy.getCameraPropertyValueTitle(propertyProxy.getCameraPropertyValue(IOlyCameraProperty.TAKE_MODE));
456 if (propetyValue == null)
461 String targetMode = "<" + IOlyCameraProperty.TAKE_MODE; // 変更先モード
462 switch (propetyValue)
465 targetMode = targetMode + "/A>";
469 targetMode = targetMode + "/S>";
473 targetMode = targetMode + "/M>";
477 targetMode = targetMode + "/ART>";
481 targetMode = targetMode + "/iAuto>";
487 targetMode = targetMode + "/P>";
490 propertyProxy.setCameraPropertyValue(IOlyCameraProperty.TAKE_MODE, targetMode);
491 camera.unlockAutoFocus();
494 camera.updateTakeMode();
500 * (現在は、連続撮影モードやムービー撮影についてはまだ非対応)
502 private void pushShutterButton()
507 // パラメータが ON (ONLY CAMERA)の時は、スマートフォン側の撮影は行わない。
508 // (本体カメラのシャッターを切らない時だけ、Toastで通知する。)
509 Toast.makeText(context, R.string.shoot_camera, Toast.LENGTH_SHORT).show();
514 * グリッド表示の ON/OFFを切り替える
517 private void changeShowGrid()
519 liveImageView.toggleShowGridFrame();
520 updateGridStatusButton(IShowInformation.BUTTON_1);
527 private void changeAeLockMode()
529 camera.toggleAutoExposure();
533 * グリッドフレームの表示・非表示ボタンを更新する
536 private void updateGridStatusButton(int buttonId)
539 if (liveImageView.isShowGrid())
541 // グリッドがON状態、グリッドをOFFにするボタンを出す
542 btnResId = R.drawable.btn_ic_grid_off;
546 // グリッドがOFF状態、グリッドをONにするボタンを出す
547 btnResId = R.drawable.btn_ic_grid_on;
549 statusDrawer.setButtonDrawable(buttonId, btnResId);
556 private void showSettingsScreen()