1 package net.osdn.gokigen.gr2control.liveview;
3 import android.content.Context;
4 import android.content.SharedPreferences;
5 import android.graphics.Color;
6 import android.graphics.drawable.Drawable;
7 import android.os.Bundle;
8 import android.os.Vibrator;
10 import androidx.annotation.NonNull;
11 import androidx.appcompat.app.ActionBar;
12 import androidx.appcompat.app.AppCompatActivity;
13 import androidx.core.content.ContextCompat;
14 import androidx.core.content.res.ResourcesCompat;
15 import androidx.core.graphics.drawable.DrawableCompat;
16 import androidx.fragment.app.Fragment;
17 import androidx.fragment.app.FragmentActivity;
18 import androidx.preference.PreferenceManager;
20 import android.util.Log;
21 import android.view.KeyEvent;
22 import android.view.LayoutInflater;
23 import android.view.View;
24 import android.view.ViewGroup;
25 import android.widget.Button;
26 import android.widget.ImageView;
27 import android.widget.TextView;
29 import net.osdn.gokigen.gr2control.R;
30 import net.osdn.gokigen.gr2control.camera.ICameraButtonControl;
31 import net.osdn.gokigen.gr2control.camera.ICameraConnection;
32 import net.osdn.gokigen.gr2control.camera.ICameraInformation;
33 import net.osdn.gokigen.gr2control.camera.ICameraRunMode;
34 import net.osdn.gokigen.gr2control.camera.ICameraRunModeCallback;
35 import net.osdn.gokigen.gr2control.camera.ICameraStatus;
36 import net.osdn.gokigen.gr2control.camera.ICameraStatusWatcher;
37 import net.osdn.gokigen.gr2control.camera.IDisplayInjector;
38 import net.osdn.gokigen.gr2control.camera.IFocusingModeNotify;
39 import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
40 import net.osdn.gokigen.gr2control.camera.ILiveViewControl;
41 import net.osdn.gokigen.gr2control.camera.IZoomLensControl;
42 import net.osdn.gokigen.gr2control.camera.olympus.myolycameraprops.LoadSaveCameraProperties;
43 import net.osdn.gokigen.gr2control.camera.olympus.myolycameraprops.LoadSaveMyCameraPropertyDialog;
44 import net.osdn.gokigen.gr2control.liveview.liveviewlistener.ILiveViewListener;
45 import net.osdn.gokigen.gr2control.preference.IPreferencePropertyAccessor;
46 import net.osdn.gokigen.gr2control.scene.IChangeScene;
48 import static android.content.Context.VIBRATOR_SERVICE;
54 public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFocusingModeNotify, IFavoriteSettingDialogKicker, ICameraStatusUpdateNotify, LiveViewKeyPanelClickListener.KeyPanelFeedback, ICameraRunModeCallback
56 private final String TAG = this.toString();
58 private ILiveViewControl liveViewControl = null;
59 private IZoomLensControl zoomLensControl = null;
60 private IInterfaceProvider interfaceProvider = null;
61 private IDisplayInjector interfaceInjector = null;
62 //private OlympusCameraLiveViewListenerImpl liveViewListener = null;
63 private IChangeScene changeScene = null;
64 private ICameraInformation cameraInformation = null;
65 private ICameraStatusWatcher statusWatcher = null;
66 private LiveViewClickTouchListener onClickTouchListener = null;
67 private LiveViewControlPanelClickListener onPanelClickListener = null;
68 private LiveViewKeyPanelClickListener onKeyPanelClickListener = null;
69 private LiveViewFujiXKeyPanelClickListener fujiXOnKeyPanelClickListener = null;
71 private TextView statusArea = null;
72 private TextView focalLengthArea = null;
73 private CameraLiveImageView imageView = null;
75 private ImageView manualFocus = null;
76 private ImageView showGrid = null;
77 private ImageView connectStatus = null;
78 private Button changeLiveViewScale = null;
80 private boolean imageViewCreated = false;
81 private View myView = null;
82 private String messageValue = "";
84 private ICameraConnection.CameraConnectionStatus currentConnectionStatus = ICameraConnection.CameraConnectionStatus.UNKNOWN;
86 public static LiveViewFragment newInstance(IChangeScene sceneSelector, @NonNull IInterfaceProvider provider)
88 LiveViewFragment instance = new LiveViewFragment();
89 instance.prepare(sceneSelector, provider);
91 // パラメータはBundleにまとめておく
92 Bundle arguments = new Bundle();
93 //arguments.putString("title", title);
94 //arguments.putString("message", message);
95 instance.setArguments(arguments);
105 public void onCreate(Bundle savedInstanceState)
107 super.onCreate(savedInstanceState);
108 Log.v(TAG, "onCreate()");
110 if (liveViewListener == null)
112 liveViewListener = new OlympusCameraLiveViewListenerImpl();
122 public void onAttach(@NonNull Context context)
124 super.onAttach(context);
125 Log.v(TAG, "onAttach()");
133 public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
135 super.onCreateView(inflater, container, savedInstanceState);
137 Log.v(TAG, "onCreateView()");
138 if ((imageViewCreated)&&(myView != null))
141 Log.v(TAG, "onCreateView() : called again, so do nothing... : " + myView);
145 View view = inflater.inflate(R.layout.fragment_live_view, container, false);
147 imageViewCreated = true;
151 imageView = view.findViewById(R.id.cameraLiveImageView);
152 if (interfaceInjector != null)
154 interfaceInjector.injectDisplay(imageView, imageView, this);
158 Log.v(TAG, "interfaceInjector is NULL...");
160 FragmentActivity activity = this.getActivity();
161 Vibrator vibrator = (activity != null) ? (Vibrator) activity.getSystemService(VIBRATOR_SERVICE) : null;
162 if ((onClickTouchListener == null)&&(activity != null))
164 onClickTouchListener = new LiveViewClickTouchListener(activity, imageView, this, changeScene, interfaceProvider, this);
166 imageView.setOnClickListener(onClickTouchListener);
167 imageView.setOnTouchListener(onClickTouchListener);
170 view.setOnKeyListener(onClickTouchListener);
171 view.setFocusableInTouchMode(true);
173 setOnClickListener(view, R.id.hideControlPanelTextView);
174 setOnClickListener(view, R.id.showControlPanelTextView);
175 setOnClickListener(view, R.id.showKeyPanelImageView);
176 setOnClickListener(view, R.id.hideKeyPanelTextView);
177 setOnClickListener(view, R.id.shutter_button);
178 setOnClickListener(view, R.id.focusUnlockImageView);
179 setOnClickListener(view, R.id.show_images_button);
180 setOnClickListener(view, R.id.camera_power_off_button);
181 setOnClickListener(view, R.id.show_preference_button);
182 setOnClickListener(view, R.id.show_hide_grid_button);
183 setOnClickListener(view, R.id.zoom_in_button);
184 setOnClickListener(view, R.id.zoom_out_button);
185 setOnClickListener(view, R.id.specialButtonImageView);
186 setOnClickListener(view, R.id.fuji_x_hideKeyPanelTextView);
188 if (onPanelClickListener == null)
190 onPanelClickListener = new LiveViewControlPanelClickListener(activity, interfaceProvider);
192 setPanelClickListener(view, R.id.takemodeTextView);
193 setPanelClickListener(view, R.id.shutterSpeedTextView);
194 setPanelClickListener(view, R.id.apertureValueTextView);
195 setPanelClickListener(view, R.id.exposureCompensationTextView);
196 setPanelClickListener(view, R.id.aeModeImageView);
197 setPanelClickListener(view, R.id.whiteBalanceTextView);
198 setPanelClickListener(view, R.id.isoSensitivityTextView);
199 setPanelClickListener(view, R.id.setEffectImageView);
201 if (onKeyPanelClickListener == null)
203 onKeyPanelClickListener = new LiveViewKeyPanelClickListener(interfaceProvider, this, vibrator);
205 setKeyPanelClickListener(view, R.id.button_front_left);
206 setKeyPanelClickListener(view, R.id.button_front_right);
207 setKeyPanelClickListener(view, R.id.button_adjust_left);
208 setKeyPanelClickListener(view, R.id.button_adjust_enter);
209 setKeyPanelClickListener(view, R.id.button_adjust_right);
210 setKeyPanelClickListener(view, R.id.button_toggle_aeaf);
211 setKeyPanelClickListener(view, R.id.lever_ael_caf);
212 setKeyPanelClickListener(view, R.id.button_up);
213 setKeyPanelClickListener(view, R.id.button_left);
214 setKeyPanelClickListener(view, R.id.button_center_enter);
215 setKeyPanelClickListener(view, R.id.button_right);
216 setKeyPanelClickListener(view, R.id.button_down);
217 setKeyPanelClickListener(view, R.id.button_function_1);
218 setKeyPanelClickListener(view, R.id.button_function_2);
219 setKeyPanelClickListener(view, R.id.button_function_3);
220 setKeyPanelClickListener(view, R.id.button_plus);
221 setKeyPanelClickListener(view, R.id.button_minus);
222 setKeyPanelClickListener(view, R.id.button_playback);
223 setKeyPanelClickListener(view, R.id.button_acclock);
224 setKeyPanelClickListener(view, R.id.button_lcd_onoff);
225 setKeyPanelClickListener(view, R.id.button_highlight);
227 if (fujiXOnKeyPanelClickListener == null)
229 fujiXOnKeyPanelClickListener = new LiveViewFujiXKeyPanelClickListener(getActivity(), interfaceProvider, vibrator);
231 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_sv_minus);
232 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_sv_plus);
233 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_tv_minus);
234 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_tv_plus);
235 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_xv_minus);
236 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_xv_plus);
237 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_flash);
238 setFujiXKeyPanelClickListener(view, R.id.button_fuji_x_timer);
240 connectStatus = view.findViewById(R.id.connect_disconnect_button);
241 if (connectStatus != null)
243 connectStatus.setOnClickListener(onClickTouchListener);
246 View keyPanel = view.findViewById(R.id.showKeyPanelImageView);
247 ICameraButtonControl buttonControl = interfaceProvider.getButtonControl();
248 if (keyPanel != null)
250 keyPanel.setVisibility((buttonControl == null) ? View.INVISIBLE : View.VISIBLE);
251 keyPanel.invalidate();
262 private void setOnClickListener(View view, int id)
266 View button = view.findViewById(id);
269 button.setOnClickListener(onClickTouchListener);
278 private void setPanelClickListener(View view, int id)
282 View button = view.findViewById(id);
285 button.setOnClickListener(onPanelClickListener);
294 private void setKeyPanelClickListener(View view, int id)
298 View button = view.findViewById(id);
301 button.setOnClickListener(onKeyPanelClickListener);
302 button.setOnLongClickListener(onKeyPanelClickListener);
311 private void setFujiXKeyPanelClickListener(View view, int id)
315 View button = view.findViewById(id);
318 button.setOnClickListener(fujiXOnKeyPanelClickListener);
319 button.setOnLongClickListener(fujiXOnKeyPanelClickListener);
331 private void prepare(IChangeScene sceneSelector, IInterfaceProvider interfaceProvider)
333 Log.v(TAG, "prepare()");
335 this.changeScene = sceneSelector;
336 this.interfaceProvider = interfaceProvider;
337 this.interfaceInjector = interfaceProvider.getDisplayInjector();
338 this.liveViewControl = interfaceProvider.getLiveViewControl();
339 this.zoomLensControl = interfaceProvider.getZoomLensControl();
340 this.cameraInformation = interfaceProvider.getCameraInformation();
341 this.statusWatcher = interfaceProvider.getCameraStatusWatcher();
349 public void updateConnectionStatus(final ICameraConnection.CameraConnectionStatus connectionStatus)
353 currentConnectionStatus = connectionStatus;
354 runOnUiThread(new Runnable()
359 int id = R.drawable.ic_cloud_off_black_24dp;
360 if (currentConnectionStatus == ICameraConnection.CameraConnectionStatus.CONNECTING)
362 id = R.drawable.ic_cloud_queue_black_24dp;
364 else if (currentConnectionStatus == ICameraConnection.CameraConnectionStatus.CONNECTED)
366 id = R.drawable.ic_cloud_done_black_24dp;
368 if (connectStatus != null)
370 connectStatus.setImageDrawable(ResourcesCompat.getDrawable(getResources(), id, null));
371 connectStatus.invalidate();
373 if (imageView != null)
375 imageView.invalidate();
392 public void updateGridIcon()
396 FragmentActivity activity = getActivity();
397 if (activity != null)
399 if (showGrid == null) {
400 showGrid = activity.findViewById(R.id.show_hide_grid_button);
402 activity.runOnUiThread(new Runnable() {
406 int id = (imageView.isShowGrid()) ? R.drawable.ic_grid_off_black_24dp : R.drawable.ic_grid_on_black_24dp;
407 if (showGrid != null)
409 showGrid.setImageDrawable(ResourcesCompat.getDrawable(getResources(), id, null));
410 showGrid.invalidate();
412 imageView.invalidate();
428 public void changedFocusingMode()
432 if ((cameraInformation == null)||(manualFocus == null))
436 runOnUiThread(new Runnable()
441 if (currentConnectionStatus == ICameraConnection.CameraConnectionStatus.CONNECTED)
443 manualFocus.setSelected(cameraInformation.isManualFocus());
444 manualFocus.invalidate();
456 public void updateLiveViewScale(boolean isChangeScale)
460 Log.v(TAG, "updateLiveViewScale() : " + isChangeScale);
463 liveViewControl.updateMagnifyingLiveViewScale(isChangeScale);
466 float scale = liveViewControl.getMagnifyingLiveViewScale();
467 final String datavalue = "LV: " + scale;
470 float digitalZoom = liveViewControl.getDigitalZoomScale();
471 final String digitalValue = (digitalZoom > 1.0f) ? "D x" + digitalZoom : "";
474 runOnUiThread(new Runnable()
479 changeLiveViewScale.setText(datavalue);
480 changeLiveViewScale.postInvalidate();
482 focalLengthArea.setText(digitalValue);
483 focalLengthArea.postInvalidate();
499 public void onStart()
502 Log.v(TAG, "onStart()");
510 public void onResume()
513 Log.v(TAG, "onResume() Start");
515 AppCompatActivity activity = (AppCompatActivity)getActivity();
516 if (activity != null)
518 ActionBar bar = activity.getSupportActionBar();
521 bar.hide(); // ActionBarの表示を消す
525 // 撮影モードかどうかを確認して、撮影モードではなかったら撮影モードに切り替える
526 ICameraRunMode changeRunModeExecutor = interfaceProvider.getCameraRunMode();
527 if ((changeRunModeExecutor != null)&&(!changeRunModeExecutor.isRecordingMode()))
529 // Runモードを切り替える。(でも切り替えると、設定がクリアされてしまう...。)
530 changeRunModeExecutor.changeRunMode(true, this);
531 Log.v(TAG, "onResume() End");
535 Log.v(TAG, "onResume() End");
538 private void prepareToStart()
542 Context context = getContext();
545 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
547 // グリッド・フォーカスアシストの情報を戻す
548 boolean showGrid = preferences.getBoolean(IPreferencePropertyAccessor.SHOW_GRID_STATUS, false);
549 if ((imageView != null) && (imageView.isShowGrid() != showGrid)) {
550 imageView.toggleShowGridFrame();
551 imageView.postInvalidate();
554 if (currentConnectionStatus == ICameraConnection.CameraConnectionStatus.CONNECTED)
566 public void onCompleted(boolean isRecording)
572 public void onErrorOccurred(boolean isRecording)
582 public void onPause()
585 Log.v(TAG, "onPause() Start");
590 liveViewControl.stopLiveView();
598 Log.v(TAG, "onPause() End");
606 public void updateStatusView(String message)
608 messageValue = message;
609 runOnUiThread(new Runnable()
612 * カメラの状態(ステータステキスト)を更新する
613 * (ステータステキストは、プライベート変数で保持して、書き換える)
618 if (statusArea != null)
620 statusArea.setText(messageValue);
621 statusArea.invalidate();
632 public void startLiveView()
634 Log.v(TAG, " LiveViewFragment::startLiveView() ");
635 ICameraConnection.CameraConnectionMethod connectionMethod = interfaceProvider.getCammeraConnectionMethod();
636 if (liveViewControl == null)
638 if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
640 Log.v(TAG, "startLiveView() : liveViewControl is null.");
646 prepare(changeScene, interfaceProvider);
652 Context context = getContext();
653 boolean isCameraScreen = true;
656 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
657 liveViewControl.changeLiveViewSize(preferences.getString(IPreferencePropertyAccessor.LIVE_VIEW_QUALITY, IPreferencePropertyAccessor.LIVE_VIEW_QUALITY_DEFAULT_VALUE));
658 isCameraScreen = preferences.getBoolean(IPreferencePropertyAccessor.GR2_DISPLAY_CAMERA_VIEW, true);
660 ILiveViewListener lvListener = interfaceProvider.getLiveViewListener();
661 if (lvListener != null)
663 lvListener.setCameraLiveImageView(imageView);
665 liveViewControl.startLiveView(isCameraScreen); // false : ライブビューのみ、 true : カメラ画面をミラー
670 // ここでズームレンズ制御ができるか確認する
671 if ((zoomLensControl != null)&&(zoomLensControl.canZoom()))
673 //Log.v(TAG, "CAN ZOOM LENS");
674 updateZoomlensControl(true);
678 //Log.v(TAG, "NO ZOOM LENS");
679 updateZoomlensControl(false);
693 public void showFavoriteSettingDialog()
697 Log.v(TAG, "showFavoriteSettingDialog()");
698 LoadSaveMyCameraPropertyDialog dialog = LoadSaveMyCameraPropertyDialog.newInstance(new LoadSaveCameraProperties(getActivity(), interfaceProvider.getOlympusInterfaceProvider()));
699 dialog.show(getChildFragmentManager(), "favorite_dialog");
712 private void updateZoomlensControl(final boolean isVisible)
714 runOnUiThread(new Runnable() {
717 // isVisibleがtrueなら、ズームレンズボタンを有効にする
718 FragmentActivity activity = getActivity();
719 if (activity != null)
723 View view1 = activity.findViewById(R.id.zoom_out_button);
726 view1.setVisibility((isVisible) ? View.VISIBLE : View.INVISIBLE);
730 View view2 = activity.findViewById(R.id.zoom_in_button);
733 view2.setVisibility((isVisible) ? View.VISIBLE : View.INVISIBLE);
750 private void startWatchStatus()
752 if (statusWatcher != null)
754 statusWatcher.startStatusWatch(this);
762 private void stopWatchStatus()
764 if (statusWatcher != null)
766 statusWatcher.stopStatusWatch();
774 private void runOnUiThread(Runnable action)
776 FragmentActivity activity = getActivity();
777 if (activity == null)
781 activity.runOnUiThread(action);
785 public void updatedTakeMode(final String mode)
789 final FragmentActivity activity = getActivity();
790 if (activity == null)
794 activity.runOnUiThread(new Runnable()
799 TextView view = activity.findViewById(R.id.takemodeTextView);
815 public void updatedShutterSpeed(final String tv)
819 final String shutterSpeed = tv.replace(".", "/");
820 final FragmentActivity activity = getActivity();
821 if (activity == null)
825 activity.runOnUiThread(new Runnable()
830 TextView view = activity.findViewById(R.id.shutterSpeedTextView);
832 view.setText(shutterSpeed);
846 public void updatedAperture(final String av)
850 final String apertureValue = (av.length() > 1) ? ("F" + av) : "";
851 final FragmentActivity activity = getActivity();
852 if (activity == null)
856 activity.runOnUiThread(new Runnable()
861 TextView view = activity.findViewById(R.id.apertureValueTextView);
864 view.setText(apertureValue);
877 public void updatedExposureCompensation(final String xv)
881 final FragmentActivity activity = getActivity();
882 if (activity == null)
886 activity.runOnUiThread(new Runnable()
891 TextView view = activity.findViewById(R.id.exposureCompensationTextView);
907 public void updatedMeteringMode(final String meteringMode)
911 Log.v(TAG, "updatedMeteringMode() : " + meteringMode);
912 final FragmentActivity activity = getActivity();
913 if ((activity == null)||(meteringMode == null))
918 int iconId = R.drawable.ic_crop_free_black_24dp;
919 switch (meteringMode)
921 case ICameraStatus.AE_STATUS_MULTI:
922 case ICameraStatus.AE_STATUS_ESP:
923 iconId = R.drawable.ic_crop_free_black_24dp;
925 case ICameraStatus.AE_STATUS_CENTER:
926 case ICameraStatus.AE_STATUS_CENTER2:
927 iconId = R.drawable.ic_center_focus_weak_black_24dp;
929 case ICameraStatus.AE_STATUS_SPOT:
930 case ICameraStatus.AE_STATUS_PINPOINT:
931 iconId = R.drawable.ic_filter_center_focus_black_24dp;
934 final int id = iconId;
935 activity.runOnUiThread(new Runnable()
940 ImageView view = activity.findViewById(R.id.aeModeImageView);
943 view.setImageDrawable(ResourcesCompat.getDrawable(getResources(), id, null));
956 public void updatedWBMode(final String wbMode)
958 // とりあえず何もしない... 選択肢は以下 (Ricohの場合...)
959 // auto, multiAuto, daylight, shade, cloud, tungsten, warmWhiteFluorescent, daylightFluorescent, dayWhiteFluorescent, coolWhiteFluorescent, incandescent,manual1, cte, custom
967 public void updateRemainBattery(final int percentage)
971 final FragmentActivity activity = getActivity();
972 if (activity == null)
979 iconId = R.drawable.ic_battery_alert_black_24dp;
981 else if (percentage < 60)
983 iconId = R.drawable.ic_battery_20_black_24dp;
985 else if (percentage < 80)
987 iconId = R.drawable.ic_battery_60_black_24dp;
991 iconId = R.drawable.ic_battery_full_black_24dp;
993 final int id = iconId;
994 activity.runOnUiThread(new Runnable()
999 ImageView view = activity.findViewById(R.id.currentBatteryImageView);
1002 Drawable target = ResourcesCompat.getDrawable(getResources(), id, null);
1005 if (percentage <= 20)
1007 DrawableCompat.setTint(target, Color.RED);
1008 } else if (percentage <= 40)
1010 DrawableCompat.setTint(target, Color.YELLOW);
1012 view.setImageDrawable(target);
1021 e.printStackTrace();
1026 public void updateFocusedStatus(final boolean focused, final boolean focusLocked)
1028 final FragmentActivity activity = getActivity();
1031 if (activity != null)
1033 activity.runOnUiThread(new Runnable() {
1038 ImageView view = activity.findViewById(R.id.focusUnlockImageView);
1040 Drawable icon = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_center_focus_strong_black_24dp, null);
1042 DrawableCompat.setTint(icon, Color.GREEN);
1043 view.setImageDrawable(icon);
1046 Drawable icon = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_focus_free_black_24dp, null);
1048 int color = Color.BLACK;
1052 DrawableCompat.setTint(icon, color);
1053 view.setImageDrawable(icon);
1060 e.printStackTrace();
1068 e.printStackTrace();
1073 public void updateIsoSensitivity(String sv)
1075 Log.v(TAG, "updateIsoSensitivity : " + sv);
1079 public void updateWarning(String warning)
1081 Log.v(TAG, "updateWarning : " + warning);
1085 public void updateStorageStatus(String status)
1087 Log.v(TAG, "updateStorageStatus : " + status);
1091 public void updateToggleButton(boolean isOn)
1095 FragmentActivity activity = getActivity();
1096 if (activity != null)
1098 ImageView imageView = activity.findViewById(R.id.button_toggle_aeaf);
1101 imageView.setImageDrawable(ContextCompat.getDrawable(activity,R.drawable.ic_radio_button_checked_black_24dp));
1105 imageView.setImageDrawable(ContextCompat.getDrawable(activity,R.drawable.ic_radio_button_unchecked_black_24dp));
1107 imageView.invalidate();
1112 e.printStackTrace();
1117 public void updateLcdOnOff(boolean isOn)
1119 Log.v(TAG, "updateLcdOnOff() " + isOn);
1123 public void updateAFLlever(boolean isCaf)
1127 FragmentActivity activity = getActivity();
1128 if (activity != null)
1130 TextView textView = activity.findViewById(R.id.lever_ael_caf);
1133 textView.setText(getString(R.string.label_c_af));
1137 textView.setText(getString(R.string.label_aelock));
1139 textView.invalidate();
1144 e.printStackTrace();
1148 public boolean handleKeyDown(int keyCode, KeyEvent event)
1150 return (onClickTouchListener.onKey(null, keyCode, event));