Comment désactiver le clavier physique dans le code (utiliser le clavier virtuel tout le temps)

Vous pourriez vous demander pourquoi est-ce que je le veux? Voici la raison:

J'ai utilisé un scanner de code à barres pour l'écran de connexion de ma application. Cependant, le fait de connecter le scanner de code à barres obligera ma tablette à utiliser le clavier physique (il pense que le scanner est le clavier) et cela empêche le clavier virtuel de venir (ce que je veux pour d'autres écrans). Je dois cliquer manuellement sur la barre système pour désactiver le clavier physique pour que le clavier virtuel apparaisse.

  • Protéger la constante de chaîne contre l'ingénierie inverse
  • Android.os.NetworkOnMainThreadException dans AsyncTask
  • Galaxy s4 et peut-être tous les téléphones HD? Mise en évidence de l'erreur de mémoire insuffisante
  • Android JNI - Appelez AttachCurrentThread sans DetachCurrentThread
  • Quelle est la différence entre "minifyEnabled" et "useProguard" dans le plugin Android pour Gradle?
  • Services Google Play manquants dans le Gestionnaire SDK
  • Alors, existe-t-il un moyen de désactiver le clavier physique dans le code ou de faire apparaître le clavier virtuel même si un «clavier» est connecté?

  • "R ne peut pas être résolu à une variable"?
  • Android: Utilisation de html5 pour déterminer la géolocalisation dans la visualisation web avec javascript api
  • Comment puis-je distribuer mon Android Wear aux utilisateurs alpha / beta sur Google Play Store?
  • RxJava2 dans le rappel de OnLoadFinished de CursorLoader
  • Quelle est la signification de la nouvelle annotation @SystemApi, une différence par rapport à @hide?
  • Comment charger et afficher le fichier .obj dans Android avec OpenGL-ES 2
  • 5 Solutions collect form web for “Comment désactiver le clavier physique dans le code (utiliser le clavier virtuel tout le temps)”

    Essayez les éléments suivants

    Settings > Language & Input > Sous Keyboard and input methods cliquez sur Default . Existe-t-il une option pour décocher ou désactiver Hardware / Physical Keyboard?

    C'est contre intuitif, mais après cela, je peux utiliser à la fois un clavier physique et le clavier virtuel sur mon appareil (Android 4.2)

    Cela semble avoir une certaine idée de votre cas. À partir de la documentation de la classe Configuration .

    Public int hardKeyboardHidden — Ajouté au niveau API 3

    Un drapeau indiquant si le clavier dur a été caché. Cela sera défini sur un périphérique avec un mécanisme pour masquer le clavier de l'utilisateur, lorsque ce mécanisme est fermé. L'un de: HARDKEYBOARDHIDDEN_NO, HARDKEYBOARDHIDDEN_YES.

    Vous pouvez prendre des mesures sur ce changement de configuration. Mais je pense qu'il n'y a aucun moyen de désactiver le clavier physique dans Android.

    Mettre à jour

    Là, mHardKeyboardSwitch est un membre privé qui détient une référence à SwitchView qui est utilisé pour refléter les préférences du clavier matériel utilisateur. Il ne peut pas être utilisé pour désactiver le clavier matériel car il n'est pas possible d'accéder à cette classe.

    Je pense que vous pouvez spécifier dans votre fichier manifeste à utiliser sur softinputmode et gérer un changement de configuration pour le clavier | keyboard_hidden

    Oui, le scanner du code-barres est détecté comme un clavier physique. Lorsqu'un clavier est connecté au périphérique, par défaut, le clavier est désactivé. Pour l'activer, nous devons désactiver le clavier matériel via:

    Paramètres> Langue et entrée> Sélectionner la méthode d'entrée

    Le nom de l'option peut différer d'un appareil à l'autre. Nous pourrons utiliser le scanner avec le clavier doux même si nous l'éteignons.

    Et NON, il n'y a aucun moyen d'accomplir par programme. Le plus que nous pouvons faire est de détecter lorsqu'un scanner / clavier est connecté et de rediriger l'utilisateur vers la fenêtre de sélection de la Méthode d'entrée, en annulant la méthode onConfigurationChanged comme ceci:

     @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) { ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)) .showInputMethodPicker(); Toast.makeText(this, "Barcode Scanner detected. Please turn OFF Hardware/Physical keyboard to enable softkeyboard to function.", Toast.LENGTH_LONG).show(); } } 

    Vous pouvez modifier et reconstruire AFS. Ouvrez WindowManagerService.java situé dans mydroid / frameworks / base / services / java / com / android / server / wm

    Trouvez des lignes comme ceci:

     if (hardKeyboardAvailable != mHardKeyboardAvailable) { mHardKeyboardAvailable = hardKeyboardAvailable; mHardKeyboardEnabled = hardKeyboardAvailable; mH.removeMessages(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); mH.sendEmptyMessage(H.REPORT_HARD_KEYBOARD_STATUS_CHANGE); } 

    Et remplacez 3 lignes par mHardKeyboardEnabled = false;

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.