The final version for lede-gui (the phone app for device registration)
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / MainActivity.java
1 package com.example.lede2;\r
2 \r
3 import android.app.ProgressDialog;\r
4 import android.content.Context;\r
5 import android.content.Intent;\r
6 import android.net.ConnectivityManager;\r
7 import android.net.NetworkInfo;\r
8 import android.net.wifi.WifiManager;\r
9 import android.support.v7.app.AppCompatActivity;\r
10 import android.os.Bundle;\r
11 import android.util.Log;\r
12 import android.view.View;\r
13 import android.widget.Button;\r
14 import android.widget.TextView;\r
15 import android.widget.Toast;\r
16 \r
17 public class MainActivity extends AppCompatActivity implements View.OnClickListener {\r
18 \r
19     Button databaseButton;\r
20     Button registerButton;\r
21     Button listButton;\r
22     Button applicationsButton;\r
23     Button configButton;\r
24     Button driversButton;\r
25     TextView ssid;\r
26     DatabaseObject databaseObject;\r
27     ProgressDialog dialog;\r
28     protected static Context context;\r
29     protected static String DEF_RSSID;\r
30     protected static String DEF_RPWD;\r
31     protected static String DEF_ROUTERIP;\r
32     protected static String DEF_ROUTERUSER;\r
33     protected static String DEF_MYSQLHOSTUSER;\r
34     protected static String DEF_MYSQLHOSTIP;\r
35     protected static String DEF_MYSQLHOSTPASSWORD;\r
36     protected static String DEF_CHANGE_DEFAULT_SCRIPT;\r
37     protected static String DEF_CONNECT_DEVICE_SCRIPT;\r
38     protected static String DEF_REGISTER_DEVICE_SCRIPT;\r
39 \r
40     protected static String DEF_INSTALL_DEVICE_FILE;\r
41     protected static String DEF_INSTALL_DEVICE_ADDRESS_FILE;\r
42     protected static String DEF_INSTALL_DEVICE_COMM_FILE;\r
43     protected static String DEF_INSTALL_ADDRESS_FILE;\r
44     protected static String DEF_INSTALL_TWO_DEVICES_AND_COMM_FILE;\r
45     protected static String DEF_INSTALL_ZIGBEE_DEVICE_ADDRESS_FILE;\r
46     protected static String DEF_INSTALL_HOST_FILE;\r
47     protected static String DEF_DELETE_ENTITY_FILE;\r
48     protected static String DEF_DELETE_COMM_PATTERN_FILE;\r
49     protected static String DEF_DELETE_ADDRESS_FILE;\r
50     protected static String DEF_DELETE_DEVICE_ADDRESS_FILE;\r
51     protected static String DEF_DELETE_ZIGBEE_DEVICE_ADDRESS_FILE;\r
52     protected static String DEF_DELETE_HOST_FILE;\r
53 \r
54 \r
55     protected static String DEF_ADD_DEVICE_TO_MYSQL;\r
56     protected static String DEF_MYSQL_CONFIG_FILE;\r
57     protected static String DEF_INSTALL_CMD;\r
58     protected static String DEF_DELETE_CMD;\r
59     protected static String DEF_INSTALL_ADDRESS_CMD;\r
60     protected static String DEF_INSTALL_ZBADDRESS_CMD;\r
61     protected static String DEF_DELETE_ADDRESS_CMD;\r
62     protected static String DEF_INSTALL_RELATION_CMD;\r
63     protected static String DEF_DELETE_RELATION_CMD;\r
64     protected static String DEF_DATABASE_NAME;\r
65 \r
66 \r
67     @Override\r
68     protected void onCreate(Bundle savedInstanceState) {\r
69         super.onCreate(savedInstanceState);\r
70         setContentView(R.layout.activity_main);\r
71         registerButton = (Button) findViewById(R.id.register);\r
72         listButton = (Button) findViewById(R.id.list);\r
73         databaseButton = (Button) findViewById(R.id.database);\r
74         applicationsButton = (Button) findViewById(R.id.applications);\r
75         configButton = (Button) findViewById(R.id.config);\r
76         driversButton = (Button) findViewById(R.id.drivers);\r
77         ssid = (TextView)findViewById(R.id.device_subtype);\r
78 \r
79 \r
80         registerButton.setOnClickListener(this);\r
81         listButton.setOnClickListener(this);\r
82         databaseButton.setOnClickListener(this);\r
83         applicationsButton.setOnClickListener(this);\r
84         configButton.setOnClickListener(this);\r
85         driversButton.setOnClickListener(this);\r
86 \r
87         context = getApplicationContext();\r
88         DEF_RSSID = context.getResources().getString(R.string.default_rssid);\r
89         DEF_RPWD = context.getResources().getString(R.string.default_rpwd);\r
90         DEF_ROUTERIP = context.getResources().getString(R.string.default_routerip);\r
91         DEF_ROUTERUSER = context.getResources().getString(R.string.default_routeruser);\r
92         DEF_CHANGE_DEFAULT_SCRIPT = context.getResources()\r
93                 .getString(R.string.change_default_script);\r
94         DEF_CONNECT_DEVICE_SCRIPT = context.getResources()\r
95                 .getString(R.string.connect_device_script);\r
96         DEF_REGISTER_DEVICE_SCRIPT = context.getResources()\r
97                 .getString(R.string.register_device_script);\r
98         DEF_INSTALL_DEVICE_FILE = context.getResources().getString(R.string.install_device_file);\r
99         DEF_INSTALL_DEVICE_ADDRESS_FILE = context.getResources().getString\r
100                 (R.string.install_device_address_file);\r
101         DEF_INSTALL_TWO_DEVICES_AND_COMM_FILE = context.getResources()\r
102                 .getString(R.string.install_two_devices_and_comm_file);\r
103         DEF_INSTALL_ADDRESS_FILE = context.getResources().getString(R.string.install_address_file);\r
104         DEF_INSTALL_DEVICE_COMM_FILE = context.getResources().getString(R.string.install_device_comm_file);\r
105         DEF_INSTALL_ZIGBEE_DEVICE_ADDRESS_FILE = context.getResources()\r
106                 .getString(R.string.install_zigbee_device_address_file);\r
107         DEF_INSTALL_HOST_FILE = context.getResources().getString(R.string.install_host_file);\r
108         DEF_DELETE_ENTITY_FILE = context.getResources().getString(R.string.delete_entity_file);\r
109         DEF_DELETE_COMM_PATTERN_FILE = context.getResources()\r
110                 .getString(R.string.delete_comm_pattern_file);\r
111         DEF_DELETE_ADDRESS_FILE = context.getResources().getString(R.string.delete_address_file);\r
112         DEF_DELETE_DEVICE_ADDRESS_FILE = context.getResources()\r
113                 .getString(R.string.delete_device_address_file);\r
114         DEF_DELETE_ZIGBEE_DEVICE_ADDRESS_FILE = context.getResources()\r
115                 .getString(R.string.delete_zigbee_device_address_file);\r
116         DEF_DELETE_HOST_FILE = context.getResources().getString(R.string.delete_host);\r
117 \r
118         DEF_MYSQLHOSTUSER = context.getResources().getString(R.string.mysql_hostuser);\r
119         DEF_MYSQLHOSTIP = context.getResources().getString(R.string.mysql_hostip);\r
120         DEF_MYSQLHOSTPASSWORD = context.getResources().getString(R.string.mysql_hostpassword);\r
121         DEF_ADD_DEVICE_TO_MYSQL = context.getResources().getString(R.string.add_device_to_mysql);\r
122 \r
123 \r
124         DEF_MYSQL_CONFIG_FILE = context.getResources().getString(R.string.mysql_config_file);\r
125         DEF_INSTALL_CMD = context.getResources().getString(R.string.install_cmd);\r
126         DEF_DELETE_CMD = context.getResources().getString(R.string.delete_cmd);\r
127         DEF_INSTALL_ADDRESS_CMD = context.getResources().getString(R.string.install_address_cmd);\r
128         DEF_INSTALL_ZBADDRESS_CMD = context.getResources().getString(R.string.install_zb_address_cmd);\r
129         DEF_DELETE_ADDRESS_CMD = context.getResources().getString(R.string.delete_address_cmd);\r
130         DEF_INSTALL_RELATION_CMD = context.getResources().getString(R.string.add_comm_cmd);\r
131         DEF_DELETE_RELATION_CMD = context.getResources().getString(R.string.delete_comm_cmd);\r
132 \r
133         DEF_DATABASE_NAME = context.getResources().getString(R.string.database_name);\r
134 \r
135         ssid.setText(DEF_RSSID);\r
136         databaseObject = new DatabaseObject();\r
137         //Check if the user has wifi connection\r
138         if (isNetworkAvailable() == false) {//without wifi connection\r
139             Toast t = Toast.makeText(this, R.string.connect, Toast.LENGTH_SHORT);\r
140             t.show();\r
141             Intent intent = new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK);\r
142             intent.putExtra("only_access_points", true);\r
143             intent.putExtra("extra_prefs_show_button_bar", true);\r
144             intent.putExtra("wifi_enable_next_on_connect", true);\r
145             startActivityForResult(intent,1);\r
146         }\r
147         //sends to another page to update/retrieve information about the database from the pi\r
148         startActivity(new Intent(this, UpdateLocalConfigFiles.class));\r
149 \r
150     }\r
151 \r
152     public void onClick(View v) {\r
153 \r
154         if(v == configButton){\r
155             startActivityForResult(new Intent(this,ConfigActivity.class),1000);\r
156         }\r
157         //Users try to execute shell scripts by pushing button,\r
158         //but problem could occur(application stop) if user push the button without wifi connection\r
159         //As a result, below function have to be implemented.\r
160         if (isNetworkAvailable() == false) {//without wifi connection\r
161             Toast t = Toast.makeText(this, R.string.connect, Toast.LENGTH_SHORT);\r
162             t.show();\r
163             Intent intent = new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK);\r
164             intent.putExtra("only_access_points", true);\r
165             intent.putExtra("extra_prefs_show_button_bar", true);\r
166             intent.putExtra("wifi_enable_next_on_connect", true);\r
167             startActivityForResult(intent,1);\r
168             System.out.println("STOPPPPP");\r
169             //startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK)); // Not as good as the lines above\r
170         } else {//with wifi connection\r
171 \r
172             dialog = new ProgressDialog(this);\r
173             dialog.setMessage("Please Wait");\r
174             dialog.setCancelable(false);\r
175             dialog.setInverseBackgroundForced(false);\r
176             dialog.show();\r
177 \r
178             if (v == registerButton) {\r
179                 Log.d("CLICKING", "Clicking on register!");\r
180                 startActivity(new Intent(this, RegistrationRouterCheck.class));\r
181 //                dialog.hide();\r
182                 //startActivity(new Intent(this, AddDeviceActivity.class));\r
183             } else if (v == listButton) {\r
184                 Log.d("CLICKING", "Clicking on list activity!");\r
185                 startActivity(new Intent(this, ListActivity.class));\r
186 //                dialog.hide();\r
187             } else if (v == databaseButton) {\r
188                 //Need to change. Not every install option needs its own page.\r
189                 Log.d("CLICKING", "Clicking on add device!");\r
190                 startActivity(new Intent(this, DatabaseActivity.class));\r
191 //                dialog.hide();\r
192             } else if (v == applicationsButton) {\r
193                 Log.d("CLICKING", "Clicking on delete device!");\r
194                 startActivity(new Intent(this, ApplicationsList.class));\r
195 //                dialog.hide();\r
196             } else if (v == driversButton) {\r
197                 Log.d("CLICKING", "Clicking on add communication!");\r
198                 startActivity(new Intent(this, DriversSelectActivity.class));\r
199             }\r
200         }\r
201     }\r
202 \r
203     @Override\r
204     protected void onResume() {\r
205         super.onResume();\r
206         if(dialog != null && dialog.isShowing()){\r
207             dialog.dismiss();\r
208         }\r
209     }\r
210 \r
211     boolean isNetworkAvailable() {//check whether wifi connection is or not\r
212         Context context = getApplicationContext();\r
213         ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);\r
214         NetworkInfo activeNetwork = cm.getActiveNetworkInfo();\r
215         boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();\r
216         return isConnected;\r
217     }\r
218 \r
219     @Override\r
220     protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
221         super.onActivityResult(requestCode, resultCode, data);\r
222 \r
223         if(requestCode == 1000){\r
224             ssid.setText(ConfigActivity.RSSID);\r
225         }\r
226     }\r
227 }