| package com.android.datetimepicker; |
| |
| import android.app.Service; |
| import android.content.Context; |
| import android.database.ContentObserver; |
| import android.net.Uri; |
| import android.os.SystemClock; |
| import android.os.Vibrator; |
| import android.provider.Settings; |
| |
| /** |
| * A simple utility class to handle haptic feedback. |
| * |
| * @deprecated This module is deprecated. Do not use this class. |
| */ |
| @Deprecated |
| public class HapticFeedbackController { |
| private static final int VIBRATE_DELAY_MS = 125; |
| private static final int VIBRATE_LENGTH_MS = 5; |
| |
| private static boolean checkGlobalSetting(Context context) { |
| return Settings.System.getInt(context.getContentResolver(), |
| Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) == 1; |
| } |
| |
| private final Context mContext; |
| private final ContentObserver mContentObserver; |
| |
| private Vibrator mVibrator; |
| private boolean mIsGloballyEnabled; |
| private long mLastVibrate; |
| |
| public HapticFeedbackController(Context context) { |
| mContext = context; |
| mContentObserver = new ContentObserver(null) { |
| @Override |
| public void onChange(boolean selfChange) { |
| mIsGloballyEnabled = checkGlobalSetting(mContext); |
| } |
| }; |
| } |
| |
| /** |
| * Call to setup the controller. |
| */ |
| public void start() { |
| mVibrator = (Vibrator) mContext.getSystemService(Service.VIBRATOR_SERVICE); |
| |
| // Setup a listener for changes in haptic feedback settings |
| mIsGloballyEnabled = checkGlobalSetting(mContext); |
| Uri uri = Settings.System.getUriFor(Settings.System.HAPTIC_FEEDBACK_ENABLED); |
| mContext.getContentResolver().registerContentObserver(uri, false, mContentObserver); |
| } |
| |
| /** |
| * Call this when you don't need the controller anymore. |
| */ |
| public void stop() { |
| mVibrator = null; |
| mContext.getContentResolver().unregisterContentObserver(mContentObserver); |
| } |
| |
| /** |
| * Try to vibrate. To prevent this becoming a single continuous vibration, nothing will |
| * happen if we have vibrated very recently. |
| */ |
| public void tryVibrate() { |
| if (mVibrator != null && mIsGloballyEnabled) { |
| long now = SystemClock.uptimeMillis(); |
| // We want to try to vibrate each individual tick discretely. |
| if (now - mLastVibrate >= VIBRATE_DELAY_MS) { |
| mVibrator.vibrate(VIBRATE_LENGTH_MS); |
| mLastVibrate = now; |
| } |
| } |
| } |
| } |