Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Тяжело ли глобально перехватить нажатия пальца? - Программирование Android

10.10.2013, 03:35. Просмотров 2258. Ответов 19
Метки нет (Все метки)

Хочу в своей программе (куча окошек) провети частотный анализ "зон" клика пальцем.
В разрезе каждого активити или/и общий для всей программы.
Хочу нарисовать картинку типа (первый раз подключаю картинку к форуму):
http://s2.ipicture.ru/uploads/20131010/EQCTCajj.png
для оптимизации дизайна и перестановки элементов...

OnTouch вроде получает только те элементы на которые я "назначил" обработчик. Если же что-то пропустил. Или там уже был другой обработчик, то возникают проблемы. В винде было понятие Hook - перехват ЛЮБЫХ действий пользователя. Результат хочу писать в базу/таблицу в виде "date,time,activity,X,W,Y,H" для дальнейшего анализа...

Возможно ли подобное? Нужен для этого рут и хитрые дрова или возможно штатными средствами? Может можно положить невидимое "окно" поверх остальных, но не блокировать клик на лежащих под ним кнопках?
0
Миниатюры
Тяжело ли глобально перехватить нажатия пальца?  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2013, 03:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Тяжело ли глобально перехватить нажатия пальца? (Программирование Android):

Обработка движения пальца по экрану - Программирование Android
Подскажите, пожалуйста, как обрабатывать движение пальца по экрану, например, параллельно высоте экрана, т. е. прикосновение пальца, затем...

Работа ScrollView при передвижении пальца не по нему - Программирование Android
Подскажите, пожалуйста, можно ли сделать так, что бы ScrollView прокручивался при движении пальцем не по нему, а в произвольной точке...

Глобально перехватить нажатие сочитания клавиш - C++ Builder
Вот нашол в интернете Как глобально перехватить нажатие клавиши или комбинации клавиш. Для примера, перехватим комбинацию ALT +...

Как перехватить глобально нажатие клавиши '~'? - Visual Basic
Как перехватить глобально нажатие клавиши '~'?

Глобально перехватить клавишу и выполнить определенный код - Visual Basic .NET
Я свою запускаю программу, перехожу на другое окно(текстовый документ или браузер), нажимаю клавишу включения(f1 или home) и МОЯ программа...

Как глобально(вне фокуса) перехватить события клавиатуры - C++ Qt
Здравствуйте! Подскажите, как глобально(вне фокуса) перехватить события клавиатуры. В моем случае вне фокуса - это когда окно программы...

19
YuraAAA
1578 / 1319 / 271
Регистрация: 25.10.2009
Сообщений: 3,437
Записей в блоге: 2
12.08.2015, 11:27 #16
Tester64, приветствую. Как раз на днях решал подобную задачу, глобальный перехват тача. Вы не решили проблему с блокировкой?
Делал так же, через сервис, но если layout будет на весь экран, то нажатия он-то перехватывает, но в тоже время блокирует работу тача.
0
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
12.08.2015, 18:55  [ТС] #17
Цитата Сообщение от YuraAAA Посмотреть сообщение
Вы не решили проблему с блокировкой?
Я забросил проект еще в 10.2013!

Да - решил! Проблема была в том что надо было делать размер равным 0!
я уже приводил изменненый блок:
Java
1
2
3
4
0,
//WindowManager.LayoutParams.MATCH_PARENT,
0,
//WindowManager.LayoutParams.MATCH_PARENT,
Тогда нажатия "пропускались" на нижний уровень.

И обязательно включи флаг WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH !!! Это перехватыло нажатия вне активити!

Окошко перехвата сдвинулось в центр экрана. Все координаты вычислялись от центра [-500..500]x[-1000..1000] (от размеров экрана зависит). Тогда я еще был слишком слаб в этом и не мог сдвинуть активити в верхний левый угол - думаю легко решается...

