Autore Topic: Identificare i codici di errori restituiti da un'attività con onActivityResult()  (Letto 625 volte)

epsilon

  • Visitatore
Ciao a tutti!
Sto studiando come funzionano le classi per il riconoscimento vocale (il cosiddetto speech to text) e seguendo le istruzioni disponibili su questa pagina del sito ufficiale ho creato una semplice applicazione su cui sto testando le varie funzionalità disponibili.

Fondamentalmente, l'applicazione che ho creato è molto simile a questo esempio (dopotutto mi sono basato su questo esempio): quando l'utente fa clic sul pulsante, viene avviato il sistema di riconoscimento vocale, cioè viene invocato il metodo startVoiceRecognitionActivity(). L'ultima istruzione di questo metodo avvia un'attività di riconoscimento vocale... poi quando tale attività termina, questa invoca il metodo onActivityResult(...).

Codice (Java): [Seleziona]
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
            ArrayList<String> matches = data.getStringArrayListExtra(
                    RecognizerIntent.EXTRA_RESULTS);
            mList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                    matches));
        }

        super.onActivityResult(requestCode, resultCode, data);
    }

Dentro classe RecognizerIntent sono presenti alcune costanti che consentono di impostare delle opzioni di elaborazione aggiuntive o che permettono di accedere ai risultati del riconoscimento vocale. Ma ci sono anche cinque costanti, ognuna delle quali contiene un codice che rappresenta uno specifico errore...

Mi chiedo, un eventuale errore dove dovrebbe essere restituito?
Dentro il suddetto metodo onActivityResult()? Se sì, tramite l'argomento resultCode?
Ho fatto alcune prove: facendo dei semplici rumori, il riconoscitore vocale visualizza un errore perché non trova parole/frasi corrispondenti, però una volta che visualizza l'errore, devo per forza fare clic su Annulla, ed ecco che il resultCode risulta uguale a Activity.RESULT_CANCELED.

E' possibile testare in qualche modo le occasioni in cui si verificano questi cinque errori?

Grazie in anticipo per l'eventuale supporto!

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Semplicemente usi resultCode == RESULT_OK come condizione principale oppure metti un else cosi se il resultCode  è diverso da RESULT_OK significa che non c'è stato riconoscimento o l' utente ha premuto back o annulla.
Io gestirei l' errore in generale non differenzierei... nel senso che scriverei.. "Riconoscimento non effettuato"

La domanda stupida è quella che non si fa