am b26e685d: Merge change 3528 into donut

Merge commit 'b26e685d04aa010e10a99729ae573940715f9970'

* commit 'b26e685d04aa010e10a99729ae573940715f9970':
  Simplify the TTS for Donut release
This commit is contained in:
Android (Google) Code Review
2009-06-09 10:31:42 -07:00
committed by The Android Open Source Project
2 changed files with 76 additions and 127 deletions

View File

@@ -1,59 +1,57 @@
/*
* Copyright (C) 2009 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.tts;
import android.tts.ITtsCallback;
import android.content.Intent;
/**
* AIDL for the TTS Service
* ITts.java is autogenerated from this.
*
* {@hide}
*/
interface ITts {
void setEngine(in String engineName, in String[] requestedLanguages, in int strictness);
void setEngineWithIntent(in Intent engineIntent);
void setSpeechRate(in int speechRate);
void speak(in String text, in int queueMode, in String[] params);
boolean isSpeaking();
void stop();
void addSpeech(in String text, in String packageName, in int resId);
void addSpeechFile(in String text, in String filename);
void setLanguage(in String language);
boolean synthesizeToFile(in String text, in String[] params, in String outputDirectory);
void playEarcon(in String earcon, in int queueMode, in String[] params);
void addEarcon(in String earcon, in String packageName, in int resId);
void addEarconFile(in String earcon, in String filename);
void registerCallback(ITtsCallback cb);
void unregisterCallback(ITtsCallback cb);
}
/*
* Copyright (C) 2009 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.tts;
import android.tts.ITtsCallback;
import android.content.Intent;
/**
* AIDL for the TTS Service
* ITts.java is autogenerated from this.
*
* {@hide}
*/
interface ITts {
void setSpeechRate(in int speechRate);
void speak(in String text, in int queueMode, in String[] params);
boolean isSpeaking();
void stop();
void addSpeech(in String text, in String packageName, in int resId);
void addSpeechFile(in String text, in String filename);
void setLanguage(in String language);
boolean synthesizeToFile(in String text, in String[] params, in String outputDirectory);
void playEarcon(in String earcon, in int queueMode, in String[] params);
void addEarcon(in String earcon, in String packageName, in int resId);
void addEarconFile(in String earcon, in String filename);
void registerCallback(ITtsCallback cb);
void unregisterCallback(ITtsCallback cb);
void playSilence(in long duration, in int queueMode, in String[] params);
}

View File

@@ -22,7 +22,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
@@ -106,7 +105,6 @@ public class TtsService extends Service implements OnCompletionListener {
private final ReentrantLock speechQueueLock = new ReentrantLock();
private final ReentrantLock synthesizerLock = new ReentrantLock();
// TODO support multiple SpeechSynthesis objects
private SynthProxy nativeSynth;
@Override
@@ -114,15 +112,21 @@ public class TtsService extends Service implements OnCompletionListener {
super.onCreate();
Log.i("TTS", "TTS starting");
// TODO: Make this work when the settings are done in the main Settings
// app.
prefs = PreferenceManager.getDefaultSharedPreferences(this);
// TODO: This should be changed to work by requesting the path
// from the default engine.
nativeSynth = new SynthProxy(prefs.getString("engine_pref", ""));
PackageManager pm = this.getPackageManager();
String soLibPath = "";
try {
soLibPath = pm.getApplicationInfo("com.svox.pico", 0).dataDir;
} catch (NameNotFoundException e) {
// This exception cannot actually happen as com.svox.pico is
// included with the system image.
e.printStackTrace();
}
soLibPath = soLibPath + "/lib/libttspico.so";
nativeSynth = new SynthProxy(soLibPath);
mSelf = this;
mIsSpeaking = false;
@@ -170,35 +174,6 @@ public class TtsService extends Service implements OnCompletionListener {
nativeSynth.setLanguage(lang);
}
private void setEngine(String engineName, String[] requestedLanguages,
int strictness) {
// TODO: Implement engine selection code here.
Intent engineIntent = new Intent(
"android.intent.action.START_TTS_ENGINE");
if (engineName != null) {
engineIntent.addCategory("android.intent.action.tts_engine."
+ engineName);
}
for (int i = 0; i < requestedLanguages.length; i++) {
engineIntent.addCategory("android.intent.action.tts_lang."
+ requestedLanguages[i]);
}
ResolveInfo[] enginesArray = new ResolveInfo[0];
PackageManager pm = getPackageManager();
enginesArray = pm.queryIntentActivities(engineIntent, 0).toArray(
enginesArray);
}
private void setEngine(Intent engineIntent) {
// TODO: Implement engine selection code here.
}
private int getEngineStatus() {
// TODO: Proposal - add a sanity check method that
// TTS engine plugins must implement.
return 0;
}
/**
* Adds a sound resource to the TTS.
*
@@ -436,8 +411,7 @@ public class TtsService extends Service implements OnCompletionListener {
if (sr == null) {
if (currentSpeechItem.mType == SpeechItem.SPEECH) {
// TODO: Split text up into smaller chunks before accepting
// them
// for processing.
// them for processing.
speakInternalOnly(currentSpeechItem.mText,
currentSpeechItem.mParams);
} else {
@@ -575,30 +549,6 @@ public class TtsService extends Service implements OnCompletionListener {
mCallbacks.unregister(cb);
}
/**
* Gives a hint about the type of engine that is preferred.
*
* @param selectedEngine
* The TTS engine that should be used
*/
public void setEngine(String engineName, String[] supportedLanguages,
int strictness) {
mSelf.setEngine(engineName, supportedLanguages, strictness);
}
/**
* Specifies exactly what the engine has to support. Will always be
* considered "strict"; can be used for implementing
* optional/experimental features that are not supported by all engines.
*
* @param engineIntent
* An intent that specifies exactly what the engine has to
* support.
*/
public void setEngineWithIntent(Intent engineIntent) {
mSelf.setEngine(engineIntent);
}
/**
* Speaks the given text using the specified queueing mode and
* parameters.
@@ -658,7 +608,6 @@ public class TtsService extends Service implements OnCompletionListener {
mSelf.playSilence(duration, queueMode, speakingParams);
}
/**
* Stops all speech output and removes any utterances still in the
* queue.
@@ -741,16 +690,18 @@ public class TtsService extends Service implements OnCompletionListener {
mSelf.setSpeechRate(speechRate);
}
// TODO: Fix comment about language
/**
* Sets the speech rate for the TTS. Note that this will only have an
* effect on synthesized speech; it will not affect pre-recorded speech.
*
* @param language
* The language to be used. The languages are specified by
* their IETF language tags as defined by BCP 47. This is the
* same standard used for the lang attribute in HTML. See:
* http://en.wikipedia.org/wiki/IETF_language_tag
* Language values are based on the Android conventions for
* localization as described in the Android platform
* documentation on internationalization. This implies that
* language data is specified in the format xx-rYY, where xx
* is a two letter ISO 639-1 language code in lowercase and
* rYY is a two letter ISO 3166-1-alpha-2 language code in
* uppercase preceded by a lowercase "r".
*/
public void setLanguage(String language) {
mSelf.setLanguage(language);