Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53b75043 authored by Steve Kondik's avatar Steve Kondik Committed by Michael Bestas
Browse files

LatinIME: Add fallback loader for JNI lib

Prefer the JNI lib with gesture typing support.
If not available / installed fall back to the standard one without
geture typing.

Change-Id: I70a5f43386a9c72809a70bd286f3702378d6f9be

LatinIME: Only enable gesture mode if gesture lib is available

 * Prevents keyboard FC when gapps is not loaded.

Change-Id: I0d48e1cd80534513205f61913c798b48573ea38c

LatinIME: Remove gesture preference if gesture lib is unavailable

Gesture typing won't work without the gesture library,
so remove the preference to not mislead users
into thinking that gesture typing is supported.

Change-Id: I387ae83fd174b57fc48fe7bcfc37e3010ce89b12
parent 0fe8aae6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,4 +22,5 @@ public final class JniLibName {
    }

    public static final String JNI_LIB_NAME = "jni_latinime";
    public static final String JNI_LIB_NAME2 = "jni_latinimegoogle";
}
+5 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.inputmethod.latin.InputAttributes;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.common.StringUtils;
import com.android.inputmethod.latin.utils.AdditionalSubtypeUtils;
import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethod.latin.utils.ResourceUtils;
import com.android.inputmethod.latin.utils.RunInLocale;
import com.android.inputmethod.latin.utils.StatsUtils;
@@ -48,6 +49,7 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
    public static final String SCREEN_ACCOUNTS = "screen_accounts";
    public static final String SCREEN_THEME = "screen_theme";
    public static final String SCREEN_DEBUG = "screen_debug";
    public static final String SCREEN_GESTURE = "screen_gesture";
    // In the same order as xml/prefs.xml
    public static final String PREF_AUTO_CAP = "auto_cap";
    public static final String PREF_VIBRATE_ON = "vibrate_on";
@@ -230,6 +232,9 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
    }

    public static boolean readFromBuildConfigIfGestureInputEnabled(final Resources res) {
        if (!JniUtils.sHaveGestureLib) {
            return false;
        }
        return res.getBoolean(R.bool.config_gesture_input_enabled_by_build_config);
    }

+5 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.define.ProductionFlags;
import com.android.inputmethod.latin.utils.ApplicationUtils;
import com.android.inputmethod.latin.utils.FeedbackUtils;
import com.android.inputmethod.latin.utils.JniUtils;
import com.android.inputmethodcommon.InputMethodSettingsFragment;

public final class SettingsFragment extends InputMethodSettingsFragment {
@@ -55,6 +56,10 @@ public final class SettingsFragment extends InputMethodSettingsFragment {
            final Preference accountsPreference = findPreference(Settings.SCREEN_ACCOUNTS);
            preferenceScreen.removePreference(accountsPreference);
        }
        if (!JniUtils.sHaveGestureLib) {
            final Preference gesturePreference = findPreference(Settings.SCREEN_GESTURE);
            preferenceScreen.removePreference(gesturePreference);
        }
    }

    @Override
+10 −3
Original line number Diff line number Diff line
@@ -23,13 +23,20 @@ import com.android.inputmethod.latin.define.JniLibName;
public final class JniUtils {
    private static final String TAG = JniUtils.class.getSimpleName();

    public static boolean sHaveGestureLib = false;
    static {
        try {
            System.loadLibrary(JniLibName.JNI_LIB_NAME2);
            sHaveGestureLib = true;
        } catch (UnsatisfiedLinkError ue) {
            Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME2, ue);
            try {
                System.loadLibrary(JniLibName.JNI_LIB_NAME);
            } catch (UnsatisfiedLinkError ule) {
                Log.e(TAG, "Could not load native library " + JniLibName.JNI_LIB_NAME, ule);
            }
        }
    }

    private JniUtils() {
        // This utility class is not publicly instantiable.