String RESOLUTION = "reso";
String DRIVE_MODE = "shootMode";
String WHITE_BALANCE = "WBMode";
+
String AE = "meteringMode";
+ String AE_STATUS_MULTI = "multi";
+ String AE_STATUS_ESP = "ESP";
+ String AE_STATUS_SPOT = "spot";
+ String AE_STATUS_PINPOINT = "Spot";
+ String AE_STATUS_CENTER = "center";
+ String AE_STATUS_CENTER2 = "Ctr-Weighted";
+
String EFFECT = "effect";
String TAKE_MODE = "exposureMode";
String IMAGESIZE = "stillSize";
String ISO_SENSITIVITY = "sv";
String EXPREV = "xv";
String FLASH_XV = "flashxv";
+
+
+
}
import jp.co.olympus.camerakit.OLYCameraPropertyListener;
import jp.co.olympus.camerakit.OLYCameraStatusListener;
+/**
+ *
+ *
+ */
public class OlyCameraStatusWrapper implements ICameraStatus, ICameraStatusWatcher, OLYCameraStatusListener, OLYCameraPropertyListener
{
private final String TAG = toString();
private static final String CAMERA_STATUS_EXPOSURE_WARNING = "ExposureWarning";
private static final String CAMERA_STATUS_EXPOSURE_METERING_WARNING = "ExposureMeteringWarning";
private static final String CAMERA_STATUS_HIGH_TEMPERATURE_WARNING = "HighTemperatureWarning";
-/*
private static final String CAMERA_STATUS_DETECT_FACES = "DetectedHumanFaces";
private static final String CAMERA_STATUS_FOCAL_LENGTH = "ActualFocalLength";
private static final String CAMERA_STATUS_LEVEL_GAUGE = "LevelGauge";
-*/
private String currentTakeMode = "";
private String currentMeteringMode = "";
}
+ private String convertToOpcKey(@NonNull String key)
+ {
+ String opcKey = "";
+ switch (key)
+ {
+ case EFFECT:
+ opcKey = "COLORTONE";
+ break;
+ case TAKE_MODE:
+ opcKey = "TAKEMODE";
+ break;
+ case APERATURE:
+ opcKey = "APERTURE";
+ break;
+ case SHUTTER_SPEED:
+ opcKey = "SHUTTER";
+ break;
+ case ISO_SENSITIVITY:
+ opcKey = "ISO";
+ break;
+ case EXPREV:
+ opcKey = "EXPREV";
+ break;
+ case WHITE_BALANCE:
+ opcKey = "WB";
+ break;
+ case AE:
+ opcKey = "AE";
+ break;
+ case IMAGESIZE:
+ opcKey = "IMAGESIZE";
+ break;
+ case MOVIESIZE:
+ opcKey = "QUALITY_MOVIE";
+ break;
+ case DRIVE_MODE:
+ opcKey = "TAKE_DRIVE";
+ break;
+ case FOCUS_MODE:
+ opcKey = "TAKE_DRIVE";
+ break;
+ case AF_MODE:
+ opcKey = "FOCUS_STILL";
+ break;
+ case FLASH_XV:
+ break;
+ }
+ return (opcKey);
+ }
+
@Override
public @NonNull List<String> getStatusList(@NonNull String key)
{
List<String> array = new ArrayList<>();
-
- // OPC用に変更...
-/*
- String BATTERY = "battery";
- String STATE = "state";
- String FOCUS_MODE = "focusMode";
- String AF_MODE = "AFMode";
-
- String RESOLUTION = "reso";
- String DRIVE_MODE = "shootMode";
- String WHITE_BALANCE = "WBMode";
- String AE = "meteringMode";
-
- String EFFECT = "effect";
- String TAKE_MODE = "exposureMode";
- String IMAGESIZE = "stillSize";
- String MOVIESIZE = "movieSize";
-
- String APERATURE = "av";
- String SHUTTER_SPEED = "tv";
- String ISO_SENSITIVITY = "sv";
- String EXPREV = "xv";
- String FLASH_XV = "flashxv";
-*/
+ String opcKey = convertToOpcKey(key);
+ if (opcKey.length() < 1)
+ {
+ return (array);
+ }
+ try
+ {
+ List<String> values = camera.getCameraPropertyValueList(opcKey);
+ for (String value : values)
+ {
+ array.add(camera.getCameraPropertyValueTitle(value));
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
return (array);
}
@Override
public String getStatus(@NonNull String key)
{
+ String opcKey = convertToOpcKey(key);
+ if (opcKey.length() < 1)
+ {
+ return ("");
+ }
+ try
+ {
+ return (camera.getCameraPropertyValueTitle(camera.getCameraPropertyValue(opcKey)));
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
return ("");
}
@Override
public void setStatus(@NonNull String key, @NonNull String value)
{
-
+ Log.v(TAG, "setStatus : " + key + " " + value);
+ try
+ {
+ String opcKey = convertToOpcKey(key);
+ if (opcKey.length() < 1)
+ {
+ return;
+ }
+ List<String> values = camera.getCameraPropertyValueList(opcKey);
+ for (String item : values)
+ {
+ String valueTitle = camera.getCameraPropertyValueTitle(item);
+ if (value.equals(valueTitle))
+ {
+ camera.setCameraPropertyValue(opcKey, item);
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
@Override
try
{
camera.setCameraStatusListener(this);
+ camera.setCameraPropertyListener(this);
}
catch (Exception e)
{
public void stoptStatusWatch()
{
this.updateReceiver = null;
-
}
@Override
case CAMERA_STATUS_MEDIA_ERROR:
updateReceiver.updateStorageStatus(name);
break;
+ case CAMERA_STATUS_DETECT_FACES:
+ case CAMERA_STATUS_FOCAL_LENGTH:
+ case CAMERA_STATUS_LEVEL_GAUGE:
default:
- checkUpdateStatus(olyCamera);
break;
}
}
int percentage = 0;
Log.v(TAG, "currentRemainBattery : " + currentRemainBattery);
-/*
- UNKNOWN 未検出
- CHARGE 充電中
- EMPTY 電池残量0
- WARNING 電池残量小
- LOW 電池残量中間
- FULL 電池残量フル
- EMPTY_AC 電池残量0/給電
- SUPPLY_WARNING 電池残量小/給電
- SUPPLY_LOW 電池残量中間/給電
- SUPPLY_FULL 電池残量フル/給電
- */
+
updateReceiver.updateRemainBattery(percentage);
}
String shutterSpeed = getPropertyTitle(olyCamera, "SHUTTER");
this.interfaceProvider = interfaceProvider;
}
-
@Override
public void onClick(View view)
{
{
case R.id.takemodeTextView:
// 撮影モードは変えられない...なぜ?
- // selectTakeMode(statusList);
+ selectTakeMode(statusList);
break;
case R.id.shutterSpeedTextView:
selectExposureCompensation(statusList);
break;
- case R.id.aeModeTextView:
+ case R.id.aeModeImageView:
selectAeMode(statusList);
break;
- case R.id.whiteBalanceImageView:
+ case R.id.whiteBalanceTextView:
selectWhiteBalance(statusList);
break;
}
}
-
private void selectWhiteBalance(@NonNull ICameraStatus statusList)
{
Log.v(TAG,"selectWhiteBalance()");
import net.osdn.gokigen.gr2control.camera.ICameraConnection;
import net.osdn.gokigen.gr2control.camera.ICameraInformation;
import net.osdn.gokigen.gr2control.camera.ICameraRunMode;
+import net.osdn.gokigen.gr2control.camera.ICameraStatus;
import net.osdn.gokigen.gr2control.camera.ICameraStatusWatcher;
import net.osdn.gokigen.gr2control.camera.IDisplayInjector;
import net.osdn.gokigen.gr2control.camera.IFocusingModeNotify;
setPanelClickListener(view, R.id.shutterSpeedTextView);
setPanelClickListener(view, R.id.apertureValueTextView);
setPanelClickListener(view, R.id.exposureCompensationTextView);
- setPanelClickListener(view, R.id.aeModeTextView);
- setPanelClickListener(view, R.id.whiteBalanceImageView);
+ setPanelClickListener(view, R.id.aeModeImageView);
+ setPanelClickListener(view, R.id.whiteBalanceTextView);
setPanelClickListener(view, R.id.setEffectImageView);
if (onKeyPanelClickListener == null)
{
try
{
+ Log.v(TAG, "updatedMeteringMode() : " + meteringMode);
final Activity activity = getActivity();
- if (activity == null)
+ if ((activity == null)||(meteringMode == null))
{
return;
}
+
+ int iconId = R.drawable.ic_crop_free_black_24dp;
+ switch (meteringMode)
+ {
+ case ICameraStatus.AE_STATUS_MULTI:
+ case ICameraStatus.AE_STATUS_ESP:
+ iconId = R.drawable.ic_crop_free_black_24dp;
+ break;
+ case ICameraStatus.AE_STATUS_CENTER:
+ case ICameraStatus.AE_STATUS_CENTER2:
+ iconId = R.drawable.ic_center_focus_weak_black_24dp;
+ break;
+ case ICameraStatus.AE_STATUS_SPOT:
+ case ICameraStatus.AE_STATUS_PINPOINT:
+ iconId = R.drawable.ic_filter_center_focus_black_24dp;
+ break;
+ }
+ final int id = iconId;
activity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
- TextView view = activity.findViewById(R.id.aeModeTextView);
+ ImageView view = activity.findViewById(R.id.aeModeImageView);
if (view != null)
{
- view.setText(meteringMode);
+ view.setImageDrawable(ResourcesCompat.getDrawable(getResources(), id, null));
view.invalidate();
}
}
@Override
public void updatedWBMode(final String wbMode)
{
- // とりあえず何もしない... 選択肢は以下
+ // とりあえず何もしない... 選択肢は以下 (Ricohの場合...)
// auto, multiAuto, daylight, shade, cloud, tungsten, warmWhiteFluorescent, daylightFluorescent, dayWhiteFluorescent, coolWhiteFluorescent, incandescent,manual1, cte, custom
}
--- /dev/null
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M12,8c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4zM5,15L3,15v4c0,1.1 0.9,2 2,2h4v-2L5,19v-4zM5,5h4L9,3L5,3c-1.1,0 -2,0.9 -2,2v4h2L5,5zM19,3h-4v2h4v4h2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19h-4v2h4c1.1,0 2,-0.9 2,-2v-4h-2v4z"/>
+</vector>
--- /dev/null
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M5,15L3,15v4c0,1.1 0.9,2 2,2h4v-2L5,19v-4zM5,5h4L9,3L5,3c-1.1,0 -2,0.9 -2,2v4h2L5,5zM19,3h-4v2h4v4h2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19h-4v2h4c1.1,0 2,-0.9 2,-2v-4h-2v4zM12,8c-2.21,0 -4,1.79 -4,4s1.79,4 4,4 4,-1.79 4,-4 -1.79,-4 -4,-4zM12,14c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
+</vector>
--- /dev/null
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M5,15L3,15v4c0,1.1 0.9,2 2,2h4v-2L5,19v-4zM5,5h4L9,3L5,3c-1.1,0 -2,0.9 -2,2v4h2L5,5zM19,3h-4v2h4v4h2L21,5c0,-1.1 -0.9,-2 -2,-2zM19,19h-4v2h4c1.1,0 2,-0.9 2,-2v-4h-2v4zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
+</vector>
android:textSize="12pt" />
-->
- <TextView
- android:id="@+id/aeModeTextView"
+ <ImageView
+ android:id="@+id/aeModeImageView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:clickable="true"
android:focusable="true"
- android:text="AE"
- android:textColor="@color/setting_text_color"
- android:textStyle="bold"
- android:textSize="12pt" />
+ android:src="@drawable/ic_crop_free_black_24dp" />
- <ImageView
- android:id="@+id/whiteBalanceImageView"
+ <TextView
+ android:id="@+id/whiteBalanceTextView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:clickable="true"
android:focusable="true"
- android:src="@drawable/ic_wb_auto_black_24dp" />
+ android:text="@string/white_balance"
+ android:textColor="@color/setting_text_color"
+ android:textStyle="bold"
+ android:textSize="12pt" />
<ImageView
android:id="@+id/setEffectImageView"
<string name="label_aelock">AEL/AFL</string>
<string name="label_c_af">C-AF</string>
+ <string name="white_balance">WB</string>
+
<string name="exif_datetime_title">Date : </string>
<string name="exif_exposure_time_title">Exposure Time : </string>
<string name="exif_aperture_title">Aperture : </string>