aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-01-08 14:58:08 +0900
committerTadashi G. Takaoka <takaoka@google.com>2013-01-08 15:13:19 +0900
commitb17b88742528d09eaa36adb3dae5348b99c234e0 (patch)
tree9cf12cd0b9548794ee1d3adc5e059ea16d8d603a /java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java
parent28de7223e62fd43d59cbf91fb2422c94e32e9ab0 (diff)
downloadlatinime-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.java56
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) {