2012-03-01 15 views
0

ユーザーには、英語やフランス語などの言語を選択するオプションがあります。ロケールをTTSエンジンに動的に設定する方法は?

アプリケーションはアクティビティと1つのバックグラウンドサービスを持ちます。そのため、アプリケーションが起動するとサービスが開始され、TTSエンジンはサービスの英語(onInit()メソッド)としてデフォルト言語で初期化されます。その特定のアクティビティが開始されるときに、ユーザーが設定する言語を設定する必要があります。

したがって、実行時にTTSエンジンで選択した言語ロケールを設定するにはどうすればよいですか?

私が観察したのは、その時点でサービスが開始されるのは、TTSエンジンだけがonInit()メソッド内のデフォルト言語で初期化され、インスタンスのアクティビティは利用できないため、言語の詳細が設定されていないため、私が直面している実際の問題は、onTitle()メソッドの外でmTts.setLanguage(Locale.FRENCH)を使用することができないため、TTSエンジンのロケールを変更する方法(ユーザがアクティビティから言語を選択したとき)あなたはこれをTTSの変化を反映しないものと呼んでいます。

この問題を解決するために私を助けてください。

答えて

0

私は、Android開発者のブログで、このブログの記事を見つけました:

彼らは述べる

http://android-developers.blogspot.com/2009/09/introduction-to-text-to-speech-in.html

:言語をロード

は、例えば呼び出すのと同じくらい簡単です:

MTTS。 setLanguage(Locale.US);

"US"という国で使用されている言語を読み込み、英語に設定します。

私はJavaでTTSアプリケーションをプログラミングする経験はありませんが、TTSエンジンを構築または初期化する前に、ユーザーに優先言語の入力を促すことができます。このプロンプトを使用すると、使用している言語パックを指定する値をonInit()メソッドに渡すことができます。

ユーザが言語を変更したときにTTSエンジンを新しい言語に再初期化できないような理由はありますか?

この回答が役に立ちそうです。あなたのプロジェクトで最高の運があります。

+0

onInitはサービスが初めて開始されたときに呼び出されるコールバックメソッドで、アンドロイドシステムで処理されるため、再度呼び出すことはできません。しかし、ええsetLanguageメソッドは、この問題を解決するのに役立ちます。あなたの助けに感謝します。 – piks

関連する問題