Intereting Posts
Зависимости градлов внезапно становятся чрезвычайно медленными API PhoneGap для запроса журналов вызовов Установка Android-приложения: Неизвестный сбой (Failure – не установлен для 0) Использование Google Guava с Android 1.6 Android Studio 2.0: Почему Instant Run не работает при изменении ресурсов макета xml? Android 4.4.2 – камера uri возвращает значение null, а также функция обрезки не работает? Удаление вызова из журнала вызовов после завершения вызова Как заставить меню переполнения в панели действий с помощью Actionbarsherlock на <4.0 устройствах Отображать текст над кнопкой без жесткого кодирования высоты в xml Как воспроизводить звук через громкоговоритель Bluetooth, даже если гарнитура подключена? Android: setContentView и LayoutInflater Разница между InstrumentationTestCase и AndroidTestCase Как определить щелчок по уже выбранной вкладке Вход в систему Google для входа в токен с новым GoogleSignInOptions Создание списка в фрагменте андроида

Внедрение библиотеки для отслеживания всех событий в приложении

Я пытаюсь создать библиотеку, позвольте ей позвонить L. Компания имеет приложение для Android, скажем, A.

L можно связать с A таким, что в кодах A разработчик просто должен добавить что-то вроде:

L l = новый L ("client_id") l.startTrack ();

Теперь L должен иметь возможность отслеживать все клики, которые происходят в A, и переходить на сервер для ведения журнала. AppSee – продукт, который уже делает это.

Мне интересно, как я могу перехватить каждое действие пользователя, чтобы получить целевое имя действия (текстовое поле заголовка кнопки?)

Спасибо!

Solutions Collecting From Web of "Внедрение библиотеки для отслеживания всех событий в приложении"

То, что вы спрашиваете, это EventTracking, как в GoogleAnalytics. Но подход, который вы делаете, отличается. В аналитике Google нужно запустить событие для отслеживания событий. Например, у вас есть 3 кнопки, и вам нужно отслеживать каждую кнопку отдельно, там вы помещаете 3 отдельных трекера событий.

Если вы хотите отслеживать все события, проходящие через активность, вам нужно реализовать Activity onInterceptTouchEvent() . Всякий раз, когда событие касания происходит в активности, оно проходит через указанный выше метод.

Как говорит Google

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

с осторожностью

Использование этой функции требует особой осторожности, так как имеет довольно сложное взаимодействие с View.onTouchEvent (MotionEvent), и использование этого требует правильного использования этого метода, а также этого.

Подробнее о деталях мероприятия смотрите здесь .

OnClickListener – это интерфейс. Так что вы можете реализовать его в любом классе

Это довольно легко. Поскольку каждый элемент управления на экране является подклассом вида, вы можете сделать что-то вроде этого:

 public static void logClicksOnMe(View v){ v.setOnClickListener(new View.OnClickListener{ @Override public void onClick(View v){ //TODO Log code } }); } 

Очевидно, что это уничтожит слушателей, которые вы уже установили на таком объекте, но вы можете сделать что-то вроде этого:

 public static void setLoggedListener(View v, View.OnClickListener listener){ v.setOnClickListener(new View.OnClickListener{ @Override public void onClick(View v){ //TODO Log code if(listener!=null) listener.onClick(v); } }); } 

Разработчик должен будет установить слушателей вручную, но он уже должен, поэтому ни рабочая нагрузка, ни код не должны сильно меняться. Преимущество над интерфейсом деятельности onInterceptTouchEvent () состоит в том, что вы можете абсолютно контролировать, какой вид будет отслеживаться, и разработчик не будет ограничен использовать абстрактную деятельность (скажем, он уже использует другие абстрактные действия от третьих сторон, такие как SlidingActivity или вещи Как это.), Поэтому усилия по обслуживанию и реализации довольно малы.

 Not exactly, actually there is something more easier, you can ask them to inherit there activities from your activity eg. A extends L; Do this in following steps. 1. Create the library(say L is com.click.counter), with event handles counter like explained in many reply above, using view.onclicklistner. In onclick event, The only difference is use package name. As context is of the app which is calling the library, you can use Context::getPackageName http://developer.android.com/reference/android/content/Context.html#getPackageName%28%29 2. onclick events, you may log and sync in one go, at end of day/scheduled time, or on every click. you may use httphandler for that See https://cloud.google.com/appengine/docs/go/gettingstarted/helloworld?hl=en 2. Create a test apk(A),add the library as dependency in gradle. dependencies { compile 'com.click.counter' } 3. Inherit all the activity in test apk from class A