Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c36bd07e authored by Maryam Garrett's avatar Maryam Garrett
Browse files

Move LoggingEvents.java to android-common & add UserHappiness

The LoggingEvents move will allow Gmail, Voice Search and other apps to
access the LoggingEvents needed. This file will replace
packages/inputmethods/LatinIMEsrc/com/android/inputmethod/voice/LoggingEvents.java
vendor/google/apps/VoiceSearch/apps/VoiceSearch/src/com/google/android/voicesearch/logging/LoggingEvents.java

In addition to moving the file, I have added 3 new fields:
TIMESTAMP, IME_TEXT_ACCEPTED, CALLING_APP_NAME. I needed to
create CALLING_APP_NAME b/c I can't re-use EXTRA_APP_NAME
because that is reserved for one of two values: voice
search or voice IME.

I added another file to android-common: UserHappinessSignals
This can be imported by different applications to broadcast
various user happiness metrics. It is currently used by Gmail's
CompseActivity.java to indicate that a user "accepted" the IME
text when they pressed the send button.

Change-Id: Ia859140facb7fb66a12706735d5132ba9eaa5ea0
parent 0f5bcea6
Loading
Loading
Loading
Loading
+133 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * 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.android.common.speech;

import android.content.Intent;
import android.content.Context;

/**
 * Logging event constants used for Voice Search and VoiceIME. These are the
 * keys and values of extras to be specified in logging broadcast intents.
 * This class is used by clients of the android.speech APIs to log how the
 * user interacts with the IME settings and speech recognition result.
 */
public class LoggingEvents {
    // The name of the broadcast intent for logging.
    public static final String ACTION_LOG_EVENT = "com.android.common.speech.LOG_EVENT";

    // The extra key used for the name of the app being logged.
    public static final String EXTRA_APP_NAME = "app_name";

    // The extra key used for the name of the app issuing the VoiceSearch
    // or VoiceIME request
    public static final String EXTRA_CALLING_APP_NAME = "";

    // The extra key used for the event value. The possible event values depend
    // on the app being logged for, and are defined in the subclasses below.
    public static final String EXTRA_EVENT = "extra_event";

    // The extra key used to log the time in milliseconds at which the EXTRA_EVENT
    // occurred in the client.
    public static final String EXTRA_TIMESTAMP = "timestamp";

    // The extra key used (with a boolean value of 'true') as a way to trigger a
    // flush of the log events to the server.
    public static final String EXTRA_FLUSH = "flush";

    /**
     * Logging event constants for voice search. Below are the extra values for
     * {@link LoggingEvents#EXTRA_EVENT}, clustered with keys to additional
     * extras for some events that need to be included as additional fields in
     * the event. Note that this is not representative of *all* voice search
     * events - only the ones that need to be reported from outside the voice
     * search app, such as from Browser.
     */
    public class VoiceSearch {
        // The app name to be used for logging VoiceSearch events.
        public static final String APP_NAME = "googlemobile";

        public static final int RETRY = 0;

        public static final int N_BEST_REVEAL = 1;

        public static final int N_BEST_CHOOSE = 2;
        public static final String EXTRA_N_BEST_CHOOSE_INDEX = "index";  // value should be int

        public static final int QUERY_UPDATED = 3;
        public static final String EXTRA_QUERY_UPDATED_VALUE = "value";  // value should be String
    }

    /**
     * Logging event constants for VoiceIME. Below are the extra values for
     * {@link LoggingEvents#EXTRA_EVENT}, clustered with keys to additional
     * extras for some events that need to be included as additional fields in
     * the event.
     */
    public class VoiceIme {
        // The app name to be used for logging VoiceIME events.
        public static final String APP_NAME = "voiceime";

        public static final int KEYBOARD_WARNING_DIALOG_SHOWN = 0;

        public static final int KEYBOARD_WARNING_DIALOG_DISMISSED = 1;

        public static final int KEYBOARD_WARNING_DIALOG_OK = 2;

        public static final int KEYBOARD_WARNING_DIALOG_CANCEL = 3;

        public static final int SETTINGS_WARNING_DIALOG_SHOWN = 4;

        public static final int SETTINGS_WARNING_DIALOG_DISMISSED = 5;

        public static final int SETTINGS_WARNING_DIALOG_OK = 6;

        public static final int SETTINGS_WARNING_DIALOG_CANCEL = 7;

        public static final int SWIPE_HINT_DISPLAYED = 8;

        public static final int PUNCTUATION_HINT_DISPLAYED = 9;

        public static final int CANCEL_DURING_LISTENING = 10;

        public static final int CANCEL_DURING_WORKING = 11;

        public static final int CANCEL_DURING_ERROR = 12;

        public static final int ERROR = 13;
        public static final String EXTRA_ERROR_CODE = "code";  // value should be int

        public static final int START = 14;
        public static final String EXTRA_START_LOCALE = "locale";  // value should be String
        public static final String EXTRA_START_SWIPE = "swipe";  // value should be boolean

        public static final int VOICE_INPUT_DELIVERED = 15;

        public static final int N_BEST_CHOOSE = 16;
        public static final String EXTRA_N_BEST_CHOOSE_INDEX = "index";  // value should be int

        public static final int TEXT_MODIFIED = 17;

        public static final int INPUT_ENDED = 18;

        public static final int VOICE_INPUT_SETTING_ENABLED = 19;

        public static final int VOICE_INPUT_SETTING_DISABLED = 20;

        public static final int IME_TEXT_ACCEPTED = 21;
    }

}
+45 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * 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.android.common.userhappiness;

import android.content.Intent;
import android.content.Context;
import com.android.common.speech.LoggingEvents;

/**
 * Metrics for User Happiness are recorded here. Each app can define when to
 * call these User Happiness metrics.
 */
public class UserHappinessSignals {

    /**
     *  Log when a user "accepted" IME text. Each application can define what
     *  it means to "accept" text. In the case of Gmail, pressing the "Send"
     *  button indicates text acceptance. We broadcast this information to
     *  VoiceSearch LoggingEvents and use it to aggregate VoiceIME Happiness Metrics
     */
    public static void userAcceptedImeText(Context context) {
        // Create a Voice IME Logging intent.
        Intent i = new Intent(LoggingEvents.ACTION_LOG_EVENT);
        i.putExtra(LoggingEvents.EXTRA_APP_NAME, LoggingEvents.VoiceIme.APP_NAME);
        i.putExtra(LoggingEvents.EXTRA_EVENT, LoggingEvents.VoiceIme.IME_TEXT_ACCEPTED);
        i.putExtra(LoggingEvents.EXTRA_CALLING_APP_NAME, context.getPackageName());
        i.putExtra(LoggingEvents.EXTRA_TIMESTAMP, System.currentTimeMillis());
        context.sendBroadcast(i);
    }

}