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

Commit e999792b authored by Ashwin R C's avatar Ashwin R C Committed by Paul Keith
Browse files

SystemUI: Adapt screenshot sound to ringer modes



Co-authored-by: default avataralthafvly <althafvly@gmail.com>
Change-Id: I381c351131241e45ddb6049706d6c302c2eee946
parent a44c6f38
Loading
Loading
Loading
Loading
+29 −4
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import android.graphics.Insets;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.hardware.display.DisplayManager;
import android.media.AudioManager;
import android.media.MediaActionSound;
import android.net.Uri;
import android.os.Bundle;
@@ -56,6 +57,8 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.provider.Settings;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -249,12 +252,14 @@ public class ScreenshotController {
    private final WindowManager mWindowManager;
    private final WindowManager.LayoutParams mWindowLayoutParams;
    private final AccessibilityManager mAccessibilityManager;
    private final AudioManager mAudioManager;
    private final MediaActionSound mCameraSound;
    private final ScrollCaptureClient mScrollCaptureClient;
    private final PhoneWindow mWindow;
    private final DisplayManager mDisplayManager;
    private final ScrollCaptureController mScrollCaptureController;
    private final LongScreenshotData mLongScreenshotHolder;
    private final Vibrator mVibrator;
    private final boolean mIsLowRamDevice;

    private ScreenshotView mScreenshotView;
@@ -350,6 +355,10 @@ public class ScreenshotController {
        // Setup the Camera shutter sound
        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);
    }

    void takeScreenshotFullscreen(Consumer<Uri> finisher, RequestCallback requestCallback) {
@@ -770,13 +779,30 @@ public class ScreenshotController {
        }
    }

    private void playShutterSoundIf() {
        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;
        }
    }

    /**
     * Save the bitmap but don't show the normal screenshot UI.. just a toast (or notification on
     * failure).
     */
    private void saveScreenshotAndToast(Consumer<Uri> finisher) {
        // Play the shutter sound to notify that we've taken a screenshot
        mCameraSound.play(MediaActionSound.SHUTTER_CLICK);
        playShutterSoundIf();

        saveScreenshotInWorkerThread(
                /* onComplete */ finisher,
@@ -809,8 +835,7 @@ public class ScreenshotController {
        mScreenshotAnimation =
                mScreenshotView.createScreenshotDropInAnimation(screenRect, showFlash);

        // Play the shutter sound to notify that we've taken a screenshot
        mCameraSound.play(MediaActionSound.SHUTTER_CLICK);
        playShutterSoundIf();

        if (DEBUG_ANIM) {
            Log.d(TAG, "starting post-screenshot animation");