/** Enables tap detection if appropriate based on preferences. */ public void onReloadPreferences() { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(mContext); boolean enableTapDetection = false; if (!settings .getString( mContext.getString(R.string.pref_shortcut_single_tap_key), mContext.getString(R.string.pref_shortcut_single_tap_default)) .equals(mContext.getString(R.string.shortcut_value_unassigned))) { /* Single tap is assigned */ enableTapDetection = true; } if (!settings .getString( mContext.getString(R.string.pref_shortcut_double_tap_key), mContext.getString(R.string.pref_shortcut_double_tap_default)) .equals(mContext.getString(R.string.shortcut_value_unassigned))) { /* Double tap is assigned */ enableTapDetection = true; mIntegratedTapDetector.setMaxDoubleTapSpacingNanos(DOUBLE_TAP_SPACING_NANOS); } else { mIntegratedTapDetector.setMaxDoubleTapSpacingNanos(0); } /* The setting is 'sensitivity', which is the opposite of the detector's 'quality' */ if (settings .getString( mContext.getString(R.string.pref_tap_sensitivity_key), mContext.getString(R.string.pref_tap_sensitivity_default)) .equals(mContext.getString(R.string.tap_sensitivity_value_lowest))) { mIntegratedTapDetector.setTapDetectionQuality(IntegratedTapDetector.TAP_QUALITY_HIGHEST); } if (settings .getString( mContext.getString(R.string.pref_tap_sensitivity_key), mContext.getString(R.string.pref_tap_sensitivity_default)) .equals(mContext.getString(R.string.tap_sensitivity_value_low))) { mIntegratedTapDetector.setTapDetectionQuality(IntegratedTapDetector.TAP_QUALITY_HIGH); } if (settings .getString( mContext.getString(R.string.pref_tap_sensitivity_key), mContext.getString(R.string.pref_tap_sensitivity_default)) .equals(mContext.getString(R.string.tap_sensitivity_value_medium))) { mIntegratedTapDetector.setTapDetectionQuality(IntegratedTapDetector.TAP_QUALITY_MEDIUM); } if (settings .getString( mContext.getString(R.string.pref_tap_sensitivity_key), mContext.getString(R.string.pref_tap_sensitivity_default)) .equals(mContext.getString(R.string.tap_sensitivity_value_high))) { mIntegratedTapDetector.setTapDetectionQuality(IntegratedTapDetector.TAP_QUALITY_LOW); } /* Second tap of double taps can be low quality */ mIntegratedTapDetector.setDoubleTapDetectionQuality(IntegratedTapDetector.TAP_QUALITY_LOW); if (enableTapDetection) { mIntegratedTapDetector.start(); } else { mIntegratedTapDetector.stop(); } }