Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 2dc051f3 authored by Danesh M's avatar Danesh M Committed by Michael Bestas
Browse files

VibratorService: Track vibrator intensity

Track user changes and restore preferences.

Issue-Id: CYNGNOS-1166
Change-Id: I9383a7bc109aacb9de1c4ad660b678893935c872
parent 98df68f2
Loading
Loading
Loading
Loading
+27 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.hardware.input.InputManager;
import android.media.AudioManager;
import android.net.Uri;
import android.os.BatteryStats;
import android.os.Handler;
import android.os.IVibratorService;
@@ -48,6 +49,9 @@ import android.media.AudioAttributes;
import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IBatteryStats;

import cyanogenmod.hardware.CMHardwareManager;
import cyanogenmod.providers.CMSettings;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -236,6 +240,14 @@ public class VibratorService extends IVibratorService.Stub
            }
        });

        final CMHardwareManager hardware = CMHardwareManager.getInstance(mContext);
        if (hardware.isSupported(CMHardwareManager.FEATURE_VIBRATOR)) {
            mContext.getContentResolver().registerContentObserver(
                    CMSettings.Secure.getUriFor(CMSettings.Secure.VIBRATOR_INTENSITY),
                    true, mSettingObserver, UserHandle.USER_ALL);
            updateVibratorIntensity();
        }

        mContext.getContentResolver().registerContentObserver(
                Settings.System.getUriFor(Settings.System.VIBRATE_INPUT_DEVICES),
                true, mSettingObserver, UserHandle.USER_ALL);
@@ -244,6 +256,7 @@ public class VibratorService extends IVibratorService.Stub
            @Override
            public void onReceive(Context context, Intent intent) {
                updateInputDeviceVibrators();
                updateVibratorIntensity();
            }
        }, new IntentFilter(Intent.ACTION_USER_SWITCHED), null, mH);

@@ -256,10 +269,22 @@ public class VibratorService extends IVibratorService.Stub
        }

        @Override
        public void onChange(boolean SelfChange) {
        public void onChange(boolean selfChange, Uri uri) {
            if (uri.equals(CMSettings.Secure.getUriFor(CMSettings.Secure.VIBRATOR_INTENSITY))) {
                updateVibratorIntensity();
            } else {
                updateInputDeviceVibrators();
            }
        }
    }

    private void updateVibratorIntensity() {
        final CMHardwareManager hardware = CMHardwareManager.getInstance(mContext);
        final int intensity = CMSettings.Secure.getIntForUser(mContext.getContentResolver(),
                CMSettings.Secure.VIBRATOR_INTENSITY, hardware.getVibratorDefaultIntensity(),
                UserHandle.USER_CURRENT);
        hardware.setVibratorIntensity(intensity);
    }

    @Override // Binder call
    public boolean hasVibrator() {