mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-12 03:58:51 -06:00
Create android-pickers module
This commit is contained in:
@@ -1,74 +0,0 @@
|
||||
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.
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user