Скрин-логгер

Ответить
KvaKoZyaBBrr
Сообщения: 2
Зарегистрирован: 11 апр 2015, 22:04

Скрин-логгер

Сообщение KvaKoZyaBBrr » 11 апр 2015, 22:09

Здравствуйте! Только начал изучать разработку под Андроид, а всё потому что висит курсовая. Поэтому прошу помочь. Нужно создать сервис, который бы записывал в лог, координаты нажатия на экран. У меня вопрос возник лишь в том, возможно ли это? Просто я думаю что служба не может перехватить нажатия с других приложений, или может? Я как бы изучать то изучаю, а вот можно ли вообще так сделать? Буду раз любому совету.Заранее благодарен.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Скрин-логгер

Сообщение doter.ua » 12 апр 2015, 12:17

Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

KvaKoZyaBBrr
Сообщения: 2
Зарегистрирован: 11 апр 2015, 22:04

Re: Скрин-логгер

Сообщение KvaKoZyaBBrr » 14 апр 2015, 18:40

Всё получилось! спасибо! Но вот проблема появилась: при сворачивании приложения, клики регистрируются, но вот координаты не выдаются, то есть х = 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);
    }

Ответить