Is there a way to detect if the device I'm currently running on has a hardware keyboard installed?
How do I query device capabilities anyway?
Right-click on the listing for your computer's keyboard. Select the "Scan for Hardware Changes" option from the menu. The Device Manager will now test your computer's keyboard. If an "error" icon appears next to the listing, there is a problem with your computer's keyboard.
Android provides no direct way to determine if the keyboard is open, so we have to get a little creative. The View class has a handy method called getWindowVisibleDisplayFrame from which we can retrieve a rectangle which contains the portion of the view visible to the user.
i would go to settings>language & keyboard... and check you keyboard settings... see if "shortcuts" is ON... Also, try clearing out "Learned Words"... that usually helps with any OS keyboard issue... :-) if not, then get 1-click Cleaner from Market... its free... download... install.. run it...
"The flags provided by getResources().getConfiguration().keyboard are a good way of checking which keyboard (if any) is available." [1]
http://d.android.com/reference/android/content/res/Configuration.html#keyboard
Use the following method to ascertain presence of hard keyboard at any time:
(To my knowledge, soft keyboards all lack the features tested below )
public static boolean isHardKB(Context ctx) { Configuration cf = ctx.getResources().getConfiguration(); return cf.navigation==Configuration.NAVIGATION_DPAD || cf.navigation==Configuration.NAVIGATION_TRACKBALL || cf.navigation==Configuration.NAVIGATION_WHEEL; }
Optionally trap all run-time keyboard changes for each affected Activity via AndroidManifest:
android:configChanges="keyboard|keyboardHidden|navigation"
But be sure to support the above manifest change with (at least) a dummy onConfigurationChanged()
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Optionally employ 'isHardKB()' }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With