OSDN Git Service

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