OSDN Git Service

6a7a55f2de3fdad27187e2a7c392bc424d2c9ddb
[gokigen/Gr2Control.git] / app / src / main / java / net / osdn / gokigen / gr2control / Gr2ControlMain.java
1 package net.osdn.gokigen.gr2control;
2
3 import android.Manifest;
4 import android.content.SharedPreferences;
5 import android.content.pm.PackageManager;
6 import android.support.annotation.NonNull;
7 import android.support.v4.app.ActivityCompat;
8 import android.support.v4.app.FragmentTransaction;
9 import android.support.v4.content.ContextCompat;
10 import android.support.v7.app.ActionBar;
11 import android.support.v7.app.AppCompatActivity;
12 import android.os.Bundle;
13 import android.support.v7.preference.PreferenceManager;
14 import android.util.Log;
15 import android.view.WindowManager;
16
17 import net.osdn.gokigen.gr2control.camera.CameraInterfaceProvider;
18 import net.osdn.gokigen.gr2control.camera.ICameraConnection;
19 import net.osdn.gokigen.gr2control.camera.IInterfaceProvider;
20 import net.osdn.gokigen.gr2control.liveview.LiveViewFragment;
21 import net.osdn.gokigen.gr2control.preference.IPreferencePropertyAccessor;
22 import net.osdn.gokigen.gr2control.scene.CameraSceneUpdater;
23
24 /**
25  *
26  *
27  */
28 public class Gr2ControlMain extends AppCompatActivity
29 {
30     private final String TAG = toString();
31     private IInterfaceProvider interfaceProvider = null;
32     private CameraSceneUpdater scenceUpdater = null;
33
34     @Override
35     protected void onCreate(Bundle savedInstanceState)
36     {
37         super.onCreate(savedInstanceState);
38
39         // 画面表示の準備
40         setContentView(R.layout.activity_gr2_control_main);
41         try
42         {
43             ActionBar bar = getSupportActionBar();
44             if (bar != null)
45             {
46                 // タイトルバーは表示しない
47                 bar.hide();
48             }
49         }
50         catch (Exception e)
51         {
52             e.printStackTrace();
53         }
54         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
55
56         // 外部メモリアクセス権のオプトイン
57         final int REQUEST_NEED_PERMISSIONS = 1010;
58         if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) ||
59                 (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED) ||
60                 (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) ||
61                 (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED)) {
62             ActivityCompat.requestPermissions(this,
63                     new String[]{
64                             Manifest.permission.WRITE_EXTERNAL_STORAGE,
65                             Manifest.permission.ACCESS_NETWORK_STATE,
66                             Manifest.permission.ACCESS_WIFI_STATE,
67                             Manifest.permission.INTERNET,
68                     },
69                     REQUEST_NEED_PERMISSIONS);
70         }
71
72         initializeClass();
73         onReadyClass();
74     }
75
76     /**
77      *
78      *
79      */
80     @Override
81     public void onRequestPermissionsResult(int requestCode, @NonNull String  permissions[], @NonNull int[] grantResults)
82     {
83         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
84         onReadyClass();
85     }
86
87     /**
88      *
89      */
90     @Override
91     protected void onPause()
92     {
93         super.onPause();
94         try
95         {
96             ICameraConnection connection = getCameraConnection(interfaceProvider.getCammeraConnectionMethod());
97             if (connection != null)
98             {
99                 connection.stopWatchWifiStatus(this);
100             }
101         }
102         catch (Exception e)
103         {
104             e.printStackTrace();
105         }
106     }
107
108     /**
109      * クラスの初期化 (instantiate)
110      *
111      */
112     private void initializeClass()
113     {
114         try
115         {
116             scenceUpdater = CameraSceneUpdater.newInstance(this);
117             interfaceProvider = CameraInterfaceProvider.newInstance(this, scenceUpdater);
118
119             LiveViewFragment fragment = LiveViewFragment.newInstance(scenceUpdater, interfaceProvider);
120             scenceUpdater.registerInterface(fragment, interfaceProvider);
121
122             fragment.setRetainInstance(true);
123             FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
124             transaction.replace(R.id.fragment1, fragment);
125             transaction.commitAllowingStateLoss();
126         }
127         catch (Exception e)
128         {
129             e.printStackTrace();
130         }
131     }
132
133     /**
134      *    初期化終了時の処理 (カメラへの自動接続)
135      */
136     private void onReadyClass()
137     {
138         try
139         {
140             // カメラに自動接続するかどうか確認
141             SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
142             boolean isAutoConnectCamera = preferences.getBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
143             Log.v(TAG, "isAutoConnectCamera() : " + isAutoConnectCamera);
144
145             // カメラに接続する
146             if (isAutoConnectCamera)
147             {
148                 // 自動接続の指示があったとき
149                 scenceUpdater.changeCameraConnection();
150             }
151         }
152         catch (Exception e)
153         {
154             e.printStackTrace();
155         }
156     }
157
158     /**
159      *
160      *
161      *
162      */
163     private ICameraConnection getCameraConnection(ICameraConnection.CameraConnectionMethod connectionMethod)
164     {
165         Log.v(TAG, "getCameraConnection() : " + connectionMethod);
166         return (interfaceProvider.getRicohGr2Infterface().getRicohGr2CameraConnection());
167 /*
168         ICameraConnection connection;
169         if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH_GR2)
170         {
171             connection = interfaceProvider.getRicohGr2Infterface().getRicohGr2CameraConnection();
172         }
173         else if  (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
174         {
175             connection = interfaceProvider.getSonyInterface().getSonyCameraConnection();
176         }
177         else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
178         {
179             connection = interfaceProvider.getOlympusInterface().getOlyCameraConnection();
180         }
181         return (connection);
182 */
183     }
184 }