package com.ht.gate; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.EditText; import android.widget.Toast; import com.ht.gate.domain.Room; import java.io.IOException; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import es.dmoral.toasty.Toasty; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class LoginActivity extends AppCompatActivity { @BindView(R.id.parent_layout) ConstraintLayout parentLayout; @BindView(R.id.keyboard_view) CustomKeyboardView keyboardView; @BindView(R.id.et) EditText et; @BindView(R.id.unlock_view) UnlockView unlockView; private boolean capitalize; private KeyboardUtil keyboardUtil; @SuppressLint("ClickableViewAccessibility") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); if (MyApplication.roomInfo != null) { // et.setText(MyApplication.roomInfo.getDeviceCode()); } unlockView.setUnlockListener(() -> { unlockView.setVisibility(View.GONE); et.setVisibility(View.VISIBLE); keyboardView.show(); }); et.setOnTouchListener((v, event) -> { if (event.getAction() == MotionEvent.ACTION_UP) { if (keyboardView.getVisibility() == View.GONE) { keyboardView.show(); } } return true; }); keyboardView.setKeyboardActionListener(new CustomKeyboardView.OnKeyboardActionListener() { @Override public void onPress(int primaryCode) { } @Override public void onRelease(int primaryCode) { } @Override public void onKey(int primaryCode, int[] keyCodes) { Log.d("onKey", primaryCode + ""); Editable editable = et.getText(); int start = et.getSelectionStart(); switch (primaryCode) { case CustomKeyboardView.KEYCODE_SHIFT: capitalize = !capitalize; break; case CustomKeyboardView.KEYCODE_CANCEL: keyboardView.hide(); et.setVisibility(View.GONE); unlockView.setVisibility(View.VISIBLE); break; case CustomKeyboardView.KEYCODE_DONE: if (TextUtils.isEmpty(et.getText())) { Toasty.info(LoginActivity.this, "请输入空间ID").show(); break; } RetrofitManager.getInstance().getRetrofit().create(ApiService.class) .bindDevice(new GetDeviceBody(et.getText().toString())).enqueue(new Callback() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) { if (response.code() == 200) { if (response.body().getRoomNo() == null) { Toasty.error(LoginActivity.this, "无设备信息").show(); return; } getSharedPreferences(SettingsActivity.PREF_NAME_SETTINGS, MODE_PRIVATE) .edit() .putString(Constants.PREF_ROOM_INFO, response.body().toBase64()) .apply(); MyApplication.roomInfo = response.body(); startActivity(new Intent(LoginActivity.this, MainActivity.class)); finish(); } else { try { Toasty.error(LoginActivity.this, response.errorBody().string()).show(); } catch (IOException e) { e.printStackTrace(); } } } @Override public void onFailure(@NonNull Call call, @NonNull Throwable t) { Toasty.info(LoginActivity.this, "登录失败,请稍后再试").show(); } }); break; case CustomKeyboardView.KEYCODE_DELETE: if (editable != null && editable.length() > 0) { if (start > 0) { editable.delete(start - 1, start); } } break; default: String str = Character.toString((char) primaryCode); editable.insert(start, capitalize ? str.toUpperCase() : str.toLowerCase()); break; } } @Override public void onText(CharSequence text) { } }); } @Override protected void onResume() { super.onResume(); View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE; decorView.setSystemUiVisibility(uiOptions); } @OnClick(R.id.btn_settings) void onClickSettings() { startActivity(new Intent(this, SettingsActivity.class)); } }