LoginActivity.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. unlockView.setUnlockListener(() -> {
  42. unlockView.setVisibility(View.GONE);
  43. et.setVisibility(View.VISIBLE);
  44. keyboardView.show();
  45. });
  46. et.setOnTouchListener((v, event) -> {
  47. if (event.getAction() == MotionEvent.ACTION_UP) {
  48. if (keyboardView.getVisibility() == View.GONE) {
  49. keyboardView.show();
  50. }
  51. }
  52. return true;
  53. });
  54. keyboardView.setKeyboardActionListener(new CustomKeyboardView.OnKeyboardActionListener() {
  55. @Override
  56. public void onPress(int primaryCode) {
  57. }
  58. @Override
  59. public void onRelease(int primaryCode) {
  60. }
  61. @Override
  62. public void onKey(int primaryCode, int[] keyCodes) {
  63. Log.d("onKey", primaryCode + "");
  64. Editable editable = et.getText();
  65. int start = et.getSelectionStart();
  66. switch (primaryCode) {
  67. case CustomKeyboardView.KEYCODE_SHIFT:
  68. capitalize = !capitalize;
  69. break;
  70. case CustomKeyboardView.KEYCODE_CANCEL:
  71. keyboardView.hide();
  72. et.setVisibility(View.GONE);
  73. unlockView.setVisibility(View.VISIBLE);
  74. break;
  75. case CustomKeyboardView.KEYCODE_DONE:
  76. if (TextUtils.isEmpty(et.getText())) {
  77. Toasty.info(LoginActivity.this, "请输入空间ID").show();
  78. break;
  79. }
  80. RetrofitManager.getInstance().getRetrofit().create(ApiService.class)
  81. .bindDevice(et.getText().toString()).enqueue(new Callback<Room>() {
  82. @Override
  83. public void onResponse(@NonNull Call<Room> call, @NonNull Response<Room> response) {
  84. if (response.code() == 200) {
  85. if (response.body().getRoomNo() == null) {
  86. Toasty.error(LoginActivity.this, "无设备信息").show();
  87. return;
  88. }
  89. getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE)
  90. .edit()
  91. .putString(Constants.PREF_ROOM_INFO, response.body().toBase64())
  92. .apply();
  93. MyApplication.roomInfo = response.body();
  94. MyApplication.setPassword(LoginActivity.this, response.body().getDevicePassword());
  95. startActivity(new Intent(LoginActivity.this, MainActivity.class));
  96. finish();
  97. } else {
  98. try {
  99. Toasty.error(LoginActivity.this, response.errorBody().string()).show();
  100. } catch (IOException e) {
  101. e.printStackTrace();
  102. }
  103. }
  104. }
  105. @Override
  106. public void onFailure(@NonNull Call<Room> call, @NonNull Throwable t) {
  107. Toasty.info(LoginActivity.this, "登录失败,请稍后再试").show();
  108. }
  109. });
  110. break;
  111. case CustomKeyboardView.KEYCODE_DELETE:
  112. if (editable != null && editable.length() > 0) {
  113. if (start > 0) {
  114. editable.delete(start - 1, start);
  115. }
  116. }
  117. break;
  118. default:
  119. String str = Character.toString((char) primaryCode);
  120. editable.insert(start, capitalize ? str.toUpperCase() : str.toLowerCase());
  121. break;
  122. }
  123. }
  124. @Override
  125. public void onText(CharSequence text) {
  126. }
  127. });
  128. }
  129. @Override
  130. protected void onResume() {
  131. super.onResume();
  132. View decorView = getWindow().getDecorView();
  133. int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
  134. | View.SYSTEM_UI_FLAG_FULLSCREEN
  135. | View.SYSTEM_UI_FLAG_IMMERSIVE;
  136. decorView.setSystemUiVisibility(uiOptions);
  137. }
  138. @OnClick(R.id.btn_settings)
  139. void onClickSettings() {
  140. startActivity(new Intent(this, SettingsActivity.class));
  141. }
  142. }