OSDN Git Service

ファイル一覧情報をとるところまで。(SONY)
[gokigen/PKRemote.git] / app / src / main / java / net / osdn / gokigen / pkremote / camera / vendor / sony / wrapper / SonyCameraApi.java
1 package net.osdn.gokigen.pkremote.camera.vendor.sony.wrapper;
2
3 import android.util.Log;
4
5 import androidx.annotation.NonNull;
6
7 import net.osdn.gokigen.pkremote.camera.utils.SimpleHttpClient;
8
9 import org.json.JSONArray;
10 import org.json.JSONObject;
11
12 import java.util.ArrayList;
13 import java.util.List;
14
15 class SonyCameraApi implements ISonyCameraApi
16 {
17     private static final String TAG = SonyCameraApi.class.getSimpleName();
18     private static final boolean FULL_LOG = true;
19
20     // API server device you want to send requests.
21     private final ISonyCamera sonyCamera;
22     private int requestId;
23
24
25     public static ISonyCameraApi newInstance(@NonNull ISonyCamera target)
26     {
27         return (new SonyCameraApi(target));
28     }
29
30     private SonyCameraApi(final @NonNull ISonyCamera target)
31     {
32         sonyCamera = target;
33         requestId = 1;
34     }
35
36     private String findActionListUrl(String service)
37     {
38         List<ISonyApiService> services = sonyCamera.getApiServices();
39         for (ISonyApiService apiService : services)
40         {
41             if (apiService.getName().equals(service))
42             {
43                 return (apiService.getActionUrl());
44             }
45         }
46         Log.v(TAG, "actionUrl not found. service : " + service);
47         return (null);
48     }
49
50     private int id()
51     {
52         requestId++;
53         if (requestId == 0)
54         {
55             requestId++;
56         }
57         return (requestId);
58     }
59
60     private void log(String msg)
61     {
62         if (FULL_LOG)
63         {
64             Log.d(TAG, msg);
65         }
66     }
67
68
69     private JSONObject communicateJSON(@NonNull String service, @NonNull String method, @NonNull JSONArray params, @NonNull String version, int timeoutMs)
70     {
71         try
72         {
73             JSONObject requestJson = new JSONObject().put("method", method)
74                     .put("params", params)
75                     .put("id", id())
76                     .put("version", version);
77             String url = findActionListUrl(service) + "/" + service;
78             log("Request:  " + requestJson.toString());
79             String responseJson = SimpleHttpClient.httpPost(url, requestJson.toString(), timeoutMs);
80             log("Response: " + responseJson);
81             return (new JSONObject(responseJson));
82         }
83         catch (Exception e)
84         {
85             log("Exception : " + method + " " + version);
86             e.printStackTrace();
87         }
88         return (new JSONObject());
89     }
90
91     @Override
92     public JSONObject getAvailableApiList()
93     {
94         try
95         {
96             return (communicateJSON("camera", "getAvailableApiList", new JSONArray(), "1.0", -1));
97         }
98         catch (Exception e)
99         {
100             e.printStackTrace();
101         }
102         return (new JSONObject());
103     }
104
105     @Override
106     public JSONObject getApplicationInfo()
107     {
108         try
109         {
110             return (communicateJSON("camera", "getApplicationInfo", new JSONArray(), "1.0", -1));
111         }
112         catch (Exception e)
113         {
114             e.printStackTrace();
115         }
116         return (new JSONObject());
117     }
118
119     @Override
120     public JSONObject getShootMode()
121     {
122         try
123         {
124             return (communicateJSON("camera", "getShootMode", new JSONArray(), "1.0", -1));
125         }
126         catch (Exception e)
127         {
128             e.printStackTrace();
129         }
130         return (new JSONObject());
131     }
132
133     @Override
134     public JSONObject setShootMode(@NonNull String shootMode)
135     {
136         try
137         {
138             return (communicateJSON("camera", "getShootMode", new JSONArray().put(shootMode), "1.0", -1));
139         }
140         catch (Exception e)
141         {
142             e.printStackTrace();
143         }
144         return (new JSONObject());
145     }
146
147     @Override
148     public JSONObject getAvailableShootMode()
149     {
150         try {
151             return (communicateJSON("camera", "getAvailableShootMode", new JSONArray(), "1.0", -1));
152         } catch (Exception e) {
153             e.printStackTrace();
154         }
155         return (new JSONObject());
156     }
157
158     @Override
159     public JSONObject getSupportedShootMode()
160     {
161         try {
162             return (communicateJSON("camera", "getSupportedShootMode", new JSONArray(), "1.0", -1));
163         } catch (Exception e) {
164             e.printStackTrace();
165         }
166         return (new JSONObject());
167     }
168
169     @Override
170     public JSONObject setTouchAFPosition(double Xpos, double Ypos)
171     {
172         try
173         {
174             Log.v(TAG, "setTouchAFPosition (" + Xpos + ", " + Ypos + ")");
175             return (communicateJSON("camera", "setTouchAFPosition", new JSONArray().put(Xpos).put(Ypos), "1.0", -1));
176         }
177         catch (Exception e)
178         {
179             e.printStackTrace();
180         }
181         return (new JSONObject());
182     }
183
184     @Override
185     public JSONObject getTouchAFPosition()
186     {
187         try
188         {
189             return (communicateJSON("camera", "getTouchAFPosition", new JSONArray(), "1.0", -1));
190         }
191         catch (Exception e)
192         {
193             e.printStackTrace();
194         }
195         return (new JSONObject());
196     }
197
198     @Override
199     public JSONObject cancelTouchAFPosition()
200     {
201         try
202         {
203             return (communicateJSON("camera", "cancelTouchAFPosition", new JSONArray(), "1.0", -1));
204         }
205         catch (Exception e)
206         {
207             e.printStackTrace();
208         }
209         return (new JSONObject());
210     }
211
212     @Override
213     public JSONObject actHalfPressShutter()
214     {
215         try
216         {
217             return (communicateJSON("camera", "actHalfPressShutter", new JSONArray(), "1.0", -1));
218         }
219         catch (Exception e)
220         {
221             e.printStackTrace();
222         }
223         return (new JSONObject());
224     }
225
226     @Override
227     public JSONObject cancelHalfPressShutter()
228     {
229         try
230         {
231             return (communicateJSON("camera", "cancelHalfPressShutter", new JSONArray(), "1.0", -1));
232         }
233         catch (Exception e)
234         {
235             e.printStackTrace();
236         }
237         return (new JSONObject());
238     }
239
240     @Override
241     public JSONObject setFocusMode(String focusMode)
242     {
243         try
244         {
245             Log.v(TAG, "setFocusMode (" + focusMode + ")");
246             return (communicateJSON("camera", "setFocusMode", new JSONArray().put(focusMode), "1.0", -1));
247         }
248         catch (Exception e)
249         {
250             e.printStackTrace();
251         }
252         return (new JSONObject());
253     }
254
255     @Override
256     public JSONObject getFocusMode()
257     {
258         try
259         {
260             return (communicateJSON("camera", "getFocusMode", new JSONArray(), "1.0", -1));
261         }
262         catch (Exception e)
263         {
264             e.printStackTrace();
265         }
266         return (new JSONObject());
267     }
268
269     @Override
270     public JSONObject getSupportedFocusMode()
271     {
272         try
273         {
274             return (communicateJSON("camera", "getSupportedFocusMode", new JSONArray(), "1.0", -1));
275         }
276         catch (Exception e)
277         {
278             e.printStackTrace();
279         }
280         return (new JSONObject());
281     }
282
283     @Override
284     public JSONObject getAvailableFocusMode()
285     {
286         try
287         {
288             return (communicateJSON("camera", "getAvailableFocusMode", new JSONArray(), "1.0", -1));
289         }
290         catch (Exception e)
291         {
292             e.printStackTrace();
293         }
294         return (new JSONObject());
295     }
296
297     @Override
298     public JSONObject startLiveview()
299     {
300         try {
301             return (communicateJSON("camera", "startLiveview", new JSONArray(), "1.0", -1));
302         } catch (Exception e) {
303             e.printStackTrace();
304         }
305         return (new JSONObject());
306     }
307
308
309     @Override
310     public JSONObject stopLiveview()
311     {
312         try {
313             return (communicateJSON("camera", "stopLiveview", new JSONArray(), "1.0", -1));
314         } catch (Exception e) {
315             e.printStackTrace();
316         }
317         return (new JSONObject());
318     }
319
320
321     @Override
322     public JSONObject startRecMode()
323     {
324         try {
325             return (communicateJSON("camera", "startRecMode", new JSONArray(), "1.0", -1));
326         } catch (Exception e) {
327             e.printStackTrace();
328         }
329         return (new JSONObject());
330     }
331
332
333     @Override
334     public JSONObject actTakePicture()
335     {
336         try {
337             return (communicateJSON("camera", "actTakePicture", new JSONArray(), "1.0", -1));
338         } catch (Exception e) {
339             e.printStackTrace();
340         }
341         return (new JSONObject());
342     }
343
344     @Override
345     public JSONObject awaitTakePicture()
346     {
347         try
348         {
349             return (communicateJSON("camera", "awaitTakePicture", new JSONArray(), "1.0", -1));
350         }
351         catch (Exception e)
352         {
353             e.printStackTrace();
354         }
355         return (new JSONObject());
356     }
357
358     @Override
359     public JSONObject startMovieRec()
360     {
361         try {
362             return (communicateJSON("camera", "startMovieRec", new JSONArray(), "1.0", -1));
363         } catch (Exception e) {
364             e.printStackTrace();
365         }
366         return (new JSONObject());
367     }
368
369     @Override
370     public JSONObject stopMovieRec()
371     {
372         try {
373             return (communicateJSON("camera", "stopMovieRec", new JSONArray(), "1.0", -1));
374         } catch (Exception e) {
375             e.printStackTrace();
376         }
377         return (new JSONObject());
378     }
379
380     @Override
381     public JSONObject actZoom(@NonNull String direction, @NonNull String movement)
382     {
383         try {
384             return (communicateJSON("camera", "actZoom", new JSONArray().put(direction).put(movement), "1.0", -1));
385         } catch (Exception e) {
386             e.printStackTrace();
387         }
388         return (new JSONObject());
389     }
390
391
392     @Override
393     public JSONObject getEvent(@NonNull String version, boolean longPollingFlag)
394     {
395         try {
396             int longPollingTimeout = (longPollingFlag) ? 20000 : 8000; // msec
397             return (communicateJSON("camera", "getEvent", new JSONArray().put(longPollingFlag), version, longPollingTimeout));
398         } catch (Exception e) {
399             e.printStackTrace();
400         }
401         return (new JSONObject());
402     }
403
404
405     @Override
406     public JSONObject setCameraFunction(@NonNull String cameraFunction)
407     {
408         try {
409             return (communicateJSON("camera", "setCameraFunction", new JSONArray().put(cameraFunction), "1.0", -1));
410         } catch (Exception e) {
411             e.printStackTrace();
412         }
413         return (new JSONObject());
414     }
415
416
417     @Override
418     public JSONObject getCameraMethodTypes()
419     {
420         try {
421             return (communicateJSON("camera", "getCameraMethodTypes", new JSONArray(), "1.0", -1));
422         } catch (Exception e) {
423             e.printStackTrace();
424         }
425         return (new JSONObject());
426     }
427
428
429     @Override
430     public JSONObject getAvcontentMethodTypes()
431     {
432         try {
433             return (communicateJSON("avContent", "getMethodTypes", new JSONArray(), "1.0", -1));
434         } catch (Exception e) {
435             e.printStackTrace();
436         }
437         return (new JSONObject());
438     }
439
440     @Override
441     public JSONObject getStorageInformation()
442     {
443         try {
444             return (communicateJSON("camera", "getStorageInformation", new JSONArray(), "1.0", -1));
445         } catch (Exception e) {
446             e.printStackTrace();
447         }
448         return (new JSONObject());
449     }
450
451     @Override
452     public JSONObject getSchemeList()
453     {
454         try {
455             return (communicateJSON("avContent", "getSchemeList", new JSONArray(), "1.0", -1));
456         } catch (Exception e) {
457             e.printStackTrace();
458         }
459         return (new JSONObject());
460     }
461
462
463     @Override
464     public JSONObject getSourceList(String scheme)
465     {
466         try {
467             JSONObject params = new JSONObject().put("scheme", scheme);
468             return (communicateJSON("avContent", "getSourceList", new JSONArray().put(0, params), "1.0", -1));
469         } catch (Exception e) {
470             e.printStackTrace();
471         }
472         return (new JSONObject());
473     }
474
475     @Override
476     public JSONObject getContentCountFlatAll(String uri)
477     {
478         try {
479             JSONObject params = new JSONObject();
480             params.put("uri", uri);
481             params.put("target", "all");
482             params.put("view", "flat");
483             return (communicateJSON("avContent", "getContentCount", new JSONArray().put(0, params), "1.2", -1));
484         } catch (Exception e) {
485             e.printStackTrace();
486         }
487         return (new JSONObject());
488     }
489
490     @Override
491     public JSONObject getContentList(JSONArray params)
492     {
493         try {
494             return (communicateJSON("avContent", "getContentList", params, "1.3", -1));
495         } catch (Exception e) {
496             e.printStackTrace();
497         }
498         return (new JSONObject());
499     }
500
501     @Override
502     public JSONObject setStreamingContent(String uri)
503     {
504         try {
505             JSONObject params = new JSONObject().put("remotePlayType", "simpleStreaming").put("uri", uri);
506             return (communicateJSON("avContent", "setStreamingContent", new JSONArray().put(0, params), "1.0", -1));
507         } catch (Exception e) {
508             e.printStackTrace();
509         }
510         return (new JSONObject());
511
512     }
513
514     @Override
515     public JSONObject startStreaming()
516     {
517         try {
518             return (communicateJSON("avContent", "startStreaming", new JSONArray(), "1.0", -1));
519         } catch (Exception e) {
520             e.printStackTrace();
521         }
522         return (new JSONObject());
523
524     }
525
526     @Override
527     public JSONObject stopStreaming()
528     {
529         try {
530             return (communicateJSON("avContent", "stopStreaming", new JSONArray(), "1.0", -1));
531         } catch (Exception e) {
532             e.printStackTrace();
533         }
534         return (new JSONObject());
535
536     }
537
538     @Override
539     public List<String> getSonyApiServiceList()
540     {
541         try
542         {
543             List<String> serviceList = new ArrayList<>();
544             List<ISonyApiService> services = sonyCamera.getApiServices();
545             for (ISonyApiService apiService : services)
546             {
547                 serviceList.add(apiService.getName());
548             }
549             return (serviceList);
550         }
551         catch (Exception e)
552         {
553             e.printStackTrace();
554         }
555         return (null);
556     }
557
558     @Override
559     public JSONObject callGenericSonyApiMethod(@NonNull String service, @NonNull String method, @NonNull JSONArray params, @NonNull String version)
560     {
561         return (communicateJSON(service, method, params, version, -1));
562     }
563
564     static boolean isErrorReply(JSONObject replyJson)
565     {
566         return ((replyJson != null && replyJson.has("error")));
567     }
568 }