Рисовать и зацеплять гостей без остановки приложения под - PullRequest
16 голосов
/ 22 июня 2011

Я пытаюсь выяснить, как такие приложения, как свайп-панель (https://market.android.com/details?id=mobi.conduction.swipepad.android)) могут подключать гостевые системы независимо от того, какое окно / приложение находится сверху, и как оно может рисовать и взаимодействовать, не останавливая фоновые приложения под ним.

Мне удалось создать приложения, такие как диалоговые окна и всплывающие окна, но я не могу их отобразить без остановки / замораживания фонового приложения.

ОБНОВЛЕНИЕ: найдено подходящее решение.

в onCreate вашего сервиса добавить это

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
    params.setTitle("title");
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    wm.addView(layout, params);

события касания обрабатываются так же, как обычные, за исключением случаев, когда вы не касаетесь элемента графического интерфейса служб, тогда служба не считывает касание, и оно сбрасывается в основную программу

1 Ответ

0 голосов
/ 18 июля 2011

Используя комбинацию WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH и решение этого вопроса , я смог сделать то, что вы пытаетесь сделать, не замораживая приложение в фоновом режиме.

Не забудьте включить тег разрешения использования 'android.permission.SYSTEM_ALERT_WINDOW'.

...