Yipanic/app/src/main/java/org/bandie/yipanic/PasscodeActivity.java

121 lines
3.3 KiB
Java

package org.bandie.yipanic;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import androidx.security.crypto.EncryptedSharedPreferences;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Random;
public class PasscodeActivity<RequestQueue, StringRequest> extends AppCompatActivity {
private String passcode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_passcode);
try {
EncryptedSharedPreferences sharedPreferences = (EncryptedSharedPreferences) EncryptedSharedPreferences
.create(
"Yipanic",
"Yipanic",
getApplicationContext(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
this.passcode = sharedPreferences.getString("passcode", null);
} catch (IOException | GeneralSecurityException e) {
if (e.getMessage() != null)
Log.e("Yipanic", e.getMessage());
else
Log.e("Yipanic", "[ No exception message ]");
}
if (this.passcode == null) {
Intent intent = new Intent(this, CommandActivity.class);
startActivity(intent);
}
}
@Override
protected void onResume() {
super.onResume();
try {
EncryptedSharedPreferences sharedPreferences = (EncryptedSharedPreferences) EncryptedSharedPreferences
.create(
"Yipanic",
"Yipanic",
getApplicationContext(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
this.passcode = sharedPreferences.getString("passcode", null);
} catch (IOException | GeneralSecurityException e) {
if (e.getMessage() != null)
Log.e("Yip", e.getMessage());
else
Log.e("Yip", "[ No exception message ]");
}
if (this.passcode == null) {
Intent intent = new Intent(this, CommandActivity.class);
startActivity(intent);
}
}
private void checkPasscode() {
EditText v = findViewById(R.id.pwPasscodeInput);
if (v.getText().toString().equals(this.passcode) || this.passcode == null) {
v.setText("");
Intent intent = new Intent(this, CommandActivity.class);
startActivity(intent);
} else {
v.setText("");
v.setError("Passcode wrong.");
}
}
public void yip(@SuppressWarnings("unused") View view) {
int audio;
switch (new Random().nextInt(4)) {
default:
case 0:
audio = R.raw.yip1;
break;
case 1:
audio = R.raw.yip2;
break;
case 2:
audio = R.raw.yip3;
break;
case 3:
audio = R.raw.yip4;
break;
}
MediaPlayer mp = MediaPlayer.create(this, audio);
mp.start();
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
this.checkPasscode();
return true;
}
return true;
}
}