123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 |
- package kr.co.icontrols.iotplatform;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.os.Parcelable;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.ListView;
- import android.widget.TextView;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.IOException;
- import java.util.ArrayList;
- import kr.co.icontrols.iotplatform.DataClass.DeviceInfo;
- import kr.co.icontrols.iotplatform.DataClass.UserInfo;
- import kr.co.icontrols.iotplatform.Database.DBUtil;
- import kr.co.icontrols.iotplatform.Mqtt.MqttController;
- import kr.co.icontrols.iotplatform.adapter.DeviceListAdapter;
- import kr.co.icontrols.iotplatform.utils.GetSessionCallback;
- import kr.co.icontrols.iotplatform.utils.HttpApi;
- import okhttp3.Call;
- import okhttp3.Callback;
- import okhttp3.Response;
- import static kr.co.icontrols.iotplatform.Database.DatabaseHelper.TABLE_DEVICE_RANK;
- import static kr.co.icontrols.iotplatform.PopupActivity.POPUP_BUNDLE;
- import static kr.co.icontrols.iotplatform.PopupActivity.POPUP_IMG_INDEX;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.DismissConnectDialog;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.ErrorLogOutput;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.ForceDismissConnectDialog;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.WarnLogOutput;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.cancelToExit;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.displayProgress;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.getCognitoSession;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.isExpiredSession;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.isRestartAppForBackgroundWaitTime;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.resetBackgroundWaitTime;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.restartApp;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.setBackgroundWaitTime;
- import static kr.co.icontrols.iotplatform.utils.CommonUtils.showNotiMsg;
- import static kr.co.icontrols.iotplatform.utils.Constants.DEFAULT_RANK;
- import static kr.co.icontrols.iotplatform.utils.Constants.EXTRA_DEVICE_INFO;
- import static kr.co.icontrols.iotplatform.utils.Constants.EXTRA_DEVICE_LIST;
- import static kr.co.icontrols.iotplatform.utils.Constants.RESULT_CHANGE_GROUP_IMG;
- import static kr.co.icontrols.iotplatform.utils.Constants.RESULT_INPUT_GROUP_NAME;
- import static kr.co.icontrols.iotplatform.utils.Constants.RESULT_UPDATE_DATA;
- import static kr.co.icontrols.iotplatform.utils.HttpApi.HTTP_OK;
- public class DeviceActivity extends AppCompatActivity implements View.OnClickListener {
- private String TAG = "DeviceActivity";
- private ListView mListView;
- private DeviceListAdapter mDeviceListAdapter;
- private Handler mConnectedHandler;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_device);
- mListView = findViewById(R.id.listView);
- if(!UserInfo.confirmed) {
- showNotiMsg(this, "인증 후 사용 가능합니다.");
- } else if(isExpiredSession()) {
- getCognitoSession(new GetSessionCallback() {
- @Override
- public void successed() {
- getDeviceList();
- }
- @Override
- public void failed() {
- showNotiMsg(DeviceActivity.this, "세션을 갱신하지 못하였습니다.");
- System.exit(0);
- }
- });
- } else {
- getDeviceList();
- }
- mConnectedHandler = new Handler() {
- @Override
- public void handleMessage(@NonNull Message msg) {
- super.handleMessage(msg);
- WarnLogOutput(TAG, "mConnectedHandler : is mqtt connect ? " + MqttController.getInstance().isConneted());
- if(MqttController.getInstance().isConneted()) {
- if(mDeviceListAdapter != null) {
- MqttController.getInstance().allUnsubscribeToTopics();
- mDeviceListAdapter.notifyDataSetChanged();
- }
- } else {
- mConnectedHandler.sendEmptyMessageDelayed(1,1000);
- }
- }
- };
- }
- @Override
- protected void onResume() {
- super.onResume();
- if(isRestartAppForBackgroundWaitTime()) {
- restartApp(this);
- return;
- }
- if(mDeviceListAdapter != null) {
- MqttController.getInstance().allUnsubscribeToTopics();
- mDeviceListAdapter.notifyDataSetChanged();
- if(!MqttController.getInstance().isConneted()) {
- mConnectedHandler.sendEmptyMessageDelayed(1,1000);
- }
- }
- }
- @Override
- public void onBackPressed() {
- if(findViewById(R.id.layoutMore).getVisibility() == View.VISIBLE) {
- findViewById(R.id.layoutMore).setVisibility(View.GONE);
- } else {
-
- cancelToExit(this);
- }
- }
- @Override
- protected void onPause() {
- mConnectedHandler.removeCallbacksAndMessages(null);
- MqttController.getInstance().allUnsubscribeToTopics();
- ForceDismissConnectDialog();
- setBackgroundWaitTime();
- super.onPause();
- }
- @Override
- protected void onDestroy() {
- resetBackgroundWaitTime();
- super.onDestroy();
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- switch (requestCode) {
- case RESULT_UPDATE_DATA:
- if(resultCode == RESULT_OK) {
- MqttController.getInstance().allUnsubscribeToTopics();
- if(UserInfo.devices.size() == 0) {
- findViewById(R.id.layoutRegisterDevice).setVisibility(View.VISIBLE);
- findViewById(R.id.layoutDeviceList).setVisibility(View.GONE);
- } else {
- findViewById(R.id.layoutRegisterDevice).setVisibility(View.GONE);
- findViewById(R.id.layoutDeviceList).setVisibility(View.VISIBLE);
- mDeviceListAdapter.notifyDataSetChanged();
- UserInfo.deviceCount = UserInfo.devices.size();
- ((TextView)findViewById(R.id.txtDeviceCount)).setText(String.format(getString(R.string.string_format_device_count),UserInfo.deviceCount));
- }
- }
- break;
- }
- }
- @Override
- public void onClick(View v) {
-
- if(!UserInfo.confirmed) {
- showNotiMsg(this, "인증 후 사용 가능합니다.");
- return;
- }
- switch (v.getId()) {
- case R.id.btnBack:
- onBackPressed();
- break;
- case R.id.btnRight2:
- findViewById(R.id.layoutMore).setVisibility(View.VISIBLE);
- break;
- case R.id.btnRight:
- case R.id.btnRegisterDevice:
-
- startActivity(new Intent(this,LightRegisterGuideActivity.class));
- break;
- case R.id.btnCloseMore:
- findViewById(R.id.layoutMore).setVisibility(View.GONE);
- break;
- case R.id.layoutMoreRank:
- if(UserInfo.devices.size() > 1) {
- Intent intent = new Intent(DeviceActivity.this, DeviceChangeRankActivity.class);
- intent.putExtra(EXTRA_DEVICE_LIST, UserInfo.devices);
- intent.putExtra("MODE","DEVICE_RANK");
- startActivity(intent);
- } else {
- showNotiMsg(DeviceActivity.this,"스마트 조명 갯수가 2개 이상에만 변경 가능합니다.");
- }
- findViewById(R.id.layoutMore).setVisibility(View.GONE);
- break;
- case R.id.layoutMoreDelete:
- if(UserInfo.devices.size() > 0) {
- UserInfo.setUnSelectAllDevices();
- Intent intent = new Intent(DeviceActivity.this, DeviceSelectActivity.class);
- intent.putExtra("MODE","AWS");
- intent.putExtra(EXTRA_DEVICE_LIST, UserInfo.devices);
- startActivityForResult(intent,RESULT_UPDATE_DATA);
- } else {
- showNotiMsg(DeviceActivity.this,"삭제할 스마트 조명이 존재하지 않습니다.");
- }
- findViewById(R.id.layoutMore).setVisibility(View.GONE);
- break;
- }
- }
- private void getDeviceList() {
- UserInfo.getDevice(this, new UserInfo.CallbackForUpdate() {
- @Override
- public void updateData() {
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- if(UserInfo.devices.size() == 0) {
- findViewById(R.id.layoutRegisterDevice).setVisibility(View.VISIBLE);
- findViewById(R.id.layoutDeviceList).setVisibility(View.GONE);
- } else {
- mDeviceListAdapter = new DeviceListAdapter(DeviceActivity.this, UserInfo.devices);
- mListView.setAdapter(mDeviceListAdapter);
- mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- final DeviceInfo item = (DeviceInfo) parent.getItemAtPosition(position);
- Intent intent = new Intent(DeviceActivity.this,LightDetailActivity.class);
- intent.putExtra(EXTRA_DEVICE_INFO, (Parcelable) item);
- startActivityForResult(intent,RESULT_UPDATE_DATA);
- }
- });
- findViewById(R.id.layoutRegisterDevice).setVisibility(View.GONE);
- findViewById(R.id.layoutDeviceList).setVisibility(View.VISIBLE);
- ((TextView)findViewById(R.id.txtDeviceCount)).setText(String.format(getString(R.string.string_format_device_count),UserInfo.deviceCount));
- }
- }
- });
- }
- });
-
- }
- }
|