GetDefaultTracker () de una clase que extiende InputMethodService?

Tengo una aplicación de teclado para Android que estoy desarrollando, y muestra símbolos simples en lugar de lenguaje, por lo que dicho, me encantaría poder seguir la actividad del usuario ya que no hay información sensible o palabras implicadas.

El problema es que InputMethodService de Android no extiende la Application , que es lo que le permite acceder al Android SDK de Google Analytics (posible error de redacción, aquí, no dude en corregirme).

He seguido la guía aquí para empezar, y este es el código al que he hecho referencia para adquirir el objeto Tracker :

 /* * Copyright Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.google.samples.quickstart.analytics; import android.app.Application; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; /** * This is a subclass of {@link Application} used to provide shared objects for this app, such as * the {@link Tracker}. */ public class AnalyticsApplication extends Application { private Tracker mTracker; /** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } return mTracker; } } 

Todo esto es fantástico para el seguimiento de la actividad principal de mi aplicación, que es básicamente una vista que contiene un conjunto corto de instrucciones con un par de anuncios y un acceso directo de configuración.

Como he dicho antes, me gustaría rastrear el teclado , y cómo hacerlo no es exactamente obvio ya que InputMethodService no expone Google Analytics.

¿Cómo puedo utilizar el SDK Android de Google Analytics dentro de una clase que extiende InputMethodService pero no Application ?

Por favor dígame si no he hecho mi problema claro, actualizaré el poste cualquier manera que pueda.

No es necesario que tenga una Application para utilizar el SDK de Android de Google Analytics.

El ejemplo agrega el método de ayuda getDefaultTracker dentro de la clase Application para centralizar y facilitar el acceso al rastreador predeterminado. En la mayoría de los casos esto sería la mejor solución posible, por esta razón el ejemplo recomienda este enfoque. Pero hay algunas excepciones donde esta solución no es factible, como en InputMethodService .

Como se puede ver en la documentación el parámetro del método getInstance es un Context :

Public static GoogleAnalytics getInstance (Contexto contextual)

Obtiene la instancia de GoogleAnalytics, creándola cuando sea necesario. Es seguro llamar a este método de cualquier hilo

Por esta razón, puede utilizar el mismo método getDefaultTracker directamente dentro de su InputMethodService . Por ejemplo:

 public class InputMethodServiceSample extends InputMethodService { private Tracker mTracker; /** * Gets the default {@link Tracker} for this {@link Application}. * @return tracker */ synchronized public Tracker getDefaultTracker() { if (mTracker == null) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG mTracker = analytics.newTracker(R.xml.global_tracker); } return mTracker; } } 

Entonces usted puede utilizar los métodos getDefaultTracker en cada método de su servicio.

  • ¿Cómo configuro una imagen de fondo para cada elemento de ListView en Android?
  • LinearLayout minHeight no funciona con weigth = "1"
  • Android Studio - Keystore fue manipulado o la contraseña fue incorrecta
  • Índice de fila de tabla en TableLayout
  • Plugin de Android Emulator no funciona en Jenkins
  • ¿Hay alguna manera de determinar en Android si se ha creado / visualizado la vista de contenido de una actividad?
  • Utilizando una casilla de verificación con un enfoque en blanco falso, impide que los clics de vista de lista
  • ¿Cómo afectan las recientes vulnerabilidades de java a Android y la programación?
  • Error en la versión 6.0 de Android 6.0: EACCES (Permiso denegado)
  • ¿Cómo utilizar las variables estáticas de manera eficiente?
  • ¿Por qué mi fuente de SDK de Android no está completa?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.