Jak wykryć obecność klawiatury sprzętowej?

Czy istnieje sposób na wykrycie, czy urządzenie, na którym aktualnie pracuję, ma zainstalowaną klawiaturę sprzętową?

Jak sprawdzić możliwości urządzenia?

Author: Janusz, 2010-03-10

2 answers

" flagi dostarczone przez getResources ().getConfiguration ().klawiatura to dobry sposób sprawdzania, która klawiatura (jeśli istnieje) jest dostępna." [1]

Http://d.android.com/reference/android/content/res/Configuration.html#keyboard

 31
Author: HostileFork,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-10 09:10:58

Użyj następującej metody, aby sprawdzić obecność twardej klawiatury w dowolnym momencie:
(Według mojej wiedzy, miękkie klawiatury wszystkie Brak Funkcje testowane poniżej )

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;
}

Opcjonalnie pułapka Wszystkie zmiany klawiatury w czasie uruchamiania dla każdej dotkniętej aktywności za pomocą AndroidManifest :

android:configChanges="keyboard|keyboardHidden|navigation"

Ale pamiętaj, aby wspierać powyższą zmianę manifestu (przynajmniej) atrapą onConfigurationChanged()

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    // Optionally employ 'isHardKB()'   
}
 0
Author: Bad Loser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-14 08:10:39