From 5fdb14451ea5e64713f48480cb981d4484910f4e Mon Sep 17 00:00:00 2001 From: MRSa Date: Fri, 15 Jun 2018 00:45:03 +0900 Subject: [PATCH] =?utf8?q?SONY=E6=A9=9F=E3=81=A7=E3=81=AEPreference?= =?utf8?q?=E3=82=92=E6=BA=96=E5=82=99=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../main/java/net/osdn/gokigen/a01d/A01dMain.java | 22 +- .../a01d/camera/CameraInterfaceProvider.java | 3 +- .../camera/olympus/operation/CameraPowerOff.java | 2 +- .../camera/olympus/wrapper/OlyCameraWrapper.java | 4 +- .../olympus/wrapper/OlyCameraZoomLensControl.java | 2 +- .../connection/ble/OlyCameraPowerOnSelector.java | 2 +- .../gokigen/a01d/liveview/CameraLiveImageView.java | 3 +- .../a01d/liveview/LiveViewClickTouchListener.java | 2 +- .../gokigen/a01d/liveview/LiveViewFragment.java | 2 +- .../{ => olympus}/IPreferencePropertyAccessor.java | 2 +- .../{ => olympus}/PreferenceFragment.java | 72 +++-- .../{ => olympus}/PreferenceSynchronizer.java | 8 +- .../preference/sony/SonyPreferenceFragment.java | 313 +++++++++++++++++++++ app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences_sony.xml | 65 +++++ 16 files changed, 453 insertions(+), 51 deletions(-) rename app/src/main/java/net/osdn/gokigen/a01d/preference/{ => olympus}/IPreferencePropertyAccessor.java (96%) rename app/src/main/java/net/osdn/gokigen/a01d/preference/{ => olympus}/PreferenceFragment.java (82%) rename app/src/main/java/net/osdn/gokigen/a01d/preference/{ => olympus}/PreferenceSynchronizer.java (79%) create mode 100644 app/src/main/java/net/osdn/gokigen/a01d/preference/sony/SonyPreferenceFragment.java create mode 100644 app/src/main/res/xml/preferences_sony.xml diff --git a/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java b/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java index 158f12e..a4d08a7 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java @@ -10,6 +10,7 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.support.v7.preference.PreferenceFragmentCompat; import android.support.v7.preference.PreferenceManager; import android.util.Log; import android.view.WindowManager; @@ -24,8 +25,9 @@ import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.ICameraPowerO import net.osdn.gokigen.a01d.liveview.IStatusViewDrawer; import net.osdn.gokigen.a01d.liveview.LiveViewFragment; import net.osdn.gokigen.a01d.logcat.LogCatFragment; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; -import net.osdn.gokigen.a01d.preference.PreferenceFragment; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.PreferenceFragment; +import net.osdn.gokigen.a01d.preference.sony.SonyPreferenceFragment; /** * A01d ; @@ -37,7 +39,7 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver private IInterfaceProvider interfaceProvider = null; private IStatusViewDrawer statusViewDrawer = null; - private PreferenceFragment preferenceFragment = null; + private PreferenceFragmentCompat preferenceFragment = null; private OlyCameraPropertyListFragment propertyListFragment = null; private LogCatFragment logCatFragment = null; @@ -245,11 +247,17 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver { try { - if (preferenceFragment == null) - { - preferenceFragment = new PreferenceFragment(); + if (preferenceFragment == null) { + if (useOlympusCamera()) + { + preferenceFragment = PreferenceFragment.newInstance(this, interfaceProvider, this); + } + else + { + preferenceFragment = SonyPreferenceFragment.newInstance(this, interfaceProvider, this); + } } - preferenceFragment.setInterface(this, interfaceProvider, this); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment1, preferenceFragment); // backstackに追加 diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/CameraInterfaceProvider.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/CameraInterfaceProvider.java index f89e5cc..51b92c5 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/CameraInterfaceProvider.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/CameraInterfaceProvider.java @@ -6,12 +6,11 @@ import android.support.annotation.NonNull; import android.support.v7.preference.PreferenceManager; import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlympusLiveViewListener; -import net.osdn.gokigen.a01d.camera.sony.wrapper.IDisplayInjector; import net.osdn.gokigen.a01d.camera.olympus.IOlympusInterfaceProvider; import net.osdn.gokigen.a01d.camera.olympus.wrapper.OlympusInterfaceProvider; import net.osdn.gokigen.a01d.camera.sony.ISonyInterfaceProvider; import net.osdn.gokigen.a01d.camera.sony.wrapper.SonyCameraWrapper; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; public class CameraInterfaceProvider implements IInterfaceProvider { diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/operation/CameraPowerOff.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/operation/CameraPowerOff.java index b9ff9a7..20ca994 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/operation/CameraPowerOff.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/operation/CameraPowerOff.java @@ -7,7 +7,7 @@ import android.support.v7.preference.Preference; import net.osdn.gokigen.a01d.ConfirmationDialog; import net.osdn.gokigen.a01d.IChangeScene; import net.osdn.gokigen.a01d.R; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; /** * Preferenceがクリックされた時に処理するクラス diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraWrapper.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraWrapper.java index 7a51ffd..654514c 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraWrapper.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraWrapper.java @@ -8,7 +8,7 @@ import android.util.Log; import net.osdn.gokigen.a01d.camera.ILiveViewControl; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.CameraPropertyUtilities; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; import java.util.Map; @@ -299,7 +299,7 @@ class OlyCameraWrapper implements ICameraRunMode, ILiveViewControl, IOlympusLive if (changeValue != null) { SharedPreferences.Editor editor = preferences.edit(); - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE, changeValue); + editor.putString(IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE, changeValue); editor.apply(); } } diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraZoomLensControl.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraZoomLensControl.java index 8d9c6d1..57a72ee 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraZoomLensControl.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraZoomLensControl.java @@ -6,7 +6,7 @@ import android.support.v7.preference.PreferenceManager; import android.util.Log; import net.osdn.gokigen.a01d.camera.IZoomLensControl; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; import jp.co.olympus.camerakit.OLYCamera; diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/OlyCameraPowerOnSelector.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/OlyCameraPowerOnSelector.java index 60e8a0c..9fa6b69 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/OlyCameraPowerOnSelector.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/OlyCameraPowerOnSelector.java @@ -5,7 +5,7 @@ import android.util.Log; import net.osdn.gokigen.a01d.ConfirmationDialog; import net.osdn.gokigen.a01d.R; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; /** * Olympus AIR の Bluetooth設定を記録する diff --git a/app/src/main/java/net/osdn/gokigen/a01d/liveview/CameraLiveImageView.java b/app/src/main/java/net/osdn/gokigen/a01d/liveview/CameraLiveImageView.java index 803cec6..fbbe4e3 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/liveview/CameraLiveImageView.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/liveview/CameraLiveImageView.java @@ -27,11 +27,10 @@ import net.osdn.gokigen.a01d.liveview.bitmapconvert.ImageConvertFactory; import net.osdn.gokigen.a01d.liveview.gridframe.GridFrameFactory; import net.osdn.gokigen.a01d.liveview.gridframe.IGridFrameDrawer; import net.osdn.gokigen.a01d.liveview.liveviewlistener.IImageDataReceiver; -import net.osdn.gokigen.a01d.liveview.liveviewlistener.OlympusCameraLiveViewListenerImpl; import net.osdn.gokigen.a01d.liveview.message.IMessageDrawer; import net.osdn.gokigen.a01d.liveview.message.IMessageHolder; import net.osdn.gokigen.a01d.liveview.message.ShowMessageHolder; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; import java.util.Map; import java.util.Timer; diff --git a/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewClickTouchListener.java b/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewClickTouchListener.java index bb1cbb5..5fd361f 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewClickTouchListener.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewClickTouchListener.java @@ -18,7 +18,7 @@ import net.osdn.gokigen.a01d.camera.ICameraConnection; import net.osdn.gokigen.a01d.camera.IZoomLensControl; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraProperty; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; /** * diff --git a/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java b/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java index 0331e6b..802b2c1 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java @@ -33,7 +33,7 @@ import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraProperty; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider; import net.osdn.gokigen.a01d.liveview.liveviewlistener.ILiveViewListener; import net.osdn.gokigen.a01d.liveview.liveviewlistener.OlympusCameraLiveViewListenerImpl; -import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; /** * 撮影用ライブビュー画面 diff --git a/app/src/main/java/net/osdn/gokigen/a01d/preference/IPreferencePropertyAccessor.java b/app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/IPreferencePropertyAccessor.java similarity index 96% rename from app/src/main/java/net/osdn/gokigen/a01d/preference/IPreferencePropertyAccessor.java rename to app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/IPreferencePropertyAccessor.java index c64e0af..0584000 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/preference/IPreferencePropertyAccessor.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/IPreferencePropertyAccessor.java @@ -1,4 +1,4 @@ -package net.osdn.gokigen.a01d.preference; +package net.osdn.gokigen.a01d.preference.olympus; /** * diff --git a/app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceFragment.java b/app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/PreferenceFragment.java similarity index 82% rename from app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceFragment.java rename to app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/PreferenceFragment.java index 54b841a..be43dc3 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceFragment.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/PreferenceFragment.java @@ -1,5 +1,6 @@ -package net.osdn.gokigen.a01d.preference; +package net.osdn.gokigen.a01d.preference.olympus; +import android.support.annotation.NonNull; import android.support.v4.app.FragmentActivity; import android.support.v7.app.AppCompatActivity; import android.app.ProgressDialog; @@ -21,7 +22,6 @@ import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraRunMode; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.OlyCameraPowerOnSelector; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraProperty; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider; -import net.osdn.gokigen.a01d.camera.olympus.IOlympusInterfaceProvider; import net.osdn.gokigen.a01d.camera.olympus.operation.CameraPowerOff; import net.osdn.gokigen.a01d.logcat.LogCatViewer; @@ -49,11 +49,27 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar private ProgressDialog busyDialog = null; private PreferenceSynchronizer preferenceSynchronizer = null; + + public static PreferenceFragment newInstance(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider factory, @NonNull IChangeScene changeScene) + { + PreferenceFragment instance = new PreferenceFragment(); + instance.setInterface(context, factory, changeScene); + + // パラメータはBundleにまとめておく + Bundle arguments = new Bundle(); + //arguments.putString("title", title); + //arguments.putString("message", message); + instance.setArguments(arguments); + + return (instance); + } + + /** * * */ - public void setInterface(AppCompatActivity context, IInterfaceProvider factory, IChangeScene changeScene) + private void setInterface(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider factory, @NonNull IChangeScene changeScene) { Log.v(TAG, "setInterface()"); this.propertyInterface = factory.getOlympusInterface().getCameraPropertyProvider(); @@ -98,53 +114,53 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar Map items = preferences.getAll(); SharedPreferences.Editor editor = preferences.edit(); - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.TAKE_MODE)) + if (!items.containsKey(IPreferencePropertyAccessor.TAKE_MODE)) { - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.TAKE_MODE, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.TAKE_MODE_DEFAULT_VALUE); + editor.putString(IPreferencePropertyAccessor.TAKE_MODE, IPreferencePropertyAccessor.TAKE_MODE_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.LIVE_VIEW_QUALITY)) + if (!items.containsKey(IPreferencePropertyAccessor.LIVE_VIEW_QUALITY)) { - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.LIVE_VIEW_QUALITY, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.LIVE_VIEW_QUALITY_DEFAULT_VALUE); + editor.putString(IPreferencePropertyAccessor.LIVE_VIEW_QUALITY, IPreferencePropertyAccessor.LIVE_VIEW_QUALITY_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL)) + if (!items.containsKey(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL)) { - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE); + editor.putString(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.RAW)) + if (!items.containsKey(IPreferencePropertyAccessor.RAW)) { - editor.putBoolean(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.RAW, true); + editor.putBoolean(IPreferencePropertyAccessor.RAW, true); } if (!items.containsKey(IPreferencePropertyAccessor.BLE_POWER_ON)) { - editor.putBoolean(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.BLE_POWER_ON, false); + editor.putBoolean(IPreferencePropertyAccessor.BLE_POWER_ON, false); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA)) + if (!items.containsKey(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA)) { - editor.putBoolean(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true); + editor.putBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW)) + if (!items.containsKey(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW)) { - editor.putBoolean(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true); + editor.putBoolean(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL)) + if (!items.containsKey(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL)) { - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE); + editor.putString(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE)) + if (!items.containsKey(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); + editor.putString(IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE, IPreferencePropertyAccessor.MAGNIFYING_LIVE_VIEW_SCALE_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL)) + if (!items.containsKey(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.putString(IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL, IPreferencePropertyAccessor.DIGITAL_ZOOM_LEVEL_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.POWER_ZOOM_LEVEL)) + if (!items.containsKey(IPreferencePropertyAccessor.POWER_ZOOM_LEVEL)) { - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.POWER_ZOOM_LEVEL, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.POWER_ZOOM_LEVEL_DEFAULT_VALUE); + editor.putString(IPreferencePropertyAccessor.POWER_ZOOM_LEVEL, IPreferencePropertyAccessor.POWER_ZOOM_LEVEL_DEFAULT_VALUE); } - if (!items.containsKey(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.CONNECTION_METHOD)) + if (!items.containsKey(IPreferencePropertyAccessor.CONNECTION_METHOD)) { - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.CONNECTION_METHOD, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE); + editor.putString(IPreferencePropertyAccessor.CONNECTION_METHOD, IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE); } editor.apply(); } @@ -488,8 +504,8 @@ public class PreferenceFragment extends PreferenceFragmentCompat implements Shar public void run() { try { // Preferenceの画面に反映させる - setListPreference(IPreferencePropertyAccessor.TAKE_MODE, IPreferencePropertyAccessor.TAKE_MODE, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.TAKE_MODE_DEFAULT_VALUE); - setListPreference(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE); + setListPreference(IPreferencePropertyAccessor.TAKE_MODE, IPreferencePropertyAccessor.TAKE_MODE, IPreferencePropertyAccessor.TAKE_MODE_DEFAULT_VALUE); + setListPreference(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL_DEFAULT_VALUE); setBooleanPreference(IPreferencePropertyAccessor.RAW, IPreferencePropertyAccessor.RAW, true); setBooleanPreference(IPreferencePropertyAccessor.BLE_POWER_ON, IPreferencePropertyAccessor.BLE_POWER_ON, false); setBooleanPreference(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true); diff --git a/app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceSynchronizer.java b/app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/PreferenceSynchronizer.java similarity index 79% rename from app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceSynchronizer.java rename to app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/PreferenceSynchronizer.java index 953416e..6753144 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/preference/PreferenceSynchronizer.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/preference/olympus/PreferenceSynchronizer.java @@ -1,4 +1,4 @@ -package net.osdn.gokigen.a01d.preference; +package net.osdn.gokigen.a01d.preference.olympus; import android.content.SharedPreferences; import android.util.Log; @@ -43,11 +43,11 @@ class PreferenceSynchronizer implements Runnable { Log.v(TAG, "run()"); SharedPreferences.Editor editor = preference.edit(); - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.TAKE_MODE, getPropertyValue(IOlyCameraProperty.TAKE_MODE)); - editor.putString(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, getPropertyValue(IOlyCameraProperty.SOUND_VOLUME_LEVEL)); + editor.putString(IPreferencePropertyAccessor.TAKE_MODE, getPropertyValue(IOlyCameraProperty.TAKE_MODE)); + editor.putString(IPreferencePropertyAccessor.SOUND_VOLUME_LEVEL, getPropertyValue(IOlyCameraProperty.SOUND_VOLUME_LEVEL)); boolean value = getPropertyValue(IOlyCameraProperty.RAW).equals("ON"); - editor.putBoolean(net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor.RAW, value); + editor.putBoolean(IPreferencePropertyAccessor.RAW, value); editor.apply(); if (callback != null) { diff --git a/app/src/main/java/net/osdn/gokigen/a01d/preference/sony/SonyPreferenceFragment.java b/app/src/main/java/net/osdn/gokigen/a01d/preference/sony/SonyPreferenceFragment.java new file mode 100644 index 0000000..e222865 --- /dev/null +++ b/app/src/main/java/net/osdn/gokigen/a01d/preference/sony/SonyPreferenceFragment.java @@ -0,0 +1,313 @@ +package net.osdn.gokigen.a01d.preference.sony; + +import android.content.Context; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.FragmentActivity; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.preference.CheckBoxPreference; +import android.support.v7.preference.ListPreference; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceFragmentCompat; +import android.support.v7.preference.PreferenceManager; +import android.util.Log; + +import net.osdn.gokigen.a01d.IChangeScene; +import net.osdn.gokigen.a01d.R; +import net.osdn.gokigen.a01d.camera.IInterfaceProvider; +import net.osdn.gokigen.a01d.camera.olympus.operation.CameraPowerOff; +import net.osdn.gokigen.a01d.logcat.LogCatViewer; +import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor; + +import java.util.Map; + +/** + * + * + */ +public class SonyPreferenceFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener +{ + private final String TAG = toString(); + private SharedPreferences preferences = null; + private CameraPowerOff powerOffController = null; + private LogCatViewer logCatViewer = null; + + /** + * + * + */ + public static SonyPreferenceFragment newInstance(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider factory, @NonNull IChangeScene changeScene) + { + SonyPreferenceFragment instance = new SonyPreferenceFragment(); + instance.prepare(context, factory, changeScene); + + // パラメータはBundleにまとめておく + Bundle arguments = new Bundle(); + //arguments.putString("title", title); + //arguments.putString("message", message); + instance.setArguments(arguments); + + return (instance); + } + + /** + * + * + */ + private void prepare(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider factory, @NonNull IChangeScene changeScene) + { + try + { + powerOffController = new CameraPowerOff(context, changeScene); + powerOffController.prepare(); + + logCatViewer = new LogCatViewer(changeScene); + logCatViewer.prepare(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * + * + */ + @Override + public void onAttach(Context activity) + { + super.onAttach(activity); + Log.v(TAG, "onAttach()"); + + try + { + // Preference をつかまえる + preferences = PreferenceManager.getDefaultSharedPreferences(activity); + + // Preference を初期設定する + initializePreferences(); + + preferences.registerOnSharedPreferenceChangeListener(this); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * Preferenceの初期化... + * + */ + private void initializePreferences() + { + try + { + Map items = preferences.getAll(); + SharedPreferences.Editor editor = preferences.edit(); + + if (!items.containsKey(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA)) { + editor.putBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true); + } + if (!items.containsKey(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW)) { + editor.putBoolean(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true); + } + if (!items.containsKey(IPreferencePropertyAccessor.CONNECTION_METHOD)) { + editor.putString(IPreferencePropertyAccessor.CONNECTION_METHOD, IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE); + } + editor.apply(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * + * + */ + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) + { + Log.v(TAG, "onSharedPreferenceChanged() : " + key); + boolean value; + if (key != null) + { + switch (key) + { + case IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA: + value = preferences.getBoolean(key, true); + Log.v(TAG, " " + key + " , " + value); + break; + + case IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW: + value = preferences.getBoolean(key, true); + Log.v(TAG, " " + key + " , " + value); + break; + + default: + String strValue = preferences.getString(key, ""); + setListPreference(key, key, strValue); + break; + } + } + } + + /** + * + * + */ + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) + { + Log.v(TAG, "onCreatePreferences()"); + try + { + //super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.preferences_sony); + + ListPreference connectionMethod = (ListPreference) findPreference(IPreferencePropertyAccessor.CONNECTION_METHOD); + connectionMethod.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + preference.setSummary(newValue + " "); + return (true); + } + }); + connectionMethod.setSummary(connectionMethod.getValue() + " "); + + findPreference("exit_application").setOnPreferenceClickListener(powerOffController); + findPreference("debug_info").setOnPreferenceClickListener(logCatViewer); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * + * + */ + @Override + public void onResume() + { + super.onResume(); + Log.v(TAG, "onResume() Start"); + + try + { + synchronizedProperty(); + } + catch (Exception e) + { + e.printStackTrace(); + } + + Log.v(TAG, "onResume() End"); + + } + + /** + * + * + */ + @Override + public void onPause() + { + super.onPause(); + Log.v(TAG, "onPause() Start"); + + try + { + // Preference変更のリスナを解除 + preferences.unregisterOnSharedPreferenceChangeListener(this); + } + catch (Exception e) + { + e.printStackTrace(); + } + + Log.v(TAG, "onPause() End"); + } + + /** + * ListPreference の表示データを設定 + * + * @param pref_key Preference(表示)のキー + * @param key Preference(データ)のキー + * @param defaultValue Preferenceのデフォルト値 + */ + private void setListPreference(String pref_key, String key, String defaultValue) + { + try + { + ListPreference pref; + pref = (ListPreference) findPreference(pref_key); + String value = preferences.getString(key, defaultValue); + if (pref != null) + { + pref.setValue(value); + pref.setSummary(value); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * BooleanPreference の表示データを設定 + * + * @param pref_key Preference(表示)のキー + * @param key Preference(データ)のキー + * @param defaultValue Preferenceのデフォルト値 + */ + private void setBooleanPreference(String pref_key, String key, boolean defaultValue) + { + try + { + CheckBoxPreference pref = (CheckBoxPreference) findPreference(pref_key); + if (pref != null) { + boolean value = preferences.getBoolean(key, defaultValue); + pref.setChecked(value); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + /** + * + * + */ + private void synchronizedProperty() + { + final FragmentActivity activity = getActivity(); + if (activity != null) + { + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + try + { + // Preferenceの画面に反映させる + setBooleanPreference(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true); + setBooleanPreference(IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, IPreferencePropertyAccessor.CAPTURE_BOTH_CAMERA_AND_LIVE_VIEW, true); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + }); + } + } + +} diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 2824402..7775fd1 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -25,6 +25,7 @@ アプリ制御 アプリ終了(とカメラOFF) + アプリ終了 起動時設定 カメラに自動接続 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e18f612..474eaa1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -26,6 +26,7 @@ App. Control Exit Application(and Camera OFF) + Exit Application App. Startup diff --git a/app/src/main/res/xml/preferences_sony.xml b/app/src/main/res/xml/preferences_sony.xml new file mode 100644 index 0000000..3df847e --- /dev/null +++ b/app/src/main/res/xml/preferences_sony.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.11.0