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

Commit 9ac6a634 authored by Riley Jones's avatar Riley Jones Committed by Android (Google) Code Review
Browse files

Merge "Dissmissing AccessibilityMenu through additional means (Screen turning...

Merge "Dissmissing AccessibilityMenu through additional means (Screen turning off, back key, touch events elsewhere on the screen)."
parents e9f23d34 68031160
Loading
Loading
Loading
Loading
+23 −21
Original line number Diff line number Diff line
@@ -18,11 +18,17 @@ package com.android.systemui.accessibility.accessibilitymenu;

import android.accessibilityservice.AccessibilityButtonController;
import android.accessibilityservice.AccessibilityService;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.hardware.display.DisplayManager;
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
import android.view.Display;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
@@ -69,7 +75,7 @@ public class AccessibilityMenuService extends AccessibilityService
    };

    // Update layout.
    private final Handler mHandler = new Handler(getMainLooper());
    private final Handler mHandler = new Handler(Looper.getMainLooper());
    private final Runnable mOnConfigChangedRunnable = new Runnable() {
        @Override
        public void run() {
@@ -92,11 +98,7 @@ public class AccessibilityMenuService extends AccessibilityService
        getAccessibilityButtonController().registerAccessibilityButtonCallback(
                new AccessibilityButtonController.AccessibilityButtonCallback() {
                    /**
                     * Called when the accessibility button in the system's navigation
                     * area is clicked.
                     *
                     * @param controller the controller used to register for this
                     *                   callback
                     * {@inheritDoc}
                     */
                    @Override
                    public void onClicked(AccessibilityButtonController controller) {
@@ -107,19 +109,7 @@ public class AccessibilityMenuService extends AccessibilityService
                    }

                    /**
                     * Called when the availability of the accessibility button in the
                     * system's
                     * navigation area has changed. The accessibility button may become
                     * unavailable
                     * because the device shopped showing the button, the button was
                     * assigned to another
                     * service, or for other reasons.
                     *
                     * @param controller the controller used to register for this
                     *                   callback
                     * @param available  {@code true} if the accessibility button is
                     *                   available to this
                     *                   service, {@code false} otherwise
                     * {@inheritDoc}
                     */
                    @Override
                    public void onAvailabilityChanged(AccessibilityButtonController controller,
@@ -141,8 +131,12 @@ public class AccessibilityMenuService extends AccessibilityService
    protected void onServiceConnected() {
        mA11yMenuLayout = new A11yMenuOverlayLayout(this);

        // Temporary measure to force visibility
        mA11yMenuLayout.toggleVisibility();
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                mA11yMenuLayout.hideMenu();
            }}, new IntentFilter(Intent.ACTION_SCREEN_OFF)
        );

        mDisplayManager = getSystemService(DisplayManager.class);
        mDisplayManager.registerDisplayListener(mDisplayListener, null);
@@ -183,6 +177,14 @@ public class AccessibilityMenuService extends AccessibilityService
    public void onInterrupt() {
    }

    @Override
    protected boolean onKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            mA11yMenuLayout.hideMenu();
        }
        return false;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {