/*
 * Copyright (C) 2013 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 android.speech.tts;

import android.text.TextUtils;

Writes data about a given speech synthesis request to the event logs. The data that is logged includes the calling app, length of the utterance, speech rate / pitch, the latency, and overall time taken.
/** * Writes data about a given speech synthesis request to the event logs. The data that is logged * includes the calling app, length of the utterance, speech rate / pitch, the latency, and overall * time taken. */
class EventLogger extends AbstractEventLogger { private final SynthesisRequest mRequest; EventLogger(SynthesisRequest request, int callerUid, int callerPid, String serviceApp) { super(callerUid, callerPid, serviceApp); mRequest = request; } @Override protected void logFailure(int statusCode) { // We don't report stopped syntheses because their overall // total time spent will be inaccurate (will not correlate with // the length of the utterance). if (statusCode != TextToSpeech.STOPPED) { EventLogTags.writeTtsSpeakFailure(mServiceApp, mCallerUid, mCallerPid, getUtteranceLength(), getLocaleString(), mRequest.getSpeechRate(), mRequest.getPitch()); } } @Override protected void logSuccess(long audioLatency, long engineLatency, long engineTotal) { EventLogTags.writeTtsSpeakSuccess(mServiceApp, mCallerUid, mCallerPid, getUtteranceLength(), getLocaleString(), mRequest.getSpeechRate(), mRequest.getPitch(), engineLatency, engineTotal, audioLatency); }
Returns:the length of the utterance for the given synthesis, 0 if the utterance was null.
/** * @return the length of the utterance for the given synthesis, 0 * if the utterance was {@code null}. */
private int getUtteranceLength() { final String utterance = mRequest.getText(); return utterance == null ? 0 : utterance.length(); }
Returns a formatted locale string from the synthesis params of the form lang-country-variant.
/** * Returns a formatted locale string from the synthesis params of the * form lang-country-variant. */
private String getLocaleString() { StringBuilder sb = new StringBuilder(mRequest.getLanguage()); if (!TextUtils.isEmpty(mRequest.getCountry())) { sb.append('-'); sb.append(mRequest.getCountry()); if (!TextUtils.isEmpty(mRequest.getVariant())) { sb.append('-'); sb.append(mRequest.getVariant()); } } return sb.toString(); } }