p.s. Я может попробую на днях (на выходных) реанимировать тот сервис... Основной проблемой тогда было "ненадежный сервис" (удерживающий активити перехвата), который молча умирал раз в несколько часов... А мои системы перезапуска забирали до 100% проца - сейчас эту проблему вроде решил - тестирую свой сервис на разные применения (в том числе и "плавающие окна-информеры") - будет время реанимирую "модуль перехвата"...
1
YuraAAA
1578 / 1319 / 271
Регистрация: 25.10.2009
Сообщений: 3,437
Записей в блоге: 2
13.08.2015, 10:43 #18
Tester64, большое спасибо, попробую
0
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
14.08.2015, 10:04  [ТС] #19
Цитата Сообщение от YuraAAA Посмотреть сообщение
большое спасибо, попробую
увы... реанимировал проект! Получается перехватывать все нажатия лишь в МОЕМ проекте!
В других ловится нажатие, но без координат... Достаточно свернуть мое активити как сообщения пропадают. Даже если оно еще в памяти и даже если все еще работает сервис запускающий перехватчик. И даже если из него запущены другие "флай-окошки", которые видны на экране.
Похоже ОС имеет какую-то систему защиты... Похоже ловится "основное активити" и внешние касания шлются только из своего...

В режиме отладки можно получать координаты через "%ADB% shell getevent", но они идут в HEX и без расшифровки.

Попробовал переделать по принципу: http://jhshi.me/2014/11/09/monitor-screen-touch-event-in-android/
Тоже не помогло...

Если получится - отпишись!
0
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
19.08.2015, 06:34  [ТС] #20
Потратил на этот проект еще несколько часов... Итак...
1) Судя по всему нажатия на чужих активити перехватить стандартными средствами НЕ РЕАЛЬНО!!! (очень много документации перечитал) Но можно перехватывать все нажатия в СВОЕЙ программе.
2) Можно перехватить лишь нажатия! Ни о "драгах", ни о мультитатче речь даже не идет! Получаю лишь первое нажатия из драга первым пальцем. Причем идет событие "нажато вне вьюва" (из списка "нажали/отпустили/тащим/вне вьюва")
3) При переходе на чужое активити или Home-screen продолжаю получать факт нажатия, но уже без координат (x=0, y=0)
4) Нажатия не особо точные. Возможно плохой монитор, но разброс внизу стабильно на 2 миллиметра выше нажатых, а вверху почти ровно (кнопки на которые нажимаю обрабатываются правильно, а линию рисует чуть выше кнопок - а вверху совпадают).
5) как я уже писал ТЕОРЕТИЧЕСКИ можно перехватывать все нажатия если обладать рутом (доступ к ADB) и расшифровать события от нажатий (вроде только поймать нужные и перевести из хекс-а)

...В результате получил инструмент - пишу все события в аррэй (могу и в базу) и вывожу их на другое полупрозрачное (затемненное) "проницаемое для нажатий" окно поверх остальных активити сочной контрастной ломанной. При сворачивании моего активити темное окно остается пока не нажму еще раз (уже по другому активити или хоум-скрину) - тогда скрывается. Может кому идея пригодится... Например для анализа "как пользователь держит планшет и какой зоной чаще пользуется" (хотя не смогу поймать - "нажал вверху, а отпустил внизу").

Короче... спорное достижение... для отладки нужно многое прописать внутри "отлаживаемого проекта". Проект снова уходит в архив - пока негде инструмент применять...

Если я в чем-то ошибся - поправьте...
0
19.08.2015, 06:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2015, 06:34
Привет! Вот еще темы с ответами:

Отлавливание нажатия клавиш глобально - C#
Как мне сделать, чтобы нажатия клавиш отлавливались из любого места в программе (не зависимо от того, какой контрол активен)? Подписывать...

Имитация нажатия клавиш и кликов глобально - C#
можно ли средствами NET сэмулировать события мыши и клавиатуры вообще а не только для формы. например OnMouseClick для рабочего стола?

Как глобально перехватывать нажатия клавиш? - C# WPF
Как глобально перехватывать нажатия клавиш в WPF? Есть ли работающий пример? Погуглил нашел вот это пример но так и не разобрался...

Как перехватить событие нажатия кнопки "Завершение работы"? - VBScript/JScript
Хотелось бы написать скрипт Когда пользователь выбирает "Завершение работы", появлялось сообщение "Завершение", но как перехватить это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru