Android Inputmethod Latin

Android Inputmethod Latin




๐Ÿ’ฃ ๐Ÿ‘‰๐Ÿป๐Ÿ‘‰๐Ÿป๐Ÿ‘‰๐Ÿป ALL INFORMATION CLICK HERE ๐Ÿ‘ˆ๐Ÿป๐Ÿ‘ˆ๐Ÿป๐Ÿ‘ˆ๐Ÿป




















































This app is disabled and does not appear in the repo

Views

Read
View source
View history


Stock keyboard - view in repository

Despite the splash screen, there is no gesture (aka โ€œswypeโ€) typing in 4.4.2.
There is only limited amount of monochrome Emoji characters, though they may be
supplemented if you have another keyboard installed. Other recent differences
include: white hinting, quicker entry of user-defined words, better suggestions
in landscape and layout changes.

The current version comes with English, Spanish, Russian, PT-Brazilian, Italian,
German, French, dictionaries; there are more language word lists in the
repository but they'd need to be compiled. There is no gesture typing with this
version either.

If your ROM does com with com.android.inputmethod.latin package, you cannot
update to this one directly. Either use F-Droid as a system app or remove the
old package by hand and then install this one.

ONLY DO THIS IF YOU KNOW WHAT YOU ARE DOING. THIS MIGHT BRICK YOUR DEVICE!

Note that, like other AOSP apps, there are now special tags with 'sdk' in them;
not sure what the difference is.

We have the current version of this app. (Check mode: None) (Auto-update mode: None)

The current (recommended) version is 4.4.2 (version code 4424).

This version is built and signed by F-Droid, and guaranteed to correspond to the source tarball published with it.

This version is built and signed by F-Droid, and guaranteed to correspond to the source tarball published with it.

This version is built and signed by F-Droid, and guaranteed to correspond to the source tarball published with it.

This version is built and signed by F-Droid, and guaranteed to correspond to the source tarball published with it.


