OSDN Git Service

すこし更新。設定画面を起動するようにしてみた。
[gokigen/PKRemote.git] / app / src / main / java / net / osdn / gokigen / pkremote / MainActivity.java
1 package net.osdn.gokigen.pkremote;
2
3 import android.Manifest;
4 import android.content.SharedPreferences;
5 import android.content.pm.PackageManager;
6 import android.os.Bundle;
7
8 import androidx.annotation.NonNull;
9
10 import com.google.android.material.bottomnavigation.BottomNavigationView;
11
12 import androidx.appcompat.app.ActionBar;
13 import androidx.appcompat.app.AppCompatActivity;
14 import androidx.core.app.ActivityCompat;
15 import androidx.core.content.ContextCompat;
16 import androidx.fragment.app.FragmentTransaction;
17 import androidx.preference.PreferenceManager;
18
19 import android.util.Log;
20 import android.view.MenuItem;
21 import android.view.WindowManager;
22 import android.widget.TextView;
23
24 import net.osdn.gokigen.pkremote.camera.CameraInterfaceProvider;
25 import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
26 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
27 import net.osdn.gokigen.pkremote.scene.CameraSceneUpdater;
28
29 public class MainActivity extends AppCompatActivity
30 {
31     private final String TAG = toString();
32     private IInterfaceProvider interfaceProvider = null;
33     private CameraSceneUpdater scenceUpdater = null;
34
35
36     private TextView mTextMessage;
37     private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
38             = new BottomNavigationView.OnNavigationItemSelectedListener() {
39
40         @Override
41         public boolean onNavigationItemSelected(@NonNull MenuItem item) {
42             switch (item.getItemId()) {
43                 case R.id.navigation_home:
44                     mTextMessage.setText(R.string.title_home);
45                     return true;
46                 case R.id.navigation_photo_library:
47                     mTextMessage.setText(R.string.title_photo_library);
48                     return true;
49                 case R.id.navigation_dashboard:
50                     mTextMessage.setText(R.string.title_dashboard);
51                     return true;
52                 case R.id.navigation_notifications:
53                     mTextMessage.setText(R.string.title_notifications);
54                     return true;
55                 case R.id.navigation_settings:
56                     mTextMessage.setText(R.string.title_settings);
57                     return true;
58             }
59             return false;
60         }
61     };
62
63     @Override
64     protected void onCreate(Bundle savedInstanceState)
65     {
66         super.onCreate(savedInstanceState);
67         setContentView(R.layout.activity_main);
68         try
69         {
70             ActionBar bar = getSupportActionBar();
71             if (bar != null)
72             {
73                 // タイトルバーは表示しない
74                 bar.hide();
75             }
76         }
77         catch (Exception e)
78         {
79             e.printStackTrace();
80         }
81         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
82
83         mTextMessage = findViewById(R.id.message);
84         BottomNavigationView navigation = findViewById(R.id.navigation);
85         navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
86
87         // パーミッション群のオプトイン
88         final int REQUEST_NEED_PERMISSIONS = 1010;
89         if ((ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) ||
90                 (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_NETWORK_STATE) != PackageManager.PERMISSION_GRANTED) ||
91                 (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) ||
92                 (ContextCompat.checkSelfPermission(this, Manifest.permission.VIBRATE) != PackageManager.PERMISSION_GRANTED) ||
93                 (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED)) {
94             ActivityCompat.requestPermissions(this,
95                     new String[]{
96                             Manifest.permission.WRITE_EXTERNAL_STORAGE,
97                             Manifest.permission.ACCESS_NETWORK_STATE,
98                             Manifest.permission.ACCESS_WIFI_STATE,
99                             Manifest.permission.VIBRATE,
100                             Manifest.permission.INTERNET,
101                     },
102                     REQUEST_NEED_PERMISSIONS);
103         }
104         initializeClass();
105         onReadyClass();
106     }
107
108     /**
109      *   パーミッション設定が終わった後...
110      *
111      */
112     @Override
113     public void onRequestPermissionsResult(int requestCode, @NonNull String  permissions[], @NonNull int[] grantResults)
114     {
115         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
116         onReadyClass();
117     }
118
119     /**
120      * クラスの初期化 (instantiate)
121      *
122      */
123     private void initializeClass()
124     {
125         try
126         {
127             scenceUpdater = CameraSceneUpdater.newInstance(this);
128             interfaceProvider = CameraInterfaceProvider.newInstance(this, scenceUpdater);
129             scenceUpdater.changeFirstFragment(interfaceProvider);
130         }
131         catch (Exception e)
132         {
133             e.printStackTrace();
134         }
135     }
136
137
138     /**
139      *    初期化終了時の処理 (カメラへの自動接続)
140      */
141     private void onReadyClass()
142     {
143         try
144         {
145             // カメラに自動接続するかどうか確認
146             SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
147             boolean isAutoConnectCamera = preferences.getBoolean(IPreferencePropertyAccessor.AUTO_CONNECT_TO_CAMERA, true);
148             Log.v(TAG, "isAutoConnectCamera() : " + isAutoConnectCamera);
149
150             // カメラに接続する
151             if (isAutoConnectCamera)
152             {
153                 // 自動接続の指示があったとき
154                 scenceUpdater.changeCameraConnection();
155             }
156         }
157         catch (Exception e)
158         {
159             e.printStackTrace();
160         }
161     }
162 }