IOlyCameraConnection connection = interfaceProvider.getOlyCameraConnection();
if (connection != null) {
IOlyCameraConnection.CameraConnectionStatus status = connection.getConnectionStatus();
- if (status == IOlyCameraConnection.CameraConnectionStatus.CONNECTED) {
+ if (status == IOlyCameraConnection.CameraConnectionStatus.CONNECTED)
+ {
// 接続中のときには切断する
connection.disconnect(false);
return;
void changeLiveViewSize(String size);
void setLiveViewListener(CameraLiveViewListenerImpl listener);
void startLiveView();
+
+ void setDigitalZoom(float scale);
+ void setLiveViewScale(float scale);
+
+ void updateDigitalZoom();
+ void updateMagnifyingLiveViewScale();
}
package net.osdn.gokigen.a01d.camera.olympus.wrapper;
import android.app.Activity;
+import android.content.SharedPreferences;
+import android.graphics.PointF;
+import android.support.v7.preference.PreferenceManager;
import android.util.Log;
import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.CameraPropertyUtilities;
import net.osdn.gokigen.a01d.liveview.CameraLiveViewListenerImpl;
+import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor;
+
+import java.util.Map;
import jp.co.olympus.camerakit.OLYCamera;
class OlyCameraWrapper implements ICameraRunMode, ILiveViewControl
{
private final String TAG = toString();
- //private final Activity context;
+ private final Activity context;
private final OLYCamera camera;
OlyCameraWrapper(Activity context)
{
- //this.context = context;
+ this.context = context;
camera = new OLYCamera();
camera.setContext(context.getApplicationContext());
}
e.printStackTrace();
}
}
+
+ /**
+ * デジタルズームする
+ *
+ */
+ @Override
+ public void setDigitalZoom(float scale)
+ {
+
+ }
+
+ /**
+ * ライブビューを拡大する
+ *
+ */
+ @Override
+ public void setLiveViewScale(float scale)
+ {
+
+ }
+
+ /**
+ * ライブビューを拡大する
+ *
+ */
+ @Override
+ public void updateDigitalZoom()
+ {
+ try
+ {
+ float scale = getDigitalZoomScalePreference();
+ camera.changeDigitalZoomScale(scale);
+ Log.v(TAG, "DIGITAL ZOOM SCALE : " + scale);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * ライブビューを拡大する
+ *
+ */
+ @Override
+ public void updateMagnifyingLiveViewScale()
+ {
+ try
+ {
+ float scale = getMagnifyingLiveViewScale();
+ if (scale < 5.0f)
+ {
+ if (camera.isMagnifyingLiveView())
+ {
+ camera.stopMagnifyingLiveView();
+ Log.v(TAG, "RESET LIVE VIEW SCALE : " + 1.0f);
+ }
+ return;
+ }
+ OLYCamera.MagnifyingLiveViewScale setScale;
+ if (scale >= 14.0f)
+ {
+ setScale = OLYCamera.MagnifyingLiveViewScale.X14;
+ }
+ else if (scale >= 10.0f)
+ {
+ setScale = OLYCamera.MagnifyingLiveViewScale.X10;
+ }
+ else if (scale >= 7.0f)
+ {
+ setScale = OLYCamera.MagnifyingLiveViewScale.X7;
+ }
+ else // if (scale >= 5.0f)
+ {
+ setScale = OLYCamera.MagnifyingLiveViewScale.X5;
+ }
+ changeMagnifyingLiveView(setScale);
+ Log.v(TAG, "SET LIVE VIEW SCALE : " + scale);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * ライブビューの中心を拡大する
+ *
+ */
+ private void changeMagnifyingLiveView(OLYCamera.MagnifyingLiveViewScale setScale)
+ {
+ try
+ {
+ PointF centerPoint = new PointF(0.5f, 0.5f); // 中心座標
+ if (camera.isMagnifyingLiveView())
+ {
+ camera.changeMagnifyingLiveViewScale(setScale);
+ }
+ else
+ {
+ camera.startMagnifyingLiveViewAtPoint(centerPoint, setScale);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * ライブビュー拡大倍率の設定値を応答する
+ *
+ */
+ private float getMagnifyingLiveViewScale()
+ {
+ float scale = 1.0f;
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ String value = preferences.getString(IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE, IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE_DEFAULT_VALUE);
+ try
+ {
+ scale = Float.parseFloat(value);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ scale = 1.0f;
+ }
+ return (scale);
+ }
+
+ /**
+ * デジタルズーム倍率の設定値を応答する
+ *
+ */
+ private float getDigitalZoomScalePreference()
+ {
+ float scale = 1.0f;
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ String value = preferences.getString(IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL, IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL_DEFAULT_VALUE);
+ try
+ {
+ Map<String, Float> range = camera.getDigitalZoomScaleRange();
+ float max = range.get(OLYCamera.DIGITAL_ZOOM_SCALE_RANGE_MAXIMUM_KEY);
+ float min = range.get(OLYCamera.DIGITAL_ZOOM_SCALE_RANGE_MINIMUM_KEY);
+
+ if (value.equals("MAX"))
+ {
+ scale = max;
+ }
+ else
+ {
+ scale = Float.parseFloat(value);
+ }
+ if (scale < min)
+ {
+ scale = min;
+ }
+ else if (scale > max)
+ {
+ scale = max;
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ scale = 1.0f;
+ }
+ return (scale);
+ }
}
liveViewControl.setLiveViewListener(liveViewListener);
liveViewListener.setCameraLiveImageView(imageView);
liveViewControl.startLiveView();
+
+ // デジタルズームの設定
+ liveViewControl.updateDigitalZoom();
+
+ // ライブビューの倍率設定
+ liveViewControl.updateMagnifyingLiveViewScale();
}
catch (Exception e)
{
String CAMERAKIT_VERSION = "camerakit_version";
String SHOW_GRID_STATUS = "show_grid";
+
+ String DIGITAL_ZOOM_LEVEL = "digital_zoom_level";
+ String DIGITAL_ZOOM_LEVEL_DEFAULT_VALUE = "MAX";
+
+ String MAGNIFYING_LIVE_VIEW_SCALE = "magnifying_live_view_scale";
+ String MAGNIFYING_LIVE_VIEW_SCALE_DEFAULT_VALUE = "1.0";
+
/*****
int CHOICE_SPLASH_SCREEN = 10;
private ProgressDialog busyDialog = null;
private PreferenceSynchronizer preferenceSynchronizer = null;
+ /**
+ *
+ *
+ */
public void setInterface(Context context, IOlympusInterfaceProvider factory, IChangeScene changeScene)
{
Log.v(TAG, "setInterface()");
{
editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE);
}
+ if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE))
+ {
+ editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE_DEFAULT_VALUE);
+ }
+ if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL))
+ {
+ editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL_DEFAULT_VALUE);
+ }
editor.apply();
}
+ /**
+ *
+ *
+ */
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
{
}
});
liveViewQuality.setSummary(liveViewQuality.getValue() + " " + sizeTable.get(liveViewQuality.getValue()));
- }
+ ListPreference liveViewScale = (ListPreference) findPreference(IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE);
+ liveViewScale.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ preference.setSummary(newValue + " ");
+ return (true);
+ }
+ });
+ liveViewScale.setSummary(liveViewScale.getValue() + " ");
+
+ ListPreference digitalZoom = (ListPreference) findPreference(IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL);
+ digitalZoom.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ preference.setSummary(newValue + " ");
+ return (true);
+ }
+ });
+ digitalZoom.setSummary(digitalZoom.getValue() + " ");
+ }
findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
}
focalLength = String.format(Locale.ENGLISH, "%3.0fmm", actualLength);
}
else
- {
+ {
focalLength = String.format(Locale.ENGLISH, "%3.0fmm - %3.0fmm (%3.0fmm)", minLength, maxLength, actualLength);
}
findPreference("focal_length").setSummary(focalLength);
}
}
+ /**
+ *
+ *
+ */
private void setCameraProperty(String name, String value)
{
try
}
}
+ /**
+ *
+ *
+ */
@Override
public void onResume()
{
}
+ /**
+ *
+ *
+ */
@Override
public void onPause()
{
<item >XGA</item>
<item >QUAD_VGA</item>
</string-array>
+
+ <string-array name="digital_zoom_level">
+ <item >1.0</item>
+ <item >1.5</item>
+ <item >2.0</item>
+ <item >2.5</item>
+ <item >MAX</item>
+ </string-array>
+
+ <string-array name="digital_zoom_level_value">
+ <item >1.0</item>
+ <item >1.5</item>
+ <item >2.0</item>
+ <item >2.5</item>
+ <item >MAX</item>
+ </string-array>
+
+ <string-array name="magnifying_live_view_scale">
+ <item >1.0</item>
+ <item >5.0</item>
+ <item >7.0</item>
+ <item >10.0</item>
+ <item >14.0</item>
+ </string-array>
+
+ <string-array name="magnifying_live_view_scale_value">
+ <item >1.0</item>
+ <item >5.0</item>
+ <item >7.0</item>
+ <item >10.0</item>
+ <item >14.0</item>
+ </string-array>
+
</resources>
<string name="pref_auto_connect_camera">カメラに自動接続</string>
<string name="dialog_message_power_off">カメラの電源を切り、アプリケーションを終了します。</string>
-
<string name="pref_cat_live_view">ライブビュー設定</string>
<string name="pref_live_view_quality">ライブビュー品質</string>
+ <string name="pref_digital_zoom_level">デジタルズーム倍率</string>
+ <string name="pref_magnifying_live_view_scale">ライブビュー拡大倍率</string>
<string name="pref_cat_info">カメラ情報</string>
<string name="pref_focal_length">焦点距離</string>
<item >XGA</item>
<item >QUAD_VGA</item>
</string-array>
+
+
+ <string-array name="digital_zoom_level">
+ <item >1.0</item>
+ <item >1.5</item>
+ <item >2.0</item>
+ <item >2.5</item>
+ <item >MAX</item>
+ </string-array>
+
+ <string-array name="digital_zoom_level_value">
+ <item >1.0</item>
+ <item >1.5</item>
+ <item >2.0</item>
+ <item >2.5</item>
+ <item >MAX</item>
+ </string-array>
+
+ <string-array name="magnifying_live_view_scale">
+ <item >1.0</item>
+ <item >5.0</item>
+ <item >7.0</item>
+ <item >10.0</item>
+ <item >14.0</item>
+ </string-array>
+
+ <string-array name="magnifying_live_view_scale_value">
+ <item >1.0</item>
+ <item >5.0</item>
+ <item >7.0</item>
+ <item >10.0</item>
+ <item >14.0</item>
+ </string-array>
+
</resources>
<string name="pref_cat_live_view">Live View Settings</string>
<string name="pref_live_view_quality">Live View Quality</string>
+ <string name="pref_digital_zoom_level">Digital Zoom Level</string>
+ <string name="pref_magnifying_live_view_scale">Magnifying Live View Scale</string>
<string name="pref_cat_info">Information</string>
<string name="pref_focal_length">Focal Length</string>
<PreferenceCategory
android:title="@string/pref_cat_live_view">
<ListPreference
- android:title="@string/pref_live_view_quality"
- android:entryValues="@array/live_view_quality_value"
- android:entries="@array/live_view_quality"
- android:key="live_view_quality"
- android:defaultValue="QVGA"/>
+ android:title="@string/pref_live_view_quality"
+ android:entryValues="@array/live_view_quality_value"
+ android:entries="@array/live_view_quality"
+ android:key="live_view_quality"
+ android:defaultValue="QVGA"/>
+
+ <ListPreference
+ android:title="@string/pref_magnifying_live_view_scale"
+ android:entryValues="@array/magnifying_live_view_scale_value"
+ android:entries="@array/magnifying_live_view_scale"
+ android:key="magnifying_live_view_scale"
+ android:defaultValue="1.0" />
+
+ <ListPreference
+ android:title="@string/pref_digital_zoom_level"
+ android:entryValues="@array/digital_zoom_level_value"
+ android:entries="@array/digital_zoom_level"
+ android:key="digital_zoom_level"
+ android:defaultValue="MAX" />
+
</PreferenceCategory>
<PreferenceCategory