Ho un'applicazione di sintesi vocale in cui l'utente può selezionare una lingua e selezionare anche una voce maschile o femminile. Il problema è che per ogni lingua ci sono diverse stringhe usate per chiamare la voce maschile e femminile, ma nella mia preferenza ho solo due opzioni (maschio e femmina).Utilizzo della preferenza elenco in 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>
Sto cercando di trovare un modo per fare riferimento solo alla voce maschile e femminile pertinentiAlias in base alla lingua selezionata. È possibile farlo qui o devo scrivere un codice che modifichi i valori della matrice voiceAlias in base alla lingua selezionata?
Grazie in anticipo
Grazie, mi piace l'approccio. Tuttavia, cosa fa questa linea di codice? voiceAlias [(2 * a) + genderData] – Amanni
Il valore di a è definito nel ciclo for e rappresenta l'indice del linguaggio Dati all'interno del linguaggioAlias. Il ciclo scorre attraverso languageAlias fino a quando non trova il valore di languageData. Il valore di a viene moltiplicato per due perché le voci esistono in coppia all'interno di voiceAlias. genderData è aggiunto a questo. Se l'utente seleziona il maschio, viene aggiunto 0 e viene presa la prima opzione della coppia di lingue. Se femmina, viene aggiunto 1. – gobernador
dopo aver osservato un po 'più vicino i documenti, sembra che 'ListPreference' vuole mantenere una stringa. Se trovi che questo è il caso, basta avvolgere la dichiarazione di 'genderData' con' Integer.parseInt (shareprefs.getString ...) ' – gobernador