Java: elenchiamo le tastiere presenti sul nostro dispositivo

Roberto Orgiu
Roberto Orgiu
Java: elenchiamo le tastiere presenti sul nostro dispositivo

Dopo una lunga pausa, torniamo a proporre i nostri tutorial di programmazione su Android, andando a scoprire, grazie all'aiuto del buon Ne0fhyk, senior member di XDA, come elencare le tastiere presenti sul nostro dispositivo Android.

Iniziamo quindi dichiarando un oggetto di tipo InputMethodManager, che ci fornirà l'elenco delle tastiere installate sul nostro dispositivo, dopo aver chiesto al nostro droide di fornirci il relativo servizio prelevato dal Context dell'applicazione.

HashMap<String,String> kbMap = new HashMap<String, String>();

InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

A questo punto, possiamo dichiarare una lista di oggetti InputMethodInfo in cui riverseremo le informazioni che preleviamo dall'oggetto che abbiamo dichiarato poche righe sopra.

List<InputMethodInfo> listKb = imm.getInputMethodList();

int listSize = listKb.size();

Ora che abbiamo la lista delle tastiere virtuali installate, dobbiamo collegare l'id che ci è appena stato fornito con l'etichetta che leggiamo quando andiamo ad impostare le nostre tastiere alternative.

 Per fare ciò, dobbiamo innanzitutto istanziare il PackageManager, che si occuperà di fornirci la corrispondenza che ci serve.

PackageManager pm = mContext.getPackageManager();

Ora siamo pronti per passare al parsing vero e proprio: dichiariamo un oggetto di tipo InputMethodInfo (lo stesso degli elementi della lista che abbiamo riempito poche righe fa) e per ogni elemento della lista inseriamo nella nostra HashMap sia l'id, che usiamo come chiave, sia l'etichetta che ci restituisce l'istanza del PackageManager, che utilizzeremo invece come valore.

InputMethodInfo imi;

for(int i = 0; i < listSize; i++){

     imi = listKb.get(i);

     kbMap.put(imi.getId().toString(), imi.loadLabel(pm).toString()); 

}

Nello specifico, con la get() otteniamo l'oggetto InputMethodInfo nella i-esima posizione, dopodiché tramite il metodo getId() otteniamo l'id univoco, mentre con il metodo loadLabel, cui passiamo in ingresso l'istanza del PackageManager, carichiamo l'etichetta della tastiera stessa. Questi due dati ci arrivano come CharSequence, per cui una chiamata al toString() è consigliabile.

Le due stringhe le inseriamo poi nella nostra HashMap, pronte per essere utilizzate nel semplice layout che possiamo vedere in figura.

Come per gli altri tutorial, anche i sorgenti relativi a questo articolo sono nell'apposito thread del nostro forum, mentre se volete provare solamente l'APK, potete tranquillamente installarlo dal Play Store, tramite il box di download qui sotto.

[app]it.example.keyboard.listing[/app]