Skip to content

Commit

Permalink
Added settings for keyboard height and keep screen awake. Closes #7
Browse files Browse the repository at this point in the history
  • Loading branch information
ElishaAz committed Oct 30, 2022
1 parent 8dbd952 commit dbde469
Show file tree
Hide file tree
Showing 19 changed files with 284 additions and 48 deletions.
42 changes: 35 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,38 @@
.gradle
.idea
/local.properties
/build
/app/build
/models/build
# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Log/OS Files
*.log

# Android Studio generated files and folders
captures/
.externalNativeBuild/
.cxx/
*.apk
output.json

# IntelliJ
*.iml
.idea/
misc.xml
deploymentTargetDropDown.xml
render.experimental.xml

# Keystore files
*.jks
*.keystore

# Google Services (e.g. APIs or Firebase)
google-services.json

# Android Profiling
*.hprof

.DS_Store
*.md5
*.lst
*.iml
/app/release/
13 changes: 12 additions & 1 deletion app/src/main/java/com/elishaazaria/sayboard/AppCtx.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Resources;

import androidx.annotation.ArrayRes;
import androidx.annotation.BoolRes;
import androidx.annotation.IntegerRes;
import androidx.annotation.StringRes;

Expand All @@ -22,7 +25,15 @@ public static String getStringRes(@StringRes int res) {
return appCtx.getString(res);
}

public static int getIntegerRes(@IntegerRes int res){
public static int getIntegerRes(@IntegerRes int res) {
return appCtx.getResources().getInteger(res);
}

public static boolean getBoolRes(@BoolRes int res) {
return appCtx.getResources().getBoolean(res);
}

public static String[] getStringArrayRes(@ArrayRes int res){
return appCtx.getResources().getStringArray(res);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public void permissionsGranted() {
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
// R.id.navigation_setup,
R.id.navigation_models,
R.id.navigation_theme)
R.id.navigation_theme,
R.id.navigation_other_settings)
.build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);
Expand Down
29 changes: 28 additions & 1 deletion app/src/main/java/com/elishaazaria/sayboard/ime/IME.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.inputmethodservice.InputMethodService;
import android.os.Build;
import android.os.Handler;
Expand All @@ -29,6 +30,7 @@
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.ExtractedText;
import android.view.inputmethod.ExtractedTextRequest;
Expand All @@ -51,6 +53,7 @@

import com.elishaazaria.sayboard.R;
import com.elishaazaria.sayboard.Tools;
import com.elishaazaria.sayboard.preferences.OtherPreferences;

import java.io.IOException;
import java.util.List;
Expand Down Expand Up @@ -139,11 +142,14 @@ public void onStartInputView(EditorInfo info, boolean restarting) {

modelManager.reloadModels();
viewManager.refresh();

setKeepScreenOn(OtherPreferences.getKeepScreenAwake() == OtherPreferences.KEEP_SCREEN_AWAKE_WHEN_OPEN);
}

@Override
public void onFinishInputView(boolean finishingInput) {
// text input has ended
setKeepScreenOn(false);
}

@Override
Expand All @@ -156,8 +162,13 @@ public void micClick() {
if (modelManager.isRunning()) {
modelManager.stop();
viewManager.setUiState(ViewManager.STATE_DONE);

if (OtherPreferences.getKeepScreenAwake() == OtherPreferences.KEEP_SCREEN_AWAKE_WHEN_LISTENING)
setKeepScreenOn(false);
} else {
modelManager.start();
if (OtherPreferences.getKeepScreenAwake() == OtherPreferences.KEEP_SCREEN_AWAKE_WHEN_LISTENING)
setKeepScreenOn(true);
}
}

Expand Down Expand Up @@ -256,6 +267,12 @@ public void onUpdateSelection(int oldSelStart, int oldSelEnd, int newSelStart, i
Log.d("VoskIME", "selection update: " + selectionStart + ", " + selectionEnd);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

// viewManager.orientationChanged(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE);
}