blob: cf7eea70b613306171aec8171d75a576152dc0cb [ file ] [ log ] [ blame ]
* Copyright (C) 2008 The Android Open Source Project
* 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
* 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
package com . android . inputmethod . latin ;
import static com . android . inputmethod . latin . Constants . ImeOption . FORCE_ASCII ;
import static com . android . inputmethod . latin . Constants . ImeOption . NO_MICROPHONE ;
import static com . android . inputmethod . latin . Constants . ImeOption . NO_MICROPHONE_COMPAT ;
import android . app . AlertDialog ;
import android . content . BroadcastReceiver ;
import android . content . Context ;
import android . content . DialogInterface ;
import android . content . Intent ;
import android . content . IntentFilter ;
import android . content . SharedPreferences ;
import android . content . pm . ApplicationInfo ;
import android . content . res . Configuration ;
import android . content . res . Resources ;
import android . inputmethodservice . InputMethodService ;
import android . media . AudioManager ;
import android . net . ConnectivityManager ;
import android . os . HandlerThread ;
import android . os . SystemClock ;
import android . preference . PreferenceManager ;
import android . text . InputType ;
import android . text . TextUtils ;
import android . util . PrintWriterPrinter ;
import android . view . KeyCharacterMap ;
import android . view . ViewGroup . LayoutParams ;
import android . view . WindowManager ;
import android . view . inputmethod . CompletionInfo ;
import android . view . inputmethod . CorrectionInfo ;
import android . view . inputmethod . EditorInfo ;
import android . view . inputmethod . InputMethodSubtype ;
import com . android . inputmethod . accessibility . AccessibilityUtils ;
import com . android . inputmethod . accessibility . AccessibleKeyboardViewProxy ;
import com . android . inputmethod . compat . CompatUtils ;
import com . android . inputmethod . compat . InputMethodManagerCompatWrapper ;
import com . android . inputmethod . compat . InputMethodServiceCompatUtils ;
import com . android . inputmethod . compat . SuggestionSpanUtils ;
import com . android . inputmethod . keyboard . KeyDetector ;
import com . android . inputmethod . keyboard . Keyboard ;
import com . android . inputmethod . keyboard . KeyboardActionListener ;
import com . android . inputmethod . keyboard . KeyboardId ;
import com . android . inputmethod . keyboard . KeyboardSwitcher ;
import com . android . inputmethod . keyboard . KeyboardView ;
import com . android . inputmethod . keyboard . MainKeyboardView ;
import com . android . inputmethod . latin . LocaleUtils . RunInLocale ;
import com . android . inputmethod . latin . Utils . Stats ;
import com . android . inputmethod . latin . define . ProductionFlag ;
import com . android . inputmethod . latin . suggestions . SuggestionStripView ;
import com . android . inputmethod . research . ResearchLogger ;
import java . io . FileDescriptor ;
* Input method implementation for Qwerty'ish keyboard.
public final class LatinIME extends InputMethodService implements KeyboardActionListener ,
SuggestionStripView . Listener , TargetApplicationGetter . OnTargetApplicationKnownListener ,
Suggest . SuggestInitializationListener {
private static final String TAG = LatinIME . class . getSimpleName ();
private static final boolean TRACE = false ;
private static final int EXTENDED_TOUCHABLE_REGION_HEIGHT = 100 ;
// How many continuous deletes at which to start deleting at a higher speed.
private static final int DELETE_ACCELERATE_AT = 20 ;
// Key events coming any faster than this are long-presses.
private static final int QUICK_PRESS = 200 ;
private static final int PENDING_IMS_CALLBACK_DURATION = 800 ;
* The name of the scheme used by the Package Manager to warn of a new package installation,
private static final String SCHEME_PACKAGE = "package" ;
private static final int SPACE_STATE_NONE = 0 ;
// Double space: the state where the user pressed space twice quickly, which LatinIME
// resolved as period-space. Undoing this converts the period to a space.
private static final int SPACE_STATE_DOUBLE = 1 ;
// Swap punctuation: the state where a weak space and a punctuation from the suggestion strip
// have just been swapped. Undoing this swaps them back; the space is still considered weak.
private static final int SPACE_STATE_SWAP_PUNCTUATION = 2 ;
// Weak space: a space that should be swapped only by suggestion strip punctuation. Weak
// spaces happen when the user presses space, accepting the current suggestion (whether
// it's an auto-correction or not).
private static final int SPACE_STATE_WEAK = 3 ;
// Phantom space: a not-yet-inserted space that should get inserted on the next input,
// character provided it's not a separator. If it's a separator, the phantom space is dropped.
// Phantom spaces happen when a user chooses a word from the suggestion strip.
private static final int SPACE_STATE_PHANTOM = 4 ;
// Current space state of the input method. This can be any of the above constants.
private SettingsValues mCurrentSettings ;
private View mKeyPreviewBackingView ;
private View mSuggestionsContainer ;
private SuggestionStripView mSuggestionStripView ;
/* package for tests */ Suggest mSuggest ;
private CompletionInfo [] mApplicationSpecifiedCompletions ;
private ApplicationInfo mTargetApplicationInfo ;
private InputMethodManagerCompatWrapper mImm ;
private SharedPreferences mPrefs ;
/* package for tests */ final KeyboardSwitcher mKeyboardSwitcher ;
private final SubtypeSwitcher mSubtypeSwitcher ;
private boolean mShouldSwitchToLastSubtype = true ;
private boolean mIsMainDictionaryAvailable ;
private UserBinaryDictionary mUserDictionary ;
private UserHistoryDictionary mUserHistoryDictionary ;
private boolean mIsUserDictionaryAvailable ;
private LastComposedWord mLastComposedWord = LastComposedWord . NOT_A_COMPOSED_WORD ;
private final WordComposer mWordComposer = new WordComposer ();
private RichInputConnection mConnection = new RichInputConnection ( this );
// Keep track of the last selection range to decide if we need to show word alternatives
private static final int NOT_A_CURSOR_POSITION = - 1 ;
private int mLastSelectionStart = NOT_A_CURSOR_POSITION ;
private int mLastSelectionEnd = NOT_A_CURSOR_POSITION ;
// Whether we are expecting an onUpdateSelection event to fire. If it does when we don't
// "expect" it, it means the user actually moved the cursor.
private boolean mExpectingUpdateSelection ;
private AudioAndHapticFeedbackManager mFeedbackManager ;
// Member variables for remembering the current device orientation.
// Object for reacting to adding/removing a dictionary pack.
private BroadcastReceiver mDictionaryPackInstallReceiver =
new DictionaryPackInstallBroadcastReceiver ( this );
// Keeps track of most recently inserted text (multi-character key) for reverting
private CharSequence mEnteredText ;
private boolean mIsAutoCorrectionIndicatorOn ;
private AlertDialog mOptionsDialog ;
private final boolean mIsHardwareAcceleratedDrawingEnabled ;
public final UIHandler mHandler = new UIHandler ( this );
public static final class UIHandler extends StaticInnerHandlerWrapper < LatinIME > {
private static final int MSG_UPDATE_SHIFT_STATE = 0 ;
private static final int MSG_PENDING_IMS_CALLBACK = 1 ;
private static final int MSG_UPDATE_SUGGESTION_STRIP = 2 ;
private static final int MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP = 3 ;
private static final int ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT = 1 ;
private int mDelayUpdateSuggestions ;
private int mDelayUpdateShiftState ;
private long mDoubleSpacesTurnIntoPeriodTimeout ;
private long mDoubleSpaceTimerStart ;
public UIHandler ( final LatinIME outerInstance ) {
final Resources res = getOuterInstance (). getResources ();
res . getInteger ( R . integer . config_delay_update_suggestions );
res . getInteger ( R . integer . config_delay_update_shift_state );
mDoubleSpacesTurnIntoPeriodTimeout = res . getInteger (
R . integer . config_double_spaces_turn_into_period_timeout );
public void handleMessage ( final Message msg ) {
final LatinIME latinIme = getOuterInstance ();
final KeyboardSwitcher switcher = latinIme . mKeyboardSwitcher ;
latinIme . updateSuggestionStrip ();
case MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP :
latinIme . showGesturePreviewAndSuggestionStrip (( SuggestedWords ) msg . obj ,
msg . arg1 == ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT );
public void postUpdateSuggestionStrip () {
sendMessageDelayed ( obtainMessage ( MSG_UPDATE_SUGGESTION_STRIP ), mDelayUpdateSuggestions );
public void cancelUpdateSuggestionStrip () {
removeMessages ( MSG_UPDATE_SUGGESTION_STRIP );
public boolean hasPendingUpdateSuggestions () {
return hasMessages ( MSG_UPDATE_SUGGESTION_STRIP );
public void postUpdateShiftState () {
removeMessages ( MSG_UPDATE_SHIFT_STATE );
sendMessageDelayed ( obtainMessage ( MSG_UPDATE_SHIFT_STATE ), mDelayUpdateShiftState );
public void cancelUpdateShiftState () {
removeMessages ( MSG_UPDATE_SHIFT_STATE );
public void showGesturePreviewAndSuggestionStrip ( final SuggestedWords suggestedWords ,
final boolean dismissGestureFloatingPreviewText ) {
removeMessages ( MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP );
final int arg1 = dismissGestureFloatingPreviewText
? ARG1_DISMISS_GESTURE_FLOATING_PREVIEW_TEXT : 0 ;
obtainMessage ( MSG_SHOW_GESTURE_PREVIEW_AND_SUGGESTION_STRIP , arg1 , 0 , suggestedWords )
public void startDoubleSpacesTimer () {
mDoubleSpaceTimerStart = SystemClock . uptimeMillis ();
public void cancelDoubleSpacesTimer () {
public boolean isAcceptingDoubleSpaces () {
return SystemClock . uptimeMillis () - mDoubleSpaceTimerStart
< mDoubleSpacesTurnIntoPeriodTimeout ;
// Working variables for the following methods.
private boolean mIsOrientationChanging ;
private boolean mPendingSuccessiveImsCallback ;
private boolean mHasPendingStartInput ;
private boolean mHasPendingFinishInputView ;
private boolean mHasPendingFinishInput ;
private EditorInfo mAppliedEditorInfo ;
public void startOrientationChanging () {
removeMessages ( MSG_PENDING_IMS_CALLBACK );
final LatinIME latinIme = getOuterInstance ();
if ( latinIme . isInputViewShown ()) {
latinIme . mKeyboardSwitcher . saveKeyboardState ();
private void resetPendingImsCallback () {
mHasPendingFinishInputView = false ;
private void executePendingImsCallback ( final LatinIME latinIme , final EditorInfo editorInfo ,
latinIme . onFinishInputViewInternal ( mHasPendingFinishInput );
latinIme . onFinishInputInternal ();
latinIme . onStartInputInternal ( editorInfo , restarting );
public void onStartInput ( final EditorInfo editorInfo , final boolean restarting ) {
if ( hasMessages ( MSG_PENDING_IMS_CALLBACK )) {
// Typically this is the second onStartInput after orientation changed.
if ( mIsOrientationChanging && restarting ) {
// This is the first onStartInput after orientation changed.
mPendingSuccessiveImsCallback = true ;
final LatinIME latinIme = getOuterInstance ();
executePendingImsCallback ( latinIme , editorInfo , restarting );
latinIme . onStartInputInternal ( editorInfo , restarting );
public void onStartInputView ( final EditorInfo editorInfo , final boolean restarting ) {
if ( hasMessages ( MSG_PENDING_IMS_CALLBACK )
&& KeyboardId . equivalentEditorInfoForKeyboard ( editorInfo , mAppliedEditorInfo )) {
// Typically this is the second onStartInputView after orientation changed.
if ( mPendingSuccessiveImsCallback ) {
// This is the first onStartInputView after orientation changed.
mPendingSuccessiveImsCallback = false ;
sendMessageDelayed ( obtainMessage ( MSG_PENDING_IMS_CALLBACK ),
final LatinIME latinIme = getOuterInstance ();
executePendingImsCallback ( latinIme , editorInfo , restarting );
latinIme . onStartInputViewInternal ( editorInfo , restarting );
public void onFinishInputView ( final boolean finishingInput ) {
if ( hasMessages ( MSG_PENDING_IMS_CALLBACK )) {
// Typically this is the first onFinishInputView after orientation changed.
mHasPendingFinishInputView = true ;
final LatinIME latinIme = getOuterInstance ();
latinIme . onFinishInputViewInternal ( finishingInput );
if ( hasMessages ( MSG_PENDING_IMS_CALLBACK )) {
// Typically this is the first onFinishInput after orientation changed.
final LatinIME latinIme = getOuterInstance ();
executePendingImsCallback ( latinIme , null , false );
latinIme . onFinishInputInternal ();
mSubtypeSwitcher = SubtypeSwitcher . getInstance ();
mKeyboardSwitcher = KeyboardSwitcher . getInstance ();
mIsHardwareAcceleratedDrawingEnabled =
InputMethodServiceCompatUtils . enableHardwareAcceleration ( this );
Log . i ( TAG , "Hardware accelerated drawing: " + mIsHardwareAcceleratedDrawingEnabled );
final SharedPreferences prefs = PreferenceManager . getDefaultSharedPreferences ( this );
LatinImeLogger . init ( this , prefs );
if ( ProductionFlag . IS_EXPERIMENTAL ) {
ResearchLogger . getInstance (). init ( this , prefs );
InputMethodManagerCompatWrapper . init ( this );
KeyboardSwitcher . init ( this , prefs );
AccessibilityUtils . init ( this );
mImm = InputMethodManagerCompatWrapper . getInstance ();
final Resources res = getResources ();
ImfUtils . setAdditionalInputMethodSubtypes ( this , mCurrentSettings . getAdditionalSubtypes ());
mDisplayOrientation = res . getConfiguration (). orientation ;
// Register to receive ringer mode change and network state change.
// Also receive installation and removal of a dictionary pack.
final IntentFilter filter = new IntentFilter ();
filter . addAction ( ConnectivityManager . CONNECTIVITY_ACTION );
filter . addAction ( AudioManager . RINGER_MODE_CHANGED_ACTION );
registerReceiver ( mReceiver , filter );
final IntentFilter packageFilter = new IntentFilter ();
packageFilter . addAction ( Intent . ACTION_PACKAGE_ADDED );
packageFilter . addAction ( Intent . ACTION_PACKAGE_REMOVED );
packageFilter . addDataScheme ( SCHEME_PACKAGE );
https://f-droid.org/wiki/page/com.android.inputmethod.latin
https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/5d2556b93286f5f1d7d829b586b84a8b7ae55743/java/src/com/android/inputmethod/latin/LatinIME.java
Cuckold Eating Gym
Sexy Female Hip Lips
Lovely Young Models
com.android.inputmethod.latin - F-Droid
java/src/com/android/inputmethod/latin/LatinIME.java ...
AOSP Keyboard (com.android.inputmethod.latin) (#1029 ...
InputMethod | Android Developers
Download Android Keyboard (AOSP) 4.4-892118 APK For Android
Create an input method | Android Developers
Archos 101IT Android Keyboard problem: process com.android ...
Create a deep link for a destination | Android Developers
android ่พ“ๅ…ฅๆณ•้—ฎ้ข˜_ๆ ผ็‰ฉ็š„ไธ“ๆ -CSDNๅšๅฎข
Android Inputmethod Latin


Report Page