diff --git a/build.gradle b/build.gradle
index 794cb7c..2ca16ef 100644
--- a/build.gradle
+++ b/build.gradle
@@ -44,6 +44,12 @@ allprojects {
// com.android.support libs
maven { url 'https://maven.google.com' }
}
+
+ gradle.projectsEvaluated {
+ tasks.withType(JavaCompile) {
+ options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
+ }
+ }
}
task clean(type: Delete) {
diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardView.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardView.java
index c45e897..bbe1a48 100644
--- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardView.java
+++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardView.java
@@ -18,6 +18,7 @@ import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import androidx.core.content.ContextCompat;
import com.liskovsoft.leankeykeyboard.R;
import java.util.Iterator;
@@ -134,7 +135,7 @@ public class LeanbackKeyboardView extends FrameLayout {
mPaint.setAlpha(255);
mPadding = new Rect(0, 0, 0, 0);
mModeChangeTextSize = (int) res.getDimension(R.dimen.function_key_mode_change_font_size);
- mKeyTextColor = res.getColor(R.color.key_text_default);
+ mKeyTextColor = ContextCompat.getColor(getContext(), R.color.key_text_default);
mFocusIndex = -1;
mShiftState = 0;
mFocusedScale = res.getFraction(R.fraction.focused_scale, 1, 1);
@@ -190,13 +191,13 @@ public class LeanbackKeyboardView extends FrameLayout {
if (key.codes[0] == NOT_A_KEY) {
switch (mShiftState) {
case SHIFT_OFF:
- key.icon = getContext().getResources().getDrawable(R.drawable.ic_ime_shift_off);
+ key.icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_ime_shift_off);
break;
case SHIFT_ON:
- key.icon = getContext().getResources().getDrawable(R.drawable.ic_ime_shift_on);
+ key.icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_ime_shift_on);
break;
case SHIFT_LOCKED:
- key.icon = getContext().getResources().getDrawable(R.drawable.ic_ime_shift_lock_on);
+ key.icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_ime_shift_lock_on);
}
}
diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/voice/BitmapSoundLevelView.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/voice/BitmapSoundLevelView.java
index 6c5b55e..a84b082 100644
--- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/voice/BitmapSoundLevelView.java
+++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/voice/BitmapSoundLevelView.java
@@ -14,6 +14,7 @@ import android.graphics.Rect;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
+import androidx.core.content.ContextCompat;
import com.liskovsoft.leankeykeyboard.R;
public class BitmapSoundLevelView extends View {
@@ -159,13 +160,13 @@ public class BitmapSoundLevelView extends View {
size = (centerX - this.mMinimumLevelSize) * this.mCurrentVolume / 100 + this.mMinimumLevelSize;
this.mDestRect.set(centerX - size, centerY - size, centerX + size, centerY + size);
canvas.drawBitmap(this.mPrimaryLevel, (Rect) null, this.mDestRect, this.mEmptyPaint);
- this.mPaint.setColor(this.getResources().getColor(R.color.search_mic_background));
+ this.mPaint.setColor(ContextCompat.getColor(getContext(), R.color.search_mic_background));
this.mPaint.setStyle(Style.FILL);
canvas.drawCircle((float) centerX, (float) centerY, (float) (this.mMinimumLevelSize - 3), this.mPaint);
}
if (this.mTrailLevel != null && this.mPrimaryLevel != null) {
- this.mPaint.setColor(this.getResources().getColor(R.color.search_mic_levels_guideline));
+ this.mPaint.setColor(ContextCompat.getColor(getContext(), R.color.search_mic_levels_guideline));
this.mPaint.setStyle(Style.STROKE);
canvas.drawCircle((float) centerX, (float) centerY, (float) (centerX - 13), this.mPaint);
}
diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java
index 13eb63f..408ea22 100644
--- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java
+++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java
@@ -4,6 +4,8 @@ import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.inputmethodservice.InputMethodService;
+import android.os.Build;
+import android.os.Build.VERSION;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
@@ -32,30 +34,34 @@ public class LeanbackImeService extends InputMethodService {
private static final int SUGGESTIONS_CLEAR_DELAY = 1000;
private static final String TAG = "LbImeService";
private boolean mEnterSpaceBeforeCommitting;
- private final Handler mHandler = new Handler() {
- public void handleMessage(Message msg) {
- if (msg.what == MSG_SUGGESTIONS_CLEAR && LeanbackImeService.this.mShouldClearSuggestions) {
- LeanbackImeService.this.mSuggestionsFactory.clearSuggestions();
- LeanbackImeService.this.mKeyboardController.updateSuggestions(LeanbackImeService.this.mSuggestionsFactory.getSuggestions());
- LeanbackImeService.this.mShouldClearSuggestions = false;
- }
-
- }
- };
- private LeanbackKeyboardController.InputListener mInputListener = new LeanbackKeyboardController.InputListener() {
- @Override
- public void onEntry(int type, int keyCode, CharSequence text) {
- LeanbackImeService.this.handleTextEntry(type, keyCode, text);
- }
- };
private View mInputView;
private LeanbackKeyboardController mKeyboardController;
private boolean mShouldClearSuggestions = true;
private LeanbackSuggestionsFactory mSuggestionsFactory;
+ @SuppressLint("HandlerLeak")
+ private final Handler mHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ if (msg.what == MSG_SUGGESTIONS_CLEAR && mShouldClearSuggestions) {
+ mSuggestionsFactory.clearSuggestions();
+ mKeyboardController.updateSuggestions(mSuggestionsFactory.getSuggestions());
+ mShouldClearSuggestions = false;
+ }
+
+ }
+ };
+
+ private LeanbackKeyboardController.InputListener mInputListener = new LeanbackKeyboardController.InputListener() {
+ @Override
+ public void onEntry(int type, int keyCode, CharSequence text) {
+ handleTextEntry(type, keyCode, text);
+ }
+ };
+
@SuppressLint("NewApi")
+ @SuppressWarnings("deprecation")
public LeanbackImeService() {
- if (!enableHardwareAcceleration()) {
+ if (VERSION.SDK_INT < 21 && !enableHardwareAcceleration()) {
Log.w("LbImeService", "Could not enable hardware acceleration");
}
}
@@ -246,14 +252,14 @@ public class LeanbackImeService extends InputMethodService {
}
/**
- * At this point, decision whether to show kbd taking place
+ * At this point, decision whether to show kbd taking place
+ * More info
* @return whether to show kbd
*/
@SuppressLint("MissingSuperCall")
@Override
public boolean onEvaluateInputViewShown() {
- //return mKeyboardController.showInputView();
- return true; // force to show even when there is an hardware kbd
+ return mKeyboardController.showInputView();
}
@Override
diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/other/RestartServiceReceiver.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/other/RestartServiceReceiver.java
index e1ca87d..208c92f 100644
--- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/other/RestartServiceReceiver.java
+++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/other/RestartServiceReceiver.java
@@ -1,8 +1,8 @@
package com.liskovsoft.leankeyboard.other;
import android.app.*;
import android.content.*;
-import android.content.res.*;
import android.util.*;
+import com.liskovsoft.leankeyboard.utils.LocaleUtility;
import java.util.*;
@@ -57,16 +57,8 @@ public class RestartServiceReceiver extends BroadcastReceiver {
private void switchLocale(Context ctx) {
Log.e("RestartServiceReceiver", "Trying to switch locale back and forward");
Locale savedLocale = Locale.getDefault();
- trySwitchLocale(ctx, new Locale("ru"));
- trySwitchLocale(ctx, savedLocale);
- }
-
- private void trySwitchLocale(Context ctx, Locale locale) {
- Locale.setDefault(locale);
- Configuration config = ctx.getResources().getConfiguration();
- config.locale = locale;
- ctx.getResources().updateConfiguration(config,
- ctx.getResources().getDisplayMetrics());
+ LocaleUtility.forceLocaleOld(ctx, new Locale("ru"));
+ LocaleUtility.forceLocaleOld(ctx, savedLocale);
}
private String getPackageName(Context ctx) {
diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LangUpdater.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LangUpdater.java
index 110980a..420dfee 100644
--- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LangUpdater.java
+++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LangUpdater.java
@@ -74,11 +74,7 @@ public class LangUpdater {
}
Locale locale = parseLangCode(langCode);
- Locale.setDefault(locale);
- Configuration config = mContext.getResources().getConfiguration();
- config.locale = locale;
- mContext.getResources().updateConfiguration(config,
- mContext.getResources().getDisplayMetrics());
+ LocaleUtility.forceLocaleOld(mContext, locale);
}
private boolean isRussianPackage(String pkgName) {
@@ -103,7 +99,7 @@ public class LangUpdater {
public String getLocale() {
Configuration config = mContext.getResources().getConfiguration();
- return config.locale.getLanguage();
+ return LocaleUtility.getSystemLocale(config).getLanguage();
}
/**
diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LocaleUtility.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LocaleUtility.java
index 7ffceb0..d4f8fe7 100644
--- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LocaleUtility.java
+++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/utils/LocaleUtility.java
@@ -1,35 +1,14 @@
package com.liskovsoft.leankeyboard.utils;
import android.content.Context;
+import android.content.res.Configuration;
import android.os.Build;
+import android.os.Build.VERSION;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
-/*
- * Copyright 2013 Phil Brown
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- * Get Script name by Locale
- *
- * @author Phil Brown
- * @since 9:47:09 AM Dec 20, 2013
- *
- */
-
/*
* Additional info:
* https://en.wikipedia.org/wiki/Writing_system
@@ -750,19 +729,42 @@ public class LocaleUtility {
return script == null ? scripts.get("") : script;
}
+
+ public static Locale getSystemLocale(Context context) {
+ return getSystemLocale(context.getResources().getConfiguration());
+ }
- /**
- * Obtain right locale even if the user changes their Locale in settings after your application process is running.
- * Android N (Api level 24) update (no warnings).
- * @param context activity
- * @return locale
- */
- public static Locale getCurrentLocale(Context context){
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
- return context.getResources().getConfiguration().getLocales().get(0);
- } else{
- //noinspection deprecation
- return context.getResources().getConfiguration().locale;
+ public static void setSystemLocale(Context context, Locale locale) {
+ setSystemLocale(context.getResources().getConfiguration(), locale);
+ }
+
+ @SuppressWarnings("deprecation")
+ public static void setSystemLocale(Configuration config, Locale locale) {
+ if (VERSION.SDK_INT < 24) {
+ config.locale = locale;
+ } else {
+ config.setLocale(locale);
}
}
+
+ @SuppressWarnings("deprecation")
+ public static Locale getSystemLocale(Configuration config) {
+ if (VERSION.SDK_INT < 24) {
+ return config.locale;
+ } else {
+ return config.getLocales().get(0);
+ }
+ }
+
+ /**
+ * Modern Solution
+ */
+ @SuppressWarnings("deprecation")
+ public static void forceLocaleOld(Context ctx, Locale locale) {
+ Locale.setDefault(locale);
+ Configuration config = ctx.getResources().getConfiguration();
+ LocaleUtility.setSystemLocale(config, locale);
+ ctx.getResources().updateConfiguration(config,
+ ctx.getResources().getDisplayMetrics());
+ }
}