LoginActivity.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package com.ht.gate;
  2. import androidx.annotation.NonNull;
  3. import androidx.appcompat.app.AppCompatActivity;
  4. import androidx.constraintlayout.widget.ConstraintLayout;
  5. import android.annotation.SuppressLint;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.text.Editable;
  9. import android.text.TextUtils;
  10. import android.util.Log;
  11. import android.view.MotionEvent;
  12. import android.view.View;
  13. import android.widget.EditText;
  14. import android.widget.Toast;
  15. import com.ht.gate.domain.Room;
  16. import java.io.IOException;
  17. import butterknife.BindView;
  18. import butterknife.ButterKnife;
  19. import butterknife.OnClick;
  20. import es.dmoral.toasty.Toasty;
  21. import retrofit2.Call;
  22. import retrofit2.Callback;
  23. import retrofit2.Response;
  24. public class LoginActivity extends AppCompatActivity {
  25. @BindView(R.id.parent_layout)
  26. ConstraintLayout parentLayout;
  27. @BindView(R.id.keyboard_view)
  28. CustomKeyboardView keyboardView;
  29. @BindView(R.id.et)
  30. EditText et;
  31. @BindView(R.id.unlock_view)
  32. UnlockView unlockView;
  33. private boolean capitalize;
  34. private KeyboardUtil keyboardUtil;
  35. @SuppressLint("ClickableViewAccessibility")
  36. @Override
  37. protected void onCreate(Bundle savedInstanceState) {
  38. super.onCreate(savedInstanceState);
  39. setContentView(R.layout.activity_login);
  40. ButterKnife.bind(this);
  41. if (MyApplication.roomInfo != null) {
  42. // et.setText(MyApplication.roomInfo.getDeviceCode());
  43. }
  44. unlockView.setUnlockListener(() -> {
  45. unlockView.setVisibility(View.GONE);
  46. et.setVisibility(View.VISIBLE);
  47. keyboardView.show();
  48. });
  49. et.setOnTouchListener((v, event) -> {
  50. if (event.getAction() == MotionEvent.ACTION_UP) {
  51. if (keyboardView.getVisibility() == View.GONE) {
  52. keyboardView.show();
  53. }
  54. }
  55. return true;
  56. });
  57. keyboardView.setKeyboardActionListener(new CustomKeyboardView.OnKeyboardActionListener() {
  58. @Override
  59. public void onPress(int primaryCode) {
  60. }
  61. @Override
  62. public void onRelease(int primaryCode) {
  63. }
  64. @Override
  65. public void onKey(int primaryCode, int[] keyCodes) {
  66. Log.d("onKey", primaryCode + "");
  67. Editable editable = et.getText();
  68. int start = et.getSelectionStart();
  69. switch (primaryCode) {
  70. case CustomKeyboardView.KEYCODE_SHIFT:
  71. capitalize = !capitalize;
  72. break;
  73. case CustomKeyboardView.KEYCODE_CANCEL:
  74. keyboardView.hide();
  75. et.setVisibility(View.GONE);
  76. unlockView.setVisibility(View.VISIBLE);
  77. break;
  78. case CustomKeyboardView.KEYCODE_DONE:
  79. if (TextUtils.isEmpty(et.getText())) {
  80. Toasty.info(LoginActivity.this, "请输入空间ID").show();
  81. break;
  82. }
  83. RetrofitManager.getInstance().getRetrofit().create(ApiService.class)
  84. .bindDevice(new GetDeviceBody(et.getText().toString())).enqueue(new Callback<Room>() {
  85. @Override
  86. public void onResponse(@NonNull Call<Room> call, @NonNull Response<Room> response) {
  87. if (response.code() == 200) {
  88. if (response.body().getRoomNo() == null) {
  89. Toasty.error(LoginActivity.this, "无设备信息").show();
  90. return;
  91. }
  92. getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE)
  93. .edit()
  94. .putString(Constants.PREF_ROOM_INFO, response.body().toBase64())
  95. .apply();
  96. MyApplication.roomInfo = response.body();
  97. startActivity(new Intent(LoginActivity.this, MainActivity.class));
  98. finish();
  99. } else {
  100. try {
  101. Toasty.error(LoginActivity.this, response.errorBody().string()).show();
  102. } catch (IOException e) {
  103. e.printStackTrace();
  104. }
  105. }
  106. }
  107. @Override
  108. public void onFailure(@NonNull Call<Room> call, @NonNull Throwable t) {
  109. Toasty.info(LoginActivity.this, "登录失败,请稍后再试").show();
  110. }
  111. });
  112. break;
  113. case CustomKeyboardView.KEYCODE_DELETE:
  114. if (editable != null && editable.length() > 0) {
  115. if (start > 0) {
  116. editable.delete(start - 1, start);
  117. }
  118. }
  119. break;
  120. default:
  121. String str = Character.toString((char) primaryCode);
  122. editable.insert(start, capitalize ? str.toUpperCase() : str.toLowerCase());
  123. break;
  124. }
  125. }
  126. @Override
  127. public void onText(CharSequence text) {
  128. }
  129. });
  130. }
  131. @Override
  132. protected void onResume() {
  133. super.onResume();
  134. View decorView = getWindow().getDecorView();
  135. int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
  136. | View.SYSTEM_UI_FLAG_FULLSCREEN
  137. | View.SYSTEM_UI_FLAG_IMMERSIVE;
  138. decorView.setSystemUiVisibility(uiOptions);
  139. }
  140. @OnClick(R.id.btn_settings)
  141. void onClickSettings() {
  142. startActivity(new Intent(this, SettingsActivity.class));
  143. }
  144. }