• R/O
  • HTTP
  • SSH
  • HTTPS

A01d: Commit

OPC(Olympus Air)用望遠鏡アプリ。


Commit MetaInfo

Révisionc950edf44bdbcdc81d277b56b82f6ff72bbeba62 (tree)
l'heure2018-06-16 23:52:56
AuteurMRSa <mrsa@myad...>
CommiterMRSa

Message de Log

SONYのAPIリストを表示できるようにした。

Change Summary

Modification

--- a/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java
@@ -22,7 +22,7 @@ import net.osdn.gokigen.a01d.camera.olympus.cameraproperty.OlyCameraPropertyList
2222 import net.osdn.gokigen.a01d.camera.ICameraStatusReceiver;
2323 import net.osdn.gokigen.a01d.camera.ICameraConnection;
2424 import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.ICameraPowerOn;
25-import net.osdn.gokigen.a01d.camera.sony.cameraproperty.SonyCameraPropertyListFragment;
25+import net.osdn.gokigen.a01d.camera.sony.cameraproperty.SonyCameraApiListFragment;
2626 import net.osdn.gokigen.a01d.liveview.IStatusViewDrawer;
2727 import net.osdn.gokigen.a01d.liveview.LiveViewFragment;
2828 import net.osdn.gokigen.a01d.logcat.LogCatFragment;
@@ -42,7 +42,7 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
4242
4343 private PreferenceFragmentCompat preferenceFragment = null;
4444 private OlyCameraPropertyListFragment propertyListFragment = null;
45- private SonyCameraPropertyListFragment propertyListFragmentSony = null;
45+ private SonyCameraApiListFragment sonyApiListFragmentSony = null;
4646 private LogCatFragment logCatFragment = null;
4747
4848 @Override
@@ -220,7 +220,7 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
220220 {
221221 if (propertyListFragmentSony == null)
222222 {
223- propertyListFragmentSony = SonyCameraPropertyListFragment.newInstance(this, interfaceProvider);
223+ propertyListFragmentSony = SonyCameraApiListFragment.newInstance(this, interfaceProvider);
224224 }
225225 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
226226 transaction.replace(R.id.fragment1, propertyListFragmentSony);
@@ -309,6 +309,24 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver
309309 }
310310
311311 /**
312+ * SonyのAPI List画面を開く
313+ *
314+ */
315+ @Override
316+ public void changeSceneToApiList()
317+ {
318+ if (sonyApiListFragmentSony == null)
319+ {
320+ sonyApiListFragmentSony = SonyCameraApiListFragment.newInstance(interfaceProvider);
321+ }
322+ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
323+ transaction.replace(R.id.fragment1, sonyApiListFragmentSony);
324+ // backstackに追加
325+ transaction.addToBackStack(null);
326+ transaction.commit();
327+ }
328+
329+ /**
312330 * カメラとの接続・切断のシーケンス
313331 */
314332 @Override
--- a/app/src/main/java/net/osdn/gokigen/a01d/IChangeScene.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/IChangeScene.java
@@ -9,5 +9,6 @@ public interface IChangeScene
99 void changeSceneToConfiguration();
1010 void changeCameraConnection();
1111 void changeSceneToDebugInformation();
12+ void changeSceneToApiList();
1213 void exitApplication();
1314 }
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/ISonyInterfaceProvider.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/ISonyInterfaceProvider.java
@@ -7,8 +7,11 @@ import net.osdn.gokigen.a01d.camera.IFocusingControl;
77 import net.osdn.gokigen.a01d.camera.ILiveViewControl;
88 import net.osdn.gokigen.a01d.camera.IZoomLensControl;
99 import net.osdn.gokigen.a01d.camera.sony.wrapper.IDisplayInjector;
10+import net.osdn.gokigen.a01d.camera.sony.wrapper.ISonyApiService;
1011 import net.osdn.gokigen.a01d.liveview.liveviewlistener.ILiveViewListener;
1112
13+import java.util.List;
14+
1215 public interface ISonyInterfaceProvider
1316 {
1417 ICameraConnection getSonyCameraConnection();
@@ -19,5 +22,5 @@ public interface ISonyInterfaceProvider
1922 IZoomLensControl getZoomLensControl();
2023 ICaptureControl getCaptureControl();
2124 IDisplayInjector getDisplayInjector();
22-
25+ List<String> getApiCommands();
2326 }
--- /dev/null
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/cameraproperty/SonyCameraApiListFragment.java
@@ -0,0 +1,202 @@
1+package net.osdn.gokigen.a01d.camera.sony.cameraproperty;
2+
3+import android.content.Context;
4+import android.os.Bundle;
5+import android.support.annotation.NonNull;
6+import android.support.annotation.Nullable;
7+import android.support.v4.app.FragmentActivity;
8+import android.support.v4.app.ListFragment;
9+import android.util.Log;
10+import android.view.LayoutInflater;
11+import android.view.Menu;
12+import android.view.MenuInflater;
13+import android.view.MenuItem;
14+import android.view.View;
15+import android.view.ViewGroup;
16+import android.widget.ArrayAdapter;
17+import android.widget.ListView;
18+import android.widget.Toast;
19+
20+import net.osdn.gokigen.a01d.R;
21+import net.osdn.gokigen.a01d.camera.IInterfaceProvider;
22+
23+import java.util.ArrayList;
24+import java.util.List;
25+
26+
27+public class SonyCameraApiListFragment extends ListFragment
28+{
29+ private final String TAG = toString();
30+ private ArrayAdapter<String> adapter;
31+ private List<String> dataItems = new ArrayList<>();
32+ private IInterfaceProvider interfaceProvider = null;
33+
34+
35+ /**
36+ * カメラプロパティをやり取りするインタフェースを生成する
37+ *
38+ */
39+ public static SonyCameraApiListFragment newInstance(@NonNull IInterfaceProvider interfaceProvider)
40+ {
41+ SonyCameraApiListFragment instance = new SonyCameraApiListFragment();
42+ instance.prepare(interfaceProvider);
43+
44+ // パラメータはBundleにまとめておく
45+ Bundle arguments = new Bundle();
46+ //arguments.putString("title", title);
47+ //arguments.putString("message", message);
48+ instance.setArguments(arguments);
49+
50+ return (instance);
51+ }
52+
53+ /**
54+ *
55+ *
56+ */
57+ private void prepare(@NonNull IInterfaceProvider interfaceProvider)
58+ {
59+ Log.v(TAG, "prepare()");
60+ this.interfaceProvider = interfaceProvider;
61+ }
62+
63+
64+ @Override
65+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
66+ {
67+ inflater.inflate(R.menu.api_view, menu);
68+/*
69+ String title = getString(R.string.app_name) + " " + getString(R.string.pref_degug_info);
70+ try {
71+ AppCompatActivity activity = (AppCompatActivity) getActivity();
72+ ActionBar bar = activity.getSupportActionBar();
73+ if (bar != null)
74+ {
75+ bar.setTitle(title);
76+ }
77+ }
78+ catch (Exception e)
79+ {
80+ e.printStackTrace();
81+ }
82+*/
83+ }
84+
85+ @Override
86+ public boolean onOptionsItemSelected(MenuItem item)
87+ {
88+ if (item.getItemId() == R.id.action_refresh)
89+ {
90+ update();
91+ return (true);
92+ }
93+ return super.onOptionsItemSelected(item);
94+ }
95+
96+ /**
97+ * 表示データの更新
98+ *
99+ */
100+ private void update()
101+ {
102+ dataItems.clear();
103+ Thread thread = new Thread(new Runnable()
104+ {
105+ @Override
106+ public void run()
107+ {
108+ Log.v(TAG, "START GET API LIST");
109+ dataItems = interfaceProvider.getSonyInterface().getApiCommands();
110+ Log.v(TAG, "FINISH GET API LIST");
111+ try
112+ {
113+ final FragmentActivity activity = getActivity();
114+ if (activity != null)
115+ {
116+ activity.runOnUiThread(new Runnable()
117+ {
118+ @Override
119+ public void run()
120+ {
121+ try
122+ {
123+ // 中身があったらクリアする
124+ if (adapter.getCount() > 0)
125+ {
126+ adapter.clear();
127+ }
128+
129+ // リストの内容を更新する
130+ adapter.addAll(dataItems);
131+
132+ // 最下部にカーソルを移したい
133+ ListView view = activity.findViewById(android.R.id.list);
134+ view.setSelection(dataItems.size());
135+
136+ // 更新終了通知
137+ Toast.makeText(getActivity(), getString(R.string.finish_refresh), Toast.LENGTH_SHORT).show();
138+ }
139+ catch (Exception ee)
140+ {
141+ ee.printStackTrace();
142+ }
143+ }
144+ });
145+ }
146+ }
147+ catch (Exception e)
148+ {
149+ e.printStackTrace();
150+ }
151+ }
152+ });
153+ try
154+ {
155+ // 本当は、ここでダイアログを出したい
156+ thread.start();
157+ }
158+ catch (Exception e)
159+ {
160+ e.printStackTrace();
161+ }
162+ }
163+
164+ @Override
165+ public void onResume()
166+ {
167+ super.onResume();
168+ Log.v(TAG, "onResume()");
169+
170+ update();
171+ }
172+
173+ @Override
174+ public void onPause()
175+ {
176+ super.onPause();
177+ Log.v(TAG, "onPause()");
178+ }
179+
180+ @Override
181+ public void onCreate(Bundle savedInstanceState)
182+ {
183+ super.onCreate(savedInstanceState);
184+ Log.v(TAG, "SonyCameraApiListFragment::onCreate()");
185+ }
186+
187+ @Override
188+ public void onActivityCreated(@Nullable Bundle savedInstanceState)
189+ {
190+ super.onActivityCreated(savedInstanceState);
191+ Log.v(TAG, "SonyCameraApiListFragment::onActivityCreated()");
192+ setHasOptionsMenu(true);
193+ }
194+
195+ @Override
196+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
197+ {
198+ adapter = new ArrayAdapter<>(inflater.getContext(), android.R.layout.simple_list_item_1, dataItems);
199+ setListAdapter(adapter);
200+ return (super.onCreateView(inflater, container, savedInstanceState));
201+ }
202+}
--- /dev/null
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/cameraproperty/SonyCameraApiListViewer.java
@@ -0,0 +1,61 @@
1+package net.osdn.gokigen.a01d.camera.sony.cameraproperty;
2+
3+import android.support.v7.preference.Preference;
4+import android.util.Log;
5+
6+import net.osdn.gokigen.a01d.IChangeScene;
7+
8+/**
9+ *
10+ *
11+ */
12+public class SonyCameraApiListViewer implements android.support.v7.preference.Preference.OnPreferenceClickListener
13+{
14+ private final String TAG = toString();
15+ private final IChangeScene changeScene;
16+
17+ /**
18+ *
19+ *
20+ */ public SonyCameraApiListViewer(IChangeScene changeScene)
21+ {
22+ this.changeScene = changeScene;
23+ }
24+
25+ /**
26+ *
27+ *
28+ */ public void prepare()
29+ {
30+ Log.v(TAG, "prepare() ");
31+ }
32+
33+ /**
34+ *
35+ *
36+ */
37+ @Override
38+ public boolean onPreferenceClick(Preference preference)
39+ {
40+ if (!preference.hasKey())
41+ {
42+ return (false);
43+ }
44+
45+ String preferenceKey = preference.getKey();
46+ if ((preferenceKey.contains("sony_api_list"))&&(changeScene != null))
47+ {
48+ try
49+ {
50+ // API Listを表示する
51+ changeScene.changeSceneToApiList();
52+ }
53+ catch (Exception e)
54+ {
55+ e.printStackTrace();
56+ }
57+ return (true);
58+ }
59+ return (false);
60+ }
61+}
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/cameraproperty/SonyCameraPropertyListFragment.java
+++ /dev/null
@@ -1,68 +0,0 @@
1-package net.osdn.gokigen.a01d.camera.sony.cameraproperty;
2-
3-import android.content.Context;
4-import android.os.Bundle;
5-import android.support.annotation.NonNull;
6-import android.support.v4.app.Fragment;
7-import android.util.Log;
8-
9-import net.osdn.gokigen.a01d.camera.IInterfaceProvider;
10-
11-
12-public class SonyCameraPropertyListFragment extends Fragment
13-{
14- private final String TAG = toString();
15-
16-
17- /**
18- * カメラプロパティをやり取りするインタフェースを生成する
19- *
20- */
21- public static SonyCameraPropertyListFragment newInstance(@NonNull Context context, @NonNull IInterfaceProvider propertyInterface)
22- {
23- SonyCameraPropertyListFragment instance = new SonyCameraPropertyListFragment();
24- instance.prepare(context, propertyInterface);
25-
26- // パラメータはBundleにまとめておく
27- Bundle arguments = new Bundle();
28- //arguments.putString("title", title);
29- //arguments.putString("message", message);
30- instance.setArguments(arguments);
31-
32- return (instance);
33- }
34-
35- /**
36- *
37- *
38- */
39- private void prepare(Context context, IInterfaceProvider propertyInterface)
40- {
41- Log.v(TAG, "prepare()");
42- }
43-
44- /**
45- *
46- *
47- */
48- @Override
49- public void onCreate(Bundle savedInstanceState)
50- {
51- super.onCreate(savedInstanceState);
52- Log.v(TAG, "onCreate()");
53-
54- }
55-
56- /**
57- *
58- *
59- */
60- @Override
61- public void onAttach(Context context)
62- {
63- super.onAttach(context);
64- Log.v(TAG, "onAttach()");
65- }
66-
67-
68-}
--- /dev/null
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/ISonyApiService.java
@@ -0,0 +1,7 @@
1+package net.osdn.gokigen.a01d.camera.sony.wrapper;
2+
3+public interface ISonyApiService
4+{
5+ String getName();
6+ String getActionUrl();
7+}
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/ISonyCamera.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/ISonyCamera.java
@@ -5,7 +5,7 @@ import java.util.List;
55 public interface ISonyCamera
66 {
77 boolean hasApiService(String serviceName);
8- List<SonyApiService> getApiServices();
8+ List<ISonyApiService> getApiServices();
99
1010 String getFriendlyName();
1111 String getModelName();
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyApiService.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyApiService.java
@@ -1,6 +1,6 @@
11 package net.osdn.gokigen.a01d.camera.sony.wrapper;
22
3-class SonyApiService
3+class SonyApiService implements ISonyApiService
44 {
55 private final String name;
66 private final String actionUrl;
@@ -11,10 +11,13 @@ class SonyApiService
1111 this.actionUrl = actionUrl;
1212 }
1313
14+ @Override
1415 public String getName()
1516 {
1617 return (name);
1718 }
19+
20+ @Override
1821 public String getActionUrl()
1922 {
2023 return (actionUrl);
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyCameraApi.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyCameraApi.java
@@ -32,8 +32,8 @@ class SonyCameraApi implements ISonyCameraApi
3232
3333 private String findActionListUrl(String service)
3434 {
35- List<SonyApiService> services = sonyCamera.getApiServices();
36- for (SonyApiService apiService : services)
35+ List<ISonyApiService> services = sonyCamera.getApiServices();
36+ for (ISonyApiService apiService : services)
3737 {
3838 if (apiService.getName().equals(service))
3939 {
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyCameraDeviceProvider.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyCameraDeviceProvider.java
@@ -12,7 +12,7 @@ import java.util.List;
1212 public class SonyCameraDeviceProvider implements ISonyCamera
1313 {
1414 private static final String TAG = SonyCameraDeviceProvider.class.getSimpleName();
15- private final List<SonyApiService> apiServices;
15+ private final List<ISonyApiService> apiServices;
1616 private final String ddUrl;
1717 private final String udn;
1818 private final String friendlyName;
@@ -44,7 +44,7 @@ public class SonyCameraDeviceProvider implements ISonyCamera
4444 {
4545 try
4646 {
47- for (SonyApiService apiService : apiServices)
47+ for (ISonyApiService apiService : apiServices)
4848 {
4949 if (serviceName.equals(apiService.getName()))
5050 {
@@ -65,7 +65,7 @@ public class SonyCameraDeviceProvider implements ISonyCamera
6565 *
6666 */
6767 @Override
68- public List<SonyApiService> getApiServices()
68+ public List<ISonyApiService> getApiServices()
6969 {
7070 return (apiServices);
7171 }
--- a/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyCameraWrapper.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/sony/wrapper/SonyCameraWrapper.java
@@ -26,12 +26,20 @@ import net.osdn.gokigen.a01d.liveview.IAutoFocusFrameDisplay;
2626 import net.osdn.gokigen.a01d.liveview.IIndicatorControl;
2727 import net.osdn.gokigen.a01d.liveview.liveviewlistener.ILiveViewListener;
2828
29+import org.json.JSONArray;
30+import org.json.JSONObject;
31+
32+import java.util.ArrayList;
33+import java.util.Arrays;
34+import java.util.List;
35+
2936 public class SonyCameraWrapper implements ISonyCameraHolder, ISonyInterfaceProvider, IDisplayInjector
3037 {
3138 private final String TAG = toString();
3239 private final Activity context;
3340 private final ICameraStatusReceiver provider;
3441 private ISonyCamera sonyCamera = null;
42+ private ISonyCameraApi sonyCameraApi = null;
3543 private ICameraEventObserver eventObserver = null;
3644 private SonyLiveViewControl liveViewControl = null;
3745 private SonyCameraFocusControl focusControl = null;
@@ -50,7 +58,7 @@ public class SonyCameraWrapper implements ISonyCameraHolder, ISonyInterfaceProvi
5058 Log.v(TAG, " prepare : " + sonyCamera.getFriendlyName() + " " + sonyCamera.getModelName());
5159 try
5260 {
53- ISonyCameraApi sonyCameraApi = SonyCameraApi.newInstance(sonyCamera);
61+ this.sonyCameraApi = SonyCameraApi.newInstance(sonyCamera);
5462 eventObserver = CameraEventObserver.newInstance(context, sonyCameraApi);
5563 liveViewControl = new SonyLiveViewControl(sonyCameraApi);
5664
@@ -142,6 +150,24 @@ public class SonyCameraWrapper implements ISonyCameraHolder, ISonyInterfaceProvi
142150 }
143151
144152 @Override
153+ public List<String> getApiCommands()
154+ {
155+ List<String> availableApis = new ArrayList<>();
156+ try
157+ {
158+ String apiList = sonyCameraApi.getAvailableApiList().getString("result");
159+ apiList = apiList.replace("[","").replace("]", "").replace("\"","");
160+ String[] apiListSplit = apiList.split(",");
161+ availableApis = Arrays.asList(apiListSplit);
162+ }
163+ catch (Exception e)
164+ {
165+ e.printStackTrace();
166+ }
167+ return (availableApis);
168+ }
169+
170+ @Override
145171 public void injectDisplay(@NonNull IAutoFocusFrameDisplay frameDisplayer, @NonNull IIndicatorControl indicator, @NonNull IFocusingModeNotify focusingModeNotify)
146172 {
147173 Log.v(TAG, "injectDisplay()");
--- a/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java
+++ b/app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java
@@ -163,6 +163,7 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFo
163163 {
164164 // お気に入りボタン(とMFボタン)は、SONYモードのときには表示しない
165165 final View favoriteButton = view.findViewById(R.id.show_favorite_settings_button);
166+ final View propertyButton = view.findViewById(R.id.camera_property_settings_button);
166167 if ((favoriteButton != null)&&(manualFocus != null))
167168 {
168169 runOnUiThread(new Runnable()
@@ -179,6 +180,7 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer, IFo
179180 {
180181 changeLiveViewScale.setVisibility(View.INVISIBLE);
181182 }
183+ propertyButton.setVisibility(View.INVISIBLE);
182184 }
183185 });
184186 }
--- 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
@@ -15,6 +15,7 @@ import android.util.Log;
1515
1616 import net.osdn.gokigen.a01d.IChangeScene;
1717 import net.osdn.gokigen.a01d.R;
18+import net.osdn.gokigen.a01d.camera.sony.cameraproperty.SonyCameraApiListViewer;
1819 import net.osdn.gokigen.a01d.camera.sony.operation.CameraPowerOffSony;
1920 import net.osdn.gokigen.a01d.logcat.LogCatViewer;
2021 import net.osdn.gokigen.a01d.preference.olympus.IPreferencePropertyAccessor;
@@ -31,6 +32,7 @@ public class SonyPreferenceFragment extends PreferenceFragmentCompat implements
3132 private SharedPreferences preferences = null;
3233 private CameraPowerOffSony powerOffController = null;
3334 private LogCatViewer logCatViewer = null;
35+ private SonyCameraApiListViewer cameraApiListViewer = null;
3436
3537 /**
3638 *
@@ -64,6 +66,9 @@ public class SonyPreferenceFragment extends PreferenceFragmentCompat implements
6466
6567 logCatViewer = new LogCatViewer(changeScene);
6668 logCatViewer.prepare();
69+
70+ cameraApiListViewer = new SonyCameraApiListViewer(changeScene);
71+ cameraApiListViewer.prepare();
6772 }
6873 catch (Exception e)
6974 {
@@ -181,6 +186,7 @@ public class SonyPreferenceFragment extends PreferenceFragmentCompat implements
181186
182187 findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
183188 findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
189+ findPreference("sony_api_list").setOnPreferenceClickListener(cameraApiListViewer);
184190 }
185191 catch (Exception e)
186192 {
--- /dev/null
+++ b/app/src/main/res/menu/api_view.xml
@@ -0,0 +1,12 @@
1+<?xml version="1.0" encoding="utf-8"?>
2+<menu xmlns:android="http://schemas.android.com/apk/res/android"
3+ xmlns:compat="http://schemas.android.com/apk/res-auto" >
4+
5+ <item
6+ android:id="@+id/action_refresh"
7+ compat:showAsAction="always"
8+ android:icon="@drawable/ic_refresh_black_24dp"
9+ android:title="@string/action_refresh"
10+ android:visible="true" />
11+
12+</menu>
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -105,6 +105,9 @@
105105 <string name="action_refresh">更新</string>
106106 <string name="finish_refresh">更新終了</string>
107107
108+ <string name="pref_sony_api_list">カメラAPI一覧</string>
109+ <string name="pref_summary_sony_api_list">カメラのAPI一覧を表示します。</string>
110+
108111 <string name="only_opc_feature">OPCカメラでのみ有効です。</string>
109112 <string name="camera_detected">発見 : </string>
110113 <string name="camera_search_request">カメラ検索</string>
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -110,6 +110,9 @@
110110 <string name="action_refresh">Refresh</string>
111111 <string name="finish_refresh">Finished Refresh</string>
112112
113+ <string name="pref_sony_api_list">Sony Camera Api List</string>
114+ <string name="pref_summary_sony_api_list">Show available camera apis.</string>
115+
113116 <string name="only_opc_feature">This feature is only available for a OPC Camera.</string>
114117 <string name="camera_detected">Detected : </string>
115118 <string name="camera_search_request">Search Camera</string>
--- a/app/src/main/res/xml/preferences_sony.xml
+++ b/app/src/main/res/xml/preferences_sony.xml
@@ -20,6 +20,11 @@
2020 <PreferenceCategory
2121 android:title="@string/pref_cat_camera">
2222
23+ <PreferenceScreen
24+ android:key="sony_api_list"
25+ android:title="@string/pref_sony_api_list"
26+ android:summary="@string/pref_summary_sony_api_list" />
27+
2328 <CheckBoxPreference
2429 android:key="capture_both_camera_and_live_view"
2530 android:title="@string/pref_capture_both_camera_and_live_view" />
Afficher sur ancien navigateur de dépôt.