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.

  • En RxJava, cómo reintentar / reanudar en caso de error, en lugar de completar el observable
  • Android rxJava Manejo de errores con retroadaptación
  • TextView se bloquea al configurar texto
  • ¿Cómo usar esta palabra clave en un método estático en java?
  • Android - convertir la cadena de certificados pkcs12 al objeto de certificado x509 para bks keystore
  • Dependencias de Gradle: compilar el proyecto por ruta relativa
  • Uploader de archivos Android con php de servidor
  • Fije una imagen de la galería para el fondo del teléfono de escritorio (androide-java)
  • La vinculación de datos de Android pasa los argumentos al método onClick
  • Verificación de firma de Android
  • Java.IO.ISerializable Xamarin
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.