private int selectionStart = 0;
private int selectionEnd = 0;
Expand Down Expand Up @@ -330,14 +347,24 @@ private IBinder getToken() {
return window.getAttributes().token;
}

private Window getMyWindow() {
public Window getMyWindow() {
final Dialog dialog = getWindow();
if (dialog == null) {
return null;
}
return dialog.getWindow();
}

private void setKeepScreenOn(boolean keepScreenOn) {
Window window = getMyWindow();
if (window == null) return;

if (keepScreenOn)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}


// @Override
// public void onRequestPermissionsResult(int requestCode,
Expand Down
43 changes: 39 additions & 4 deletions app/src/main/java/com/elishaazaria/sayboard/ime/ViewManager.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
package com.elishaazaria.sayboard.ime;

import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.content.res.Configuration;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.TextView;

Expand All @@ -16,6 +17,7 @@
import androidx.core.widget.TextViewCompat;

import com.elishaazaria.sayboard.R;
import com.elishaazaria.sayboard.preferences.OtherPreferences;
import com.elishaazaria.sayboard.preferences.ThemePreferences;

public class ViewManager {
Expand Down Expand Up @@ -57,10 +59,10 @@ public void init() {
modelButton = overlayView.findViewById(R.id.model_button);
returnButton = overlayView.findViewById(R.id.return_button);

overlayView.setMinHeight(convertDpToPixel(300));

resultView.setMovementMethod(new ScrollingMovementMethod());

reloadOrientation();

micButton.setOnClickListener(v -> {
if (listener != null) listener.micClick();
});
Expand Down Expand Up @@ -94,6 +96,8 @@ public void init() {

setModelName(modelName);

currentForeground = Integer.MAX_VALUE;
currentBackground = Integer.MAX_VALUE;
setUpTheme();
}

Expand Down Expand Up @@ -121,8 +125,39 @@ private void setUpTheme() {
resultView.setTextColor(foreground);
}

private void reloadOrientation() {
boolean landscape = ime.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;

Window window = ime.getMyWindow();
if (window == null)
return;

int screenHeight = ime.getResources().getDisplayMetrics().heightPixels;

float percent;
if (landscape) {
percent = OtherPreferences.getScreenHeightLandscape();
} else {
percent = OtherPreferences.getScreenHeightPortrait();
}
int height = (int) (percent * screenHeight);


Log.d("ViewManager", "Screen height: " + screenHeight + ", height: " + height);

// WindowManager.LayoutParams params = window.getAttributes();
// params.height = height;
// window.setAttributes(params);
//
overlayView.setMinHeight(height);
overlayView.setMaxHeight(height);
// overlayView.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, height));
}

public void refresh() {
setUpTheme();

reloadOrientation();
}

public void setUiState(int state) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.elishaazaria.sayboard.preferences;

import android.util.Log;

import com.elishaazaria.sayboard.AppCtx;
import com.elishaazaria.sayboard.R;

public class OtherPreferences {
public static final int KEEP_SCREEN_AWAKE_NEVER = 0;
public static final int KEEP_SCREEN_AWAKE_WHEN_LISTENING = 1;
public static final int KEEP_SCREEN_AWAKE_WHEN_OPEN = 2;

public static int getKeepScreenAwake() {
String val = MyPreferences.getSharedPref()
.getString(AppCtx.getStringRes(R.string.pref_other_keep_screen_awake_l),
AppCtx.getStringRes(R.string.pref_keep_awake_default));

if (val.equals(AppCtx.getStringRes(R.string.value_keep_awake_never)))
return KEEP_SCREEN_AWAKE_NEVER;
if (val.equals(AppCtx.getStringRes(R.string.value_keep_awake_when_listening)))
return KEEP_SCREEN_AWAKE_WHEN_LISTENING;
if (val.equals(AppCtx.getStringRes(R.string.value_keep_awake_when_open)))
return KEEP_SCREEN_AWAKE_WHEN_OPEN;

return -1;
}

public static float getScreenHeightPortrait() {
return MyPreferences.getSharedPref().getInt(AppCtx.getStringRes(R.string.pref_other_keyboard_height_portrait_i),
AppCtx.getIntegerRes(R.integer.pref_keyboard_height_portrait_default)) / (float) AppCtx.getIntegerRes(R.integer.keyboard_height_max);
}

public static float getScreenHeightLandscape() {
return MyPreferences.getSharedPref().getInt(AppCtx.getStringRes(R.string.pref_other_keyboard_height_landscape_i),
AppCtx.getIntegerRes(R.integer.pref_keyboard_height_landscape_default)) / (float) AppCtx.getIntegerRes(R.integer.keyboard_height_max);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.elishaazaria.sayboard.settingsfragments;

import android.os.Bundle;

import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;

import com.elishaazaria.sayboard.AppCtx;
import com.elishaazaria.sayboard.R;

public class LogicSettingsFragment extends PreferenceFragmentCompat {

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager.setSharedPreferencesName(AppCtx.getStringRes(R.string.main_shared_pref));
setPreferencesFromResource(R.xml.logic_preferences, rootKey);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.elishaazaria.sayboard.settingsfragments;

import android.os.Bundle;

import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;

import com.elishaazaria.sayboard.AppCtx;
import com.elishaazaria.sayboard.R;

public class OtherSettingsFragment extends PreferenceFragmentCompat {

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
PreferenceManager preferenceManager = getPreferenceManager();
preferenceManager.setSharedPreferencesName(AppCtx.getStringRes(R.string.main_shared_pref));
setPreferencesFromResource(R.xml.other_preferences, rootKey);
}
}
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/ic_settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M19.14,12.94c0.04,-0.3 0.06,-0.61 0.06,-0.94c0,-0.32 -0.02,-0.64 -0.07,-0.94l2.03,-1.58c0.18,-0.14 0.23,-0.41 0.12,-0.61l-1.92,-3.32c-0.12,-0.22 -0.37,-0.29 -0.59,-0.22l-2.39,0.96c-0.5,-0.38 -1.03,-0.7 -1.62,-0.94L14.4,2.81c-0.04,-0.24 -0.24,-0.41 -0.48,-0.41h-3.84c-0.24,0 -0.43,0.17 -0.47,0.41L9.25,5.35C8.66,5.59 8.12,5.92 7.63,6.29L5.24,5.33c-0.22,-0.08 -0.47,0 -0.59,0.22L2.74,8.87C2.62,9.08 2.66,9.34 2.86,9.48l2.03,1.58C4.84,11.36 4.8,11.69 4.8,12s0.02,0.64 0.07,0.94l-2.03,1.58c-0.18,0.14 -0.23,0.41 -0.12,0.61l1.92,3.32c0.12,0.22 0.37,0.29 0.59,0.22l2.39,-0.96c0.5,0.38 1.03,0.7 1.62,0.94l0.36,2.54c0.05,0.24 0.24,0.41 0.48,0.41h3.84c0.24,0 0.44,-0.17 0.47,-0.41l0.36,-2.54c0.59,-0.24 1.13,-0.56 1.62,-0.94l2.39,0.96c0.22,0.08 0.47,0 0.59,-0.22l1.92,-3.32c0.12,-0.22 0.07,-0.47 -0.12,-0.61L19.14,12.94zM12,15.6c-1.98,0 -3.6,-1.62 -3.6,-3.6s1.62,-3.6 3.6,-3.6s3.6,1.62 3.6,3.6S13.98,15.6 12,15.6z"/>
</vector>
22 changes: 0 additions & 22 deletions app/src/main/res/layout/fragment_theme.xml

This file was deleted.

5 changes: 5 additions & 0 deletions app/src/main/res/menu/bottom_nav_menu.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,9 @@
android:icon="@drawable/ic_baseline_color_lens_24"
android:title="@string/title_theme" />

<item
android:id="@+id/navigation_other_settings"
android:icon="@drawable/ic_settings"
android:title="@string/title_other_settings" />

</menu>
Loading

0 comments on commit dbde469

Please sign in to comment.