diff options
author | 2013-01-08 14:58:08 +0900 | |
---|---|---|
committer | 2013-01-08 15:13:19 +0900 | |
commit | b17b88742528d09eaa36adb3dae5348b99c234e0 (patch) | |
tree | 9cf12cd0b9548794ee1d3adc5e059ea16d8d603a /java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java | |
parent | 28de7223e62fd43d59cbf91fb2422c94e32e9ab0 (diff) | |
download | latinime-b17b88742528d09eaa36adb3dae5348b99c234e0.tar.gz latinime-b17b88742528d09eaa36adb3dae5348b99c234e0.tar.xz latinime-b17b88742528d09eaa36adb3dae5348b99c234e0.zip |
Consolidate VibratorUtils with AudioAndHapticFeedbackManager
Change-Id: Ica4e3193f369330da62a259c718b779ddf9fbde5
Diffstat (limited to 'java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java index 0e7f891ff..6367156ef 100644 --- a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java +++ b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java @@ -18,11 +18,10 @@ package com.android.inputmethod.latin; import android.content.Context; import android.media.AudioManager; +import android.os.Vibrator; import android.view.HapticFeedbackConstants; import android.view.View; -import com.android.inputmethod.latin.VibratorUtils; - /** * This class gathers audio feedback and haptic feedback functions. * @@ -32,34 +31,61 @@ import com.android.inputmethod.latin.VibratorUtils; public final class AudioAndHapticFeedbackManager { public static final int MAX_KEYPRESS_VIBRATION_DURATION = 250; // millisecond - private final AudioManager mAudioManager; - private final VibratorUtils mVibratorUtils; + private AudioManager mAudioManager; + private Vibrator mVibrator; private SettingsValues mSettingsValues; private boolean mSoundOn; - public AudioAndHapticFeedbackManager(final LatinIME latinIme) { - mVibratorUtils = VibratorUtils.getInstance(latinIme); - mAudioManager = (AudioManager) latinIme.getSystemService(Context.AUDIO_SERVICE); + private static final AudioAndHapticFeedbackManager sInstance = + new AudioAndHapticFeedbackManager(); + + public static AudioAndHapticFeedbackManager getInstance() { + return sInstance; + } + + private AudioAndHapticFeedbackManager() { + // Intentional empty constructor for singleton. + } + + public static void init(final Context context) { + sInstance.initInternal(context); + } + + private void initInternal(final Context context) { + mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); + mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); } public void hapticAndAudioFeedback(final int primaryCode, final View viewToPerformHapticFeedbackOn) { - vibrate(viewToPerformHapticFeedbackOn); + vibrateInternal(viewToPerformHapticFeedbackOn); playKeyClick(primaryCode); } + public boolean hasVibrator() { + return mVibrator != null && mVibrator.hasVibrator(); + } + + public void vibrate(final long milliseconds) { + if (mVibrator == null) { + return; + } + mVibrator.vibrate(milliseconds); + } + private boolean reevaluateIfSoundIsOn() { if (mSettingsValues == null || !mSettingsValues.mSoundOn || mAudioManager == null) { return false; - } else { - return mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL; } + return mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL; } - private void playKeyClick(int primaryCode) { + private void playKeyClick(final int primaryCode) { // if mAudioManager is null, we can't play a sound anyway, so return - if (mAudioManager == null) return; + if (mAudioManager == null) { + return; + } if (mSoundOn) { final int sound; switch (primaryCode) { @@ -80,7 +106,7 @@ public final class AudioAndHapticFeedbackManager { } } - private void vibrate(final View viewToPerformHapticFeedbackOn) { + private void vibrateInternal(final View viewToPerformHapticFeedbackOn) { if (!mSettingsValues.mVibrateOn) { return; } @@ -91,9 +117,9 @@ public final class AudioAndHapticFeedbackManager { HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING); } - } else if (mVibratorUtils != null) { - mVibratorUtils.vibrate(mSettingsValues.mKeypressVibrationDuration); + return; } + vibrate(mSettingsValues.mKeypressVibrationDuration); } public void onSettingsChanged(final SettingsValues settingsValues) { |