私は、ユーザーが言語を選択したり、男性または女性の声を選択することができる音声合成アプリケーションを使用しています。問題は、言語ごとに男性と女性の声を呼び出すために使用されるさまざまな文字列がありますが、私の好みでは2つのオプション(男性と女性)しかありません。Androidでリストの設定を使用する
<string-array name="Language">
<item>English (US)</item>
<item>English (UK)</item>
<item>French (France)</item>
<item>Spanish (Spain)</item>
<item>Italian</item>
</string-array>
<string-array name="languageAlias">
<item>"en-US"</item>
<item>"en-GB"</item>
<item>"fr-FR"</item>
<item>"es-ES"</item>
<item>"it-IT"</item>
</string-array>
<string-array name="Voice">
<item>Male</item>
<item>Female</item>
</string-array>
<string-array name="VoiceAlias">
<item>"usenglishmale"</item>
<item>"usenglishfemale"</item>
<item>"ukenglishmale"</item>
<item>"ukenglishfemale"</item>
<item>"eurfrenchmale"</item>
<item>"eurfrenchfemale"</item>
<item>"eurspanishmale"</item>
<item>"eurspanishfemale"</item>
<item>"euritalianmale"</item>
<item>"euritalianfemale"</item>
</string-array>
私は、選択した言語に応じて、関連するオスとメスのvoiceAliasを参照する方法を見つけようとしています。ここでこれを行うことは可能ですか、または選択した言語に応じてvoiceAlias配列の値を変更するコードを記述する必要がありますか?事前に
おかげ
ありがとう、私はアプローチが好きです。しかし、このコード行は何をしていますか? voiceAlias [(2 * a)+ genderData] – Amanni
aの値はforループで定義され、languageAlias内のlanguageDataのインデックスを表します。ループはlanguageDataの値を見つけるまでlanguageAliasを循環します。 voiceAlias内に音声がペアで存在するため、aの値には2が乗算されます。これにgenderDataが追加されます。ユーザーが男性を選択した場合、0が追加され、言語ペアの最初のオプションが使用されます。女性の場合は1が加算されます。 – gobernador
ドキュメントを少し見て、 'ListPreference'が文字列を永続化したいように見えます。これが当てはまる場合は、 'genderData'の宣言を' Integer.parseInt(shareprefs.getString ...) 'で囲みます。 – gobernador