2012-08-24 22 views
7

Używam usługi rozpoznawania mowy Android z mojej aplikacji.Czy usługa rozpoznawania mowy Android jest zajęta?

Okazuje się, że gdy dwaj klienci próbują wysyłać żądania w tym samym czasie (powiedzmy, użytkownik rozpoczął jedno wyszukiwanie głosowe z aplikacji, a następnie przełączył się na inną aplikację, gdy wyszukiwanie jest nadal aktywne, i rozpoczęło kolejne wyszukiwanie), usługa przestaje działać.

Czy istnieje sposób sprawdzenia, czy trwa sesja rozpoznawania głosu, aby odmówić rozpoczęcia innej?

Odpowiedz

1

Należy prawdopodobnie zatrzymując ERROR_RECOGNIZER_BUSY w przewodnika onError:

@Override 
public void onError(int error) { 
    switch (error) { 
    case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: 
     // do something reasonable 
    … 
    } 
} 

Jesteś najprawdopodobniej (? Tylko) będzie otrzymywać, że na żądanie, aby rozpocząć odtwarzanie; niestety, nie jestem świadomy żadnego sposobu na przetestowanie tego stanu bez próby (np. nie sądzę, że możesz wstępnie wykryć, że inny słuchacz procesu jest aktywny, aby usunąć przycisk mikrofonu)

(Po zatrzymaniu słuchania, " d tylko otrzymasz ten błąd, jeśli próbowałeś jakoś zabić słuchacza innego procesu.)

0

Otrzymałem ten błąd (ERROR_RECOGNIZER_BUSY) i dowiedziałem się, że w mojej konfiguracji nie było pakietu. Właśnie dodałem tę linię i działa teraz:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
... 
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, context.getPackageName()); 
Powiązane problemy