7

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つを選択するように求めるダイアログが表示されます.

TTS を選択

ユーザーが Samsung を選択した場合は完璧に動作しますが、ユーザーが Google を選択した場合は、[設定] --> [言語と入力] --> [テキスト読み上げの出力] --> [Google テキスト読み上げエンジン] --> [設定] に移動します。 -> 音声データをインストールすると、次のようになります。 インストールされている TTS 言語

だから、私は3つの質問/問題があります:

  1. 質問せずにプログラムで強制的に Samsung TTS を使用する方法はありますか?

  2. 私のデバイスはスペイン製ですが、言語を英語に変更すると、これは TTS 言語の Google リストに表示されず、追加する方法が見つかりません (スクリーンショット #2 を参照)。

  3. 言語をスペイン語に変更すると、この言語がデバイスにインストールされるはずですが (スクリーンショット #2 を参照)、何らかの理由で TTSresultCodeLANG_NOT_SUPPORTED (-2).

実は、これを書いている今、私は奇妙なことを発見しました。

Samsung TTS を選択すると、「動作」します ( resultCode= CHECK_VOICE_DATA_PASS (1)) が、「音声」は設定によって異なります (スクリーンショット #3 を参照)。 TTS 設定

Samsung を選択すると、[設定] --> [言語と入力] --> [テキスト読み上げの出力] で選択した内容に応じて、Samsung TTS または Google TTS が使用されます。

そのため、Samsung TTS を選択しても Google TTS を使用できますが、Google TTS を直接選択すると失敗します (スクリーンショット #1 を参照)。

誰かが私が間違っていることを説明できますか?

ご協力いただきありがとうございます。

4

1 に答える 1