Прослушивание кнопок home, menu или back из сервиса в Android - PullRequest
0 голосов
/ 21 апреля 2020

Я пытался создать наложения на экране так же, как Facebook Messenger, наложение имеет два статуса: расширенный , который занимает полный экран и свернутый Который состоит только из перетаскиваемого пузыря . После нажатия на пузырь, представление расширяется, а при нажатии на пузырь снова, представление рушится.

Мне удалось добиться этого, проблема, с которой я столкнулся сейчас, заключается в том, что я хочу, чтобы приложение свернулось сверните в пузырек при нажатии кнопок «Домой», «Меню» или «Назад», или когда в телефоне происходит другое изменение, например, прием телефонного звонка, поскольку сейчас приложение остается на вершине всего, даже когда кнопка «Домой» нажата или получен телефонный звонок.

Загрузка всплывающей подсказки

int LAYOUT_FLAG;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
    LAYOUT_FLAG = WindowManager.LayoutParams.TYPE_PHONE;
}

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.WRAP_CONTENT,
    WindowManager.LayoutParams.WRAP_CONTENT,
    LAYOUT_FLAG,
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
    PixelFormat.TRANSLUCENT);

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mFloatingWidget, params);

Расширение просмотра

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.MATCH_PARENT,
    WindowManager.LayoutParams.MATCH_PARENT,
    LAYOUT_FLAG,
    WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
    PixelFormat.TRANSLUCENT);

params.x = 0;
params.y = 100;
mWindowManager.updateViewLayout(mFloatingWidget, params);

collapsedView.setVisibility(View.GONE);
expandedView.setVisibility(View.VISIBLE);

Я долго искал решение, прежде чем опубликовать вопрос здесь, есть ли способ прослушать такие изменения в системе? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...