diff --git a/src/com/cherish/settings/preferences/fragments/GamingMode.java b/src/com/cherish/settings/preferences/fragments/GamingMode.java index 8a9fbb6..2242d82 100644 --- a/src/com/cherish/settings/preferences/fragments/GamingMode.java +++ b/src/com/cherish/settings/preferences/fragments/GamingMode.java @@ -75,6 +75,11 @@ public class GamingMode extends SettingsPreferenceFragment private Map mGamingPackages; private Context mContext; + private static final int KEY_MASK_HOME = 0x01; + private static final int KEY_MASK_BACK = 0x02; + private static final int KEY_MASK_MENU = 0x04; + private static final int KEY_MASK_APP_SWITCH = 0x10; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -87,6 +92,10 @@ public class GamingMode extends SettingsPreferenceFragment mHardwareKeysDisable = (SwitchPreference) findPreference(GAMING_MODE_HW_KEYS); + if (!haveHWkeys()) { + prefScreen.removePreference(mHardwareKeysDisable); + } + mPackageManager = getPackageManager(); mPackageAdapter = new PackageListAdapter(getActivity()); @@ -339,4 +348,17 @@ public class GamingMode extends SettingsPreferenceFragment Settings.System.putString(getContentResolver(), setting, value); } + + private boolean haveHWkeys() { + final int deviceKeys = getContext().getResources().getInteger( + com.android.internal.R.integer.config_deviceHardwareKeys); + + // read bits for present hardware keys + final boolean hasHomeKey = (deviceKeys & KEY_MASK_HOME) != 0; + final boolean hasBackKey = (deviceKeys & KEY_MASK_BACK) != 0; + final boolean hasMenuKey = (deviceKeys & KEY_MASK_MENU) != 0; + final boolean hasAppSwitchKey = (deviceKeys & KEY_MASK_APP_SWITCH) != 0; + + return (hasHomeKey || hasBackKey || hasMenuKey || hasAppSwitchKey); + } }