私はAndroidのTextToSpeechクラスを使用しています。すべて正常に動作しています。しかし、デフォルトではインストールされていませんが、TTSエンジンでサポートされている言語/ロケールがあり、失われた音声データの状態を取得することはできません。Android TTSで、音声データが欠落/ダウンロードされていないサポートされているロケールがチェックされています
インターネットでは、音声データがダウンロードされていない新しいロケールにsetLanguageを設定しようとすると、単に音声データをダウンロードして通話方法を正常/正常に実行します。
ただし、インターネットを使用していない場合、音声データがダウンロードされていない新しいロケールにsetLanguageを設定しようとすると、音声データをダウンロードしようとします。しかし、インターネットがない場合は、選択されたロケールの「言語と入力」の下の「TTS音声データ」設定画面に進捗なしで「ダウンロード中」と表示されます。そして、音声データがダウンロードされていないので、speakメソッドは機能しません。これが起こると、TTSのメソッドsetLanguage/isLanguageAvailableは私にこの状態を取得するためにLANG_MISSING_DATAを返しますが、単にLANG_COUNTRY_AVAILABLEを返します。
選択されているロケールの音声データがダウンロード/欠落していないことを検出し、トーストメッセージまたは直接的なユーザーにダウンロードされたことを検出できるようにしたいと考えています。私は、このoneのようにisLanguageAvailableを使用することを提案するいくつかの投稿を見てきました。私もandroid documentationを見て、isLanguageAvailableの戻り値は、LANG_MISSING_DATAで失われた音声データの状態を取得する必要があるようです。
また、私がリンクしているAndroidドキュメントに示唆されているように、欠落しているデータをチェックする別の方法として、ACTION_CHECK_TTS_DATAでインテントを送信しようとしました。しかし、resultCodeは、音声データが欠落している(CHECK_VOICE_DATA_FAIL)とキャプチャ/表示しなかったが、代わりにCHECK_VOICE_DATA_PASSを返す。
この場合、音声データが失われた状態で、使用可能/サポートされている言語/ロケールの状態をどのようにキャプチャする必要がありますか?また、CHECK_VOICE_DATA_PASSとLANG_MISSING_DATAが返される値でない理由も不思議です。音声データが欠落している場合、これらの値を返すべきではありませんか?ありがとう! 以下は、音声データがダウンロードされていないロケールでsetLanguageおよびisLanguageAvailableを使用しようとするときの戻り値です(0および1はログに表示されるメソッドの戻り値、-1は欠落に対応するものです)。音声データ):
ありがとうございました!しかし、それは私が探していたものではありません。 TTSインスタンスを使用して、エンジンによってサポートされているサポートされているすべての言語をより効果的に取得することさえできます。とにかく、あなたの入力に感謝! –