Страница 1 из 1
Скрин-логгер
Добавлено: 11 апр 2015, 22:09
KvaKoZyaBBrr
Здравствуйте! Только начал изучать разработку под Андроид, а всё потому что висит курсовая. Поэтому прошу помочь. Нужно создать сервис, который бы записывал в лог, координаты нажатия на экран. У меня вопрос возник лишь в том, возможно ли это? Просто я думаю что служба не может перехватить нажатия с других приложений, или может? Я как бы изучать то изучаю, а вот можно ли вообще так сделать? Буду раз любому совету.Заранее благодарен.
Re: Скрин-логгер
Добавлено: 12 апр 2015, 12:17
doter.ua
Re: Скрин-логгер
Добавлено: 14 апр 2015, 18:40
KvaKoZyaBBrr
Всё получилось! спасибо! Но вот проблема появилась: при сворачивании приложения, клики регистрируются, но вот координаты не выдаются, то есть х = 0 и у = 0, а в приложении координаты ненулевые. Можно ли как-нибудь получать координаты за пределами приложения?
MyService.java
Код: Выделить всё
WindowManager mWindowManager = null;
LinearLayout mDummyView = null;
Context mContext = null;
BufferedWriter bw;
public void onCreate() {
Log.d(LOG_TAG, "onCreate");
mWindowManager =(( WindowManager) getSystemService(Context.WINDOW_SERVICE));
mDummyView = new LinearLayout(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(1, WindowManager.LayoutParams.MATCH_PARENT);
mDummyView.setLayoutParams(params);
mDummyView.setOnTouchListener(this);
super.onCreate();
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LOG_TAG, "onStartCommand");
someTask();
return super.onStartCommand(intent, flags, startId);
}
public boolean onTouch(View v, MotionEvent event) {
Log.d(LOG_TAG, "Touch event: " + event.toString());
//Вот тут координаты в приложении ненулевые, а при сворачивании - нулевые
return false;
}
void someTask() {
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
1, /* width */
1, /* height */
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSPARENT
);
params.gravity = Gravity.LEFT | Gravity.TOP;
mWindowManager.addView(mDummyView, params);
}