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

Commit 2f09baca authored by Ashwin R C's avatar Ashwin R C Committed by Michael Bestas
Browse files

SystemUI: Adapt screenshot sound to ringer modes

Change-Id: I381c351131241e45ddb6049706d6c302c2eee946
parent 53eea7ec
Loading
Loading
Loading
Loading
+39 −3
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.InsetDrawable;
import android.graphics.drawable.LayerDrawable;
import android.media.AudioManager;
import android.media.MediaActionSound;
import android.net.Uri;
import android.os.Handler;
@@ -62,6 +63,8 @@ import android.os.Looper;
import android.os.Message;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -229,6 +232,8 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
    private float mDismissDeltaY;

    private MediaActionSound mCameraSound;
    private AudioManager mAudioManager;
    private Vibrator mVibrator;

    private int mNavMode;
    private int mLeftInset;
@@ -327,6 +332,10 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
        mCameraSound = new MediaActionSound();
        mCameraSound.load(MediaActionSound.SHUTTER_CLICK);

        // Grab system services needed for screenshot sound
        mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
        mVibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);

        // Store UI background executor
        mUiBgExecutor = uiBgExecutor;

@@ -695,7 +704,21 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
    private void saveScreenshotAndToast(Consumer<Uri> finisher) {
        // Play the shutter sound to notify that we've taken a screenshot
        mScreenshotHandler.post(() -> {
            switch (mAudioManager.getRingerMode()) {
                case AudioManager.RINGER_MODE_SILENT:
                    // do nothing
                    break;
                case AudioManager.RINGER_MODE_VIBRATE:
                    if (mVibrator != null && mVibrator.hasVibrator()) {
                        mVibrator.vibrate(VibrationEffect.createOneShot(50,
                                VibrationEffect.DEFAULT_AMPLITUDE));
                    }
                    break;
                case AudioManager.RINGER_MODE_NORMAL:
                    // Play the shutter sound to notify that we've taken a screenshot
                    mCameraSound.play(MediaActionSound.SHUTTER_CLICK);
                    break;
            }
        });

        saveScreenshotInWorkerThread(finisher, new ActionsReadyListener() {
@@ -856,8 +879,21 @@ public class GlobalScreenshot implements ViewTreeObserver.OnComputeInternalInset
                    }
                });

                switch (mAudioManager.getRingerMode()) {
                    case AudioManager.RINGER_MODE_SILENT:
                        // do nothing
                        break;
                    case AudioManager.RINGER_MODE_VIBRATE:
                        if (mVibrator != null && mVibrator.hasVibrator()) {
                            mVibrator.vibrate(VibrationEffect.createOneShot(50,
                                    VibrationEffect.DEFAULT_AMPLITUDE));
                        }
                        break;
                    case AudioManager.RINGER_MODE_NORMAL:
                        // Play the shutter sound to notify that we've taken a screenshot
                        mCameraSound.play(MediaActionSound.SHUTTER_CLICK);
                        break;
                }

                mScreenshotPreview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
                mScreenshotPreview.buildLayer();