package juloo.keyboard2; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.graphics.drawable.Animatable; import android.media.AudioManager; import android.media.MediaPlayer; import android.net.Uri; import android.os.Build.VERSION; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.provider.Settings; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class LauncherActivity extends Activity implements Handler.Callback { /** Text is replaced when receiving key events. */ TextView _tryhere_text; EditText _tryhere_area; /** Periodically restart the animations. */ List _animations; Handler _handler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.launcher_activity); _tryhere_text = (TextView)findViewById(R.id.launcher_tryhere_text); _tryhere_area = (EditText)findViewById(R.id.launcher_tryhere_area); if (VERSION.SDK_INT >= 28) _tryhere_area.addOnUnhandledKeyEventListener( this.new Tryhere_OnUnhandledKeyEventListener()); } @Override public void onStart() { super.onStart(); _animations = new ArrayList(); _animations.add(find_anim(R.id.launcher_anim_swipe)); _handler = new Handler(getMainLooper(), this); _handler.sendEmptyMessageDelayed(0, 500); } @Override public boolean handleMessage(Message _msg) { for (Animatable anim : _animations) anim.start(); _handler.sendEmptyMessageDelayed(0, 3000); return true; } @Override public final boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.launcher_menu, menu); return true; } @Override public final boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.btnLaunchSettingsActivity) { Intent intent = new Intent(LauncherActivity.this, SettingsActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } return super.onOptionsItemSelected(item); } public void launch_imesettings(View _btn) { startActivity(new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS)); } public void launch_imepicker(View v) { InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.showInputMethodPicker(); } Animatable find_anim(int id) { ImageView img = (ImageView)findViewById(id); return (Animatable)img.getDrawable(); } @TargetApi(28) final class Tryhere_OnUnhandledKeyEventListener implements View.OnUnhandledKeyEventListener { public boolean onUnhandledKeyEvent(View v, KeyEvent ev) { // Don't handle the back key if (ev.getKeyCode() == KeyEvent.KEYCODE_BACK) return false; // Key release of modifiers would erase interesting data if (KeyEvent.isModifierKey(ev.getKeyCode())) return false; StringBuilder s = new StringBuilder(); if (ev.isAltPressed()) s.append("Alt+"); if (ev.isShiftPressed()) s.append("Shift+"); if (ev.isCtrlPressed()) s.append("Ctrl+"); if (ev.isMetaPressed()) s.append("Meta+"); // s.append(ev.getDisplayLabel()); String kc = KeyEvent.keyCodeToString(ev.getKeyCode()); s.append(kc.replaceFirst("^KEYCODE_", "")); _tryhere_text.setText(s.toString()); return false; } } }