Sto scrivendo un'app Android con una barra di navigazione trasparente. Per regolare il layout di conseguenza, devo sapere se il dispositivo ha pulsanti software o hardware.Verifica se il dispositivo Android ha pulsanti di navigazione software o hardware
Durante la mia ricerca mi sono imbattuto le seguenti soluzioni:
boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
Questo approccio non funziona su alcuni nuovi dispositivi come il Samsung Note 4 o HTC One, che non hanno un tasto del menu, ma hanno ancora pulsanti hardware.
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
boolean hasHardwareButtons = hasBackKey && hasHomeKey;
Questo non funziona altrettanto bene, perché alcuni dispositivi come il Sony Xperia Z3 Compact restituiscono vero anche se ha una barra di navigazione del software.
Esiste un modo affidabile per scoprire se ci sono pulsanti fisici o una barra di navigazione del software?
possibile duplicato di [Come dire se un dispositivo Android dispone di tasti duri] (http://stackoverflow.com/questions/14853039/how-to -tell-se-an-android-device-has-hard-keys) –