TTSを使用するAndroid用アプリを開発しています。TTS エンジンがインストールされているかどうかを確認するスプラッシュ スクリーンを作成しました。インストールされていない場合は、Google Play に移動してダウンロードします。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
...
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
...
if (requestCode == PersonalTextToSpeech.MY_DATA_CHECK_CODE)
{
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS)
{
mTts = new TextToSpeech(context, this);
} else
{
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
context.startActivity(installIntent);
}
}
}
2.2 および 2.3.x OS を搭載した Samsung デバイスでは問題なく動作していました。必要に応じてGoogle Playに移動しますが、デフォルトで2つのTTS(SamsungとGoogle)がインストールされているSamsung Galaxy S3(4.1.1)で試したので、1つを選択するように求めるダイアログが表示されます.
ユーザーが Samsung を選択した場合は完璧に動作しますが、ユーザーが Google を選択した場合は、[設定] --> [言語と入力] --> [テキスト読み上げの出力] --> [Google テキスト読み上げエンジン] --> [設定] に移動します。 -> 音声データをインストールすると、次のようになります。
だから、私は3つの質問/問題があります:
- 質問せずにプログラムで強制的に Samsung TTS を使用する方法はありますか?
- 私のデバイスはスペイン製ですが、言語を英語に変更すると、これは TTS 言語の Google リストに表示されず、追加する方法が見つかりません (スクリーンショット #2 を参照)。
- 言語をスペイン語に変更すると、この言語がデバイスにインストールされるはずですが (スクリーンショット #2 を参照)、何らかの理由で TTS
resultCode
がLANG_NOT_SUPPORTED (-2)
.
実は、これを書いている今、私は奇妙なことを発見しました。
Samsung TTS を選択すると、「動作」します ( resultCode
= CHECK_VOICE_DATA_PASS (1)
) が、「音声」は設定によって異なります (スクリーンショット #3 を参照)。
Samsung を選択すると、[設定] --> [言語と入力] --> [テキスト読み上げの出力] で選択した内容に応じて、Samsung TTS または Google TTS が使用されます。
そのため、Samsung TTS を選択しても Google TTS を使用できますが、Google TTS を直接選択すると失敗します (スクリーンショット #1 を参照)。
誰かが私が間違っていることを説明できますか?
ご協力いただきありがとうございます。