Вопрос по android, touch-event, service – Получение сенсорных событий от службы (решение?)

1

Итак, ранее я публиковал вопрос о получении сенсорных событий от службы (видимо, никто не знает ответа).

После нескольких часов попыток выяснить это, я сдался и решил написать разработчику, известному как RubberBigPepper. Я спросил его, как он это сделал в своем приложении «Регулятор громкости», и он быстро ответил & quot;TYPE_SYSTEM_ALERT window& Quot ;.

Что это значит, и как это может быть реализовано в коде?

РЕДАКТИРОВАТЬ:

Я использовал следующий метод:

getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

и окно не смогло получить сенсорные события.

Я также написал ему об этом по электронной почте, и он сказал: «Используйте WindowService, чтобы добавить свое окно».

Ваш Ответ

1   ответ
1

int nFlags=WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;       
             m_cWM=(WindowManager)getSystemService(Context.WINDOW_SERVICE);
             WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
                nFlags,
                PixelFormat.TRANSLUCENT);
m_cWM.addView(YourViewClass, lp);

И не забывайте о разрешениях на использование

К счастью, это больше не работает на более новых версиях Android. Вы можете получать сенсорные события, но затем использовать их, а основное приложение не получает их.
Вот что у меня есть: TextView tv = new TextView (this); tv.setText (& Quot; Привет & Quot;); int nFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; m_cWM = (WindowManager) getSystemService (Context.WINDOW_SERVICE); WindowManager.LayoutParams lp = new WindowManager.LayoutParams (...) m_cWM.addView (tv, lp); - но текстовое представление появляется только внутри действия. Когда я иду домой, он исчезает, и устройство перестает регистрировать касания. Denizen
вам нужно переместить этот код в сервис

Похожие вопросы