Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/speech/SpeechRecognizer#constants) \| [Methods](https://developer.android.com/reference/android/speech/SpeechRecognizer#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/speech/SpeechRecognizer#inhmethods)

# SpeechRecognizer

*** ** * ** ***


`
public


class
SpeechRecognizer
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.speech.SpeechRecognizer |

<br />

*** ** * ** ***

This class provides access to the speech recognition service. This service allows access to the
speech recognizer. Do not instantiate this class directly, instead, call
`https://developer.android.com/reference/android/speech/SpeechRecognizer#createSpeechRecognizer(android.content.Context)`. This class's methods must be
invoked only from the main application thread.

**Important:** the caller MUST invoke `https://developer.android.com/reference/android/speech/SpeechRecognizer#destroy()` on a
SpeechRecognizer object when it is no longer needed.

The implementation of this API is likely to stream audio to remote servers to perform speech
recognition. As such this API is not intended to be used for continuous recognition, which would
consume a significant amount of battery and bandwidth.

Please note that the application must have `https://developer.android.com/reference/android/Manifest.permission#RECORD_AUDIO`
permission to use this class.

## Summary

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#CONFIDENCE_SCORES` Key used to retrieve a float array from the `https://developer.android.com/reference/android/os/Bundle` passed to the `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and `https://developer.android.com/reference/android/speech/RecognitionListener#onPartialResults(android.os.Bundle)` methods. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#DETECTED_LANGUAGE` Key used to retrieve a `https://developer.android.com/reference/java/lang/String` representation of the IETF language tag (as defined by BCP 47, e.g., "en-US", "de-DE") of the detected language of the most recent audio chunk. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_AUDIO` Audio recording error. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_CANNOT_CHECK_SUPPORT` The service does not allow to check for support. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_CANNOT_LISTEN_TO_DOWNLOAD_EVENTS` The service does not support listening to model downloads events. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_CLIENT` Other client side errors. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_INSUFFICIENT_PERMISSIONS` Insufficient permissions |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_LANGUAGE_NOT_SUPPORTED` Requested language is not available to be used with the current recognizer. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_LANGUAGE_UNAVAILABLE` Requested language is supported, but not available currently (e.g. not downloaded yet). |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_NETWORK` Other network related errors. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_NETWORK_TIMEOUT` Network operation timed out. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_NO_MATCH` No recognition result matched. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_RECOGNIZER_BUSY` RecognitionService busy. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_SERVER` Server sends error status. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_SERVER_DISCONNECTED` Server has been disconnected, e.g. because the app has crashed. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_SPEECH_TIMEOUT` No speech input |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#ERROR_TOO_MANY_REQUESTS` Too many requests from the same client. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_DETECTION_CONFIDENCE_LEVEL` Key used to retrieve the level of confidence of the detected language of the most recent audio chunk, represented by an `int` value prefixed by `LANGUAGE_DETECTION_CONFIDENCE_LEVEL_`. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_DETECTION_CONFIDENCE_LEVEL_CONFIDENT` |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_DETECTION_CONFIDENCE_LEVEL_HIGHLY_CONFIDENT` |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_DETECTION_CONFIDENCE_LEVEL_NOT_CONFIDENT` |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_DETECTION_CONFIDENCE_LEVEL_UNKNOWN` |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_SWITCH_RESULT` Key used to retrieve the result of the language switch of the most recent audio chunk, represented by an `int` value prefixed by `LANGUAGE_SWITCH_`. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_SWITCH_RESULT_FAILED` Switch attempted and failed. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_SWITCH_RESULT_NOT_ATTEMPTED` Switch not attempted. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_SWITCH_RESULT_SKIPPED_NO_MODEL` Switch skipped because the language model is missing or the language is not allowlisted for auto switch. |
| `int` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#LANGUAGE_SWITCH_RESULT_SUCCEEDED` Switch attempted and succeeded. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#RECOGNITION_PARTS` Key used to receive an ArrayList\<`https://developer.android.com/reference/android/speech/RecognitionPart`\> object from the `https://developer.android.com/reference/android/os/Bundle` passed to the `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and `https://developer.android.com/reference/android/speech/RecognitionListener#onSegmentResults(android.os.Bundle)` methods. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#RESULTS_ALTERNATIVES` Key used to retrieve an ArrayList\<`https://developer.android.com/reference/android/speech/AlternativeSpans`\> from the `https://developer.android.com/reference/android/os/Bundle` passed to the `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and `https://developer.android.com/reference/android/speech/RecognitionListener#onPartialResults(android.os.Bundle)` methods. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#RESULTS_RECOGNITION` Key used to retrieve an `ArrayList<String>` from the `https://developer.android.com/reference/android/os/Bundle` passed to the `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and `https://developer.android.com/reference/android/speech/RecognitionListener#onPartialResults(android.os.Bundle)` methods. |
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/speech/SpeechRecognizer#TOP_LOCALE_ALTERNATIVES` Key used to retrieve an ArrayList\<`https://developer.android.com/reference/java/lang/String`\> containing representations of the IETF language tags (as defined by BCP 47, e.g., "en-US", "en-UK") denoting the alternative locales for the same language retrieved by the key `https://developer.android.com/reference/android/speech/SpeechRecognizer#DETECTED_LANGUAGE`. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#cancel()() ` Cancels the speech recognition. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#checkRecognitionSupport(android.content.Intent,%20java.util.concurrent.Executor,%20android.speech.RecognitionSupportCallback)(https://developer.android.com/reference/android/content/Intent recognizerIntent, https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/speech/RecognitionSupportCallback supportListener) ` Checks whether `recognizerIntent` is supported by `https://developer.android.com/reference/android/speech/SpeechRecognizer#startListening(android.content.Intent)`. |
| ` static https://developer.android.com/reference/android/speech/SpeechRecognizer` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#createOnDeviceSpeechRecognizer(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Factory method to create a new `SpeechRecognizer`. |
| ` static https://developer.android.com/reference/android/speech/SpeechRecognizer` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#createSpeechRecognizer(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Factory method to create a new `SpeechRecognizer`. |
| ` static https://developer.android.com/reference/android/speech/SpeechRecognizer` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#createSpeechRecognizer(android.content.Context,%20android.content.ComponentName)(https://developer.android.com/reference/android/content/Context context, https://developer.android.com/reference/android/content/ComponentName serviceComponent) ` Factory method to create a new `SpeechRecognizer`. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#destroy()() ` Destroys the `SpeechRecognizer` object. |
| ` static boolean` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#isOnDeviceRecognitionAvailable(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Checks whether an on-device speech recognition service is available on the system. |
| ` static boolean` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#isRecognitionAvailable(android.content.Context)(https://developer.android.com/reference/android/content/Context context) ` Checks whether a speech recognition service is available on the system. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)(https://developer.android.com/reference/android/speech/RecognitionListener listener) ` Sets the listener that will receive all the callbacks. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#startListening(android.content.Intent)(https://developer.android.com/reference/android/content/Intent recognizerIntent) ` Starts listening for speech. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#stopListening()() ` Stops listening for speech. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#triggerModelDownload(android.content.Intent)(https://developer.android.com/reference/android/content/Intent recognizerIntent) ` Attempts to download the support for the given `recognizerIntent`. |
| ` void` | ` https://developer.android.com/reference/android/speech/SpeechRecognizer#triggerModelDownload(android.content.Intent,%20java.util.concurrent.Executor,%20android.speech.ModelDownloadListener)(https://developer.android.com/reference/android/content/Intent recognizerIntent, https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/speech/ModelDownloadListener listener) ` Attempts to download the support for the given `recognizerIntent`. |

### Inherited methods

From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


## Constants

### CONFIDENCE_SCORES

Added in [API level 14](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String CONFIDENCE_SCORES
```

Key used to retrieve a float array from the `https://developer.android.com/reference/android/os/Bundle` passed to the
`https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and
`https://developer.android.com/reference/android/speech/RecognitionListener#onPartialResults(android.os.Bundle)` methods. The array should be
the same size as the ArrayList provided in `https://developer.android.com/reference/android/speech/SpeechRecognizer#RESULTS_RECOGNITION`, and should contain
values ranging from 0.0 to 1.0, or -1 to represent an unavailable confidence score.


Confidence values close to 1.0 indicate high confidence (the speech recognizer is confident
that the recognition result is correct), while values close to 0.0 indicate low confidence.


This value is optional and might not be provided.

<br />

Constant Value:

"confidence_scores"


### DETECTED_LANGUAGE

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String DETECTED_LANGUAGE
```

Key used to retrieve a `https://developer.android.com/reference/java/lang/String` representation of the IETF language tag (as defined by
BCP 47, e.g., "en-US", "de-DE") of the detected language of the most recent audio chunk.

This info is returned to the client in the `https://developer.android.com/reference/android/os/Bundle` passed to
`https://developer.android.com/reference/android/speech/RecognitionListener#onLanguageDetection(android.os.Bundle)` only if
`https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_ENABLE_LANGUAGE_DETECTION` is set. Additionally, if
`https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_LANGUAGE_DETECTION_ALLOWED_LANGUAGES` are listed,
the detected language is constrained to be one from the list.

<br />

Constant Value:

"detected_language"


### ERROR_AUDIO

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_AUDIO
```

Audio recording error.

<br />

Constant Value:

3
(0x00000003)


### ERROR_CANNOT_CHECK_SUPPORT

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_CANNOT_CHECK_SUPPORT
```

The service does not allow to check for support.

<br />

Constant Value:

14
(0x0000000e)


### ERROR_CANNOT_LISTEN_TO_DOWNLOAD_EVENTS

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_CANNOT_LISTEN_TO_DOWNLOAD_EVENTS
```

The service does not support listening to model downloads events.

<br />

Constant Value:

15
(0x0000000f)


### ERROR_CLIENT

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_CLIENT
```

Other client side errors.

<br />

Constant Value:

5
(0x00000005)


### ERROR_INSUFFICIENT_PERMISSIONS

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_INSUFFICIENT_PERMISSIONS
```

Insufficient permissions

<br />

Constant Value:

9
(0x00000009)


### ERROR_LANGUAGE_NOT_SUPPORTED

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_LANGUAGE_NOT_SUPPORTED
```

Requested language is not available to be used with the current recognizer.

<br />

Constant Value:

12
(0x0000000c)


### ERROR_LANGUAGE_UNAVAILABLE

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_LANGUAGE_UNAVAILABLE
```

Requested language is supported, but not available currently (e.g. not downloaded yet).

<br />

Constant Value:

13
(0x0000000d)


### ERROR_NETWORK

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_NETWORK
```

Other network related errors.

<br />

Constant Value:

2
(0x00000002)


### ERROR_NETWORK_TIMEOUT

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_NETWORK_TIMEOUT
```

Network operation timed out.

<br />

Constant Value:

1
(0x00000001)


### ERROR_NO_MATCH

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_NO_MATCH
```

No recognition result matched.

<br />

Constant Value:

7
(0x00000007)


### ERROR_RECOGNIZER_BUSY

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_RECOGNIZER_BUSY
```

RecognitionService busy.

<br />

Constant Value:

8
(0x00000008)


### ERROR_SERVER

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_SERVER
```

Server sends error status.

<br />

Constant Value:

4
(0x00000004)


### ERROR_SERVER_DISCONNECTED

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_SERVER_DISCONNECTED
```

Server has been disconnected, e.g. because the app has crashed.

<br />

Constant Value:

11
(0x0000000b)


### ERROR_SPEECH_TIMEOUT

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_SPEECH_TIMEOUT
```

No speech input

<br />

Constant Value:

6
(0x00000006)


### ERROR_TOO_MANY_REQUESTS

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ERROR_TOO_MANY_REQUESTS
```

Too many requests from the same client.

<br />

Constant Value:

10
(0x0000000a)


### LANGUAGE_DETECTION_CONFIDENCE_LEVEL

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String LANGUAGE_DETECTION_CONFIDENCE_LEVEL
```

Key used to retrieve the level of confidence of the detected language
of the most recent audio chunk,
represented by an `int` value prefixed by `LANGUAGE_DETECTION_CONFIDENCE_LEVEL_`.

This info is returned to the client in the `https://developer.android.com/reference/android/os/Bundle` passed to
`https://developer.android.com/reference/android/speech/RecognitionListener#onLanguageDetection(android.os.Bundle)` only if
`https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_ENABLE_LANGUAGE_DETECTION` is set.

<br />

Constant Value:

"language_detection_confidence_level"


### LANGUAGE_DETECTION_CONFIDENCE_LEVEL_CONFIDENT

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_DETECTION_CONFIDENCE_LEVEL_CONFIDENT
```

<br />

<br />

Constant Value:

2
(0x00000002)


### LANGUAGE_DETECTION_CONFIDENCE_LEVEL_HIGHLY_CONFIDENT

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_DETECTION_CONFIDENCE_LEVEL_HIGHLY_CONFIDENT
```

<br />

<br />

Constant Value:

3
(0x00000003)


### LANGUAGE_DETECTION_CONFIDENCE_LEVEL_NOT_CONFIDENT

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_DETECTION_CONFIDENCE_LEVEL_NOT_CONFIDENT
```

<br />

<br />

Constant Value:

1
(0x00000001)


### LANGUAGE_DETECTION_CONFIDENCE_LEVEL_UNKNOWN

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_DETECTION_CONFIDENCE_LEVEL_UNKNOWN
```

<br />

<br />

Constant Value:

0
(0x00000000)


### LANGUAGE_SWITCH_RESULT

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String LANGUAGE_SWITCH_RESULT
```

Key used to retrieve the result of the language switch of the most recent audio chunk,
represented by an `int` value prefixed by `LANGUAGE_SWITCH_`.

This info is returned to the client in the `https://developer.android.com/reference/android/os/Bundle` passed to the
`https://developer.android.com/reference/android/speech/RecognitionListener#onLanguageDetection(android.os.Bundle)` only if
`https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_ENABLE_LANGUAGE_SWITCH` is set.

<br />

Constant Value:

"language_switch_result"


### LANGUAGE_SWITCH_RESULT_FAILED

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_SWITCH_RESULT_FAILED
```

Switch attempted and failed.

<br />

Constant Value:

2
(0x00000002)


### LANGUAGE_SWITCH_RESULT_NOT_ATTEMPTED

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_SWITCH_RESULT_NOT_ATTEMPTED
```

Switch not attempted.

<br />

Constant Value:

0
(0x00000000)


### LANGUAGE_SWITCH_RESULT_SKIPPED_NO_MODEL

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_SWITCH_RESULT_SKIPPED_NO_MODEL
```

Switch skipped because the language model is missing
or the language is not allowlisted for auto switch.

<br />

Constant Value:

3
(0x00000003)


### LANGUAGE_SWITCH_RESULT_SUCCEEDED

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int LANGUAGE_SWITCH_RESULT_SUCCEEDED
```

Switch attempted and succeeded.

<br />

Constant Value:

1
(0x00000001)


### RECOGNITION_PARTS

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String RECOGNITION_PARTS
```

Key used to receive an ArrayList\<`https://developer.android.com/reference/android/speech/RecognitionPart`\> object from the
`https://developer.android.com/reference/android/os/Bundle` passed to the `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and
`https://developer.android.com/reference/android/speech/RecognitionListener#onSegmentResults(android.os.Bundle)` methods.

A single `https://developer.android.com/reference/android/speech/SpeechRecognizer` result is represented as a `https://developer.android.com/reference/java/lang/String`. Each word of
the resulting String, as well as any potential adjacent punctuation, is represented by a
`https://developer.android.com/reference/android/speech/RecognitionPart` item from the ArrayList retrieved by this key.

<br />

Constant Value:

"recognition_parts"


### RESULTS_ALTERNATIVES

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String RESULTS_ALTERNATIVES
```

Key used to retrieve an ArrayList\<`https://developer.android.com/reference/android/speech/AlternativeSpans`\> from the `https://developer.android.com/reference/android/os/Bundle`
passed to the `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and
`https://developer.android.com/reference/android/speech/RecognitionListener#onPartialResults(android.os.Bundle)` methods. The list should be the same
size as the ArrayList provided in `https://developer.android.com/reference/android/speech/SpeechRecognizer#RESULTS_RECOGNITION`.

A single `https://developer.android.com/reference/android/speech/SpeechRecognizer` result is represented as a `https://developer.android.com/reference/java/lang/String`. For a
specific span (substring) of the originally recognized result string the recognizer provides
a list of alternative hypotheses in the form of an `https://developer.android.com/reference/android/speech/AlternativeSpan` object.
Alternatives for different spans of a result string are listed in an `https://developer.android.com/reference/android/speech/AlternativeSpans`
object. Each item from the ArrayList retrieved by this key corresponds to a single result
string provided in `https://developer.android.com/reference/android/speech/SpeechRecognizer#RESULTS_RECOGNITION`.

This value is optional and might not be provided.

<br />

Constant Value:

"results_alternatives"


### RESULTS_RECOGNITION

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String RESULTS_RECOGNITION
```

Key used to retrieve an `ArrayList<String>` from the `https://developer.android.com/reference/android/os/Bundle` passed to the
`https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` and
`https://developer.android.com/reference/android/speech/RecognitionListener#onPartialResults(android.os.Bundle)` methods. These strings are the possible
recognition results, where the first element is the most likely candidate.

<br />

Constant Value:

"results_recognition"


### TOP_LOCALE_ALTERNATIVES

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final String TOP_LOCALE_ALTERNATIVES
```

Key used to retrieve an ArrayList\<`https://developer.android.com/reference/java/lang/String`\> containing representations of the
IETF language tags (as defined by BCP 47, e.g., "en-US", "en-UK") denoting the alternative
locales for the same language retrieved by the key `https://developer.android.com/reference/android/speech/SpeechRecognizer#DETECTED_LANGUAGE`.

This info is returned to the client in the `https://developer.android.com/reference/android/os/Bundle` passed to
`https://developer.android.com/reference/android/speech/RecognitionListener#onLanguageDetection(android.os.Bundle)` only if
`https://developer.android.com/reference/android/speech/RecognizerIntent#EXTRA_ENABLE_LANGUAGE_DETECTION` is set.

<br />

Constant Value:

"top_locale_alternatives"


## Public methods

### cancel

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void cancel ()
```

Cancels the speech recognition. Please note that
`https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)` should be called beforehand, otherwise
no notifications will be received.


This method must be called from the main thread of your app.

<br />

### checkRecognitionSupport

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void checkRecognitionSupport (Intent recognizerIntent, 
                Executor executor, 
                RecognitionSupportCallback supportListener)
```

Checks whether `recognizerIntent` is supported by
`https://developer.android.com/reference/android/speech/SpeechRecognizer#startListening(android.content.Intent)`.

<br />

| Parameters ||
|---|---|
| `recognizerIntent` | `Intent`: contains parameters for the recognition to be performed. The intent may also contain optional extras. See `https://developer.android.com/reference/android/speech/RecognizerIntent` for the list of supported extras, any unlisted extra might be ignored. This value cannot be `null`. <br /> |
| `executor` | `Executor`: This value cannot be `null`. Callback and listener events are dispatched through this `https://developer.android.com/reference/java/util/concurrent/Executor`, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use `https://developer.android.com/reference/android/content/Context#getMainExecutor()`. Otherwise, provide an `https://developer.android.com/reference/java/util/concurrent/Executor` that dispatches to an appropriate thread. <br /> |
| `supportListener` | `RecognitionSupportCallback`: the listener on which to receive the support query results. This value cannot be `null`. <br /> |

### createOnDeviceSpeechRecognizer

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static SpeechRecognizer createOnDeviceSpeechRecognizer (Context context)
```

Factory method to create a new `SpeechRecognizer`.

Please note that `https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)` should be called
before dispatching any command to the created `SpeechRecognizer`, otherwise no
notifications will be received.

**Important:** the caller MUST invoke `https://developer.android.com/reference/android/speech/SpeechRecognizer#destroy()` on a
SpeechRecognizer object when it is no longer needed.


This method must be called from the main thread of your app.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: in which to create `SpeechRecognizer` This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/speech/SpeechRecognizer` | a new on-device `SpeechRecognizer`. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | iff `https://developer.android.com/reference/android/speech/SpeechRecognizer#isOnDeviceRecognitionAvailable(android.content.Context)` is false |

### createSpeechRecognizer

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static SpeechRecognizer createSpeechRecognizer (Context context)
```

Factory method to create a new `SpeechRecognizer`. Please note that
`https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)` should be called before dispatching any
command to the created `SpeechRecognizer`, otherwise no notifications will be
received.

**Important:** the caller MUST invoke `https://developer.android.com/reference/android/speech/SpeechRecognizer#destroy()` on a
SpeechRecognizer object when it is no longer needed.

For apps targeting Android 11 (API level 30) interaction with a speech recognition
service requires element to be added to the manifest file:

    <queries>
      <intent>
        <action
           android:name="android.speech.RecognitionService" />
      </intent>
    </queries>

.   
This method must be called from the main thread of your app.

<br />

<br />

| Parameters ||
|---|---|
| `context` | `Context`: in which to create `SpeechRecognizer` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/speech/SpeechRecognizer` | a new `SpeechRecognizer` <br /> |

### createSpeechRecognizer

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static SpeechRecognizer createSpeechRecognizer (Context context, 
                ComponentName serviceComponent)
```

Factory method to create a new `SpeechRecognizer`. Please note that
`https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)` should be called before dispatching any
command to the created `SpeechRecognizer`, otherwise no notifications will be
received.
Use this version of the method to specify a specific service to direct this
`https://developer.android.com/reference/android/speech/SpeechRecognizer` to.

**Important:** the caller MUST invoke `https://developer.android.com/reference/android/speech/SpeechRecognizer#destroy()` on a
SpeechRecognizer object when it is no longer needed.

**Important** : before calling this method, please check via
`https://developer.android.com/reference/android/content/pm/PackageManager#queryIntentServices(android.content.Intent,%20int)` that `serviceComponent` actually exists and provides
`https://developer.android.com/reference/android/speech/RecognitionService#SERVICE_INTERFACE`. Normally you would not use this; call
`https://developer.android.com/reference/android/speech/SpeechRecognizer#createSpeechRecognizer(android.content.Context)` to use the system default recognition
service instead.

For apps targeting Android 11 (API level 30) interaction with a speech recognition
service requires element to be added to the manifest file:

    <queries>
      <intent>
        <action
           android:name="android.speech.RecognitionService" />
      </intent>
    </queries>

.   
This method must be called from the main thread of your app.

<br />

<br />

| Parameters ||
|---|---|
| `context` | `Context`: in which to create `SpeechRecognizer` <br /> |
| `serviceComponent` | `ComponentName`: the `https://developer.android.com/reference/android/content/ComponentName` of a specific service to direct this `SpeechRecognizer` to <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/speech/SpeechRecognizer` | a new `SpeechRecognizer` <br /> |

### destroy

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void destroy ()
```

Destroys the `SpeechRecognizer` object.

<br />

### isOnDeviceRecognitionAvailable

Added in [API level 31](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static boolean isOnDeviceRecognitionAvailable (Context context)
```

Checks whether an on-device speech recognition service is available on the system. If this
method returns `false`,
`https://developer.android.com/reference/android/speech/SpeechRecognizer#createOnDeviceSpeechRecognizer(android.content.Context)` will
fail.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: with which on-device `SpeechRecognizer` will be created. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if on-device recognition is available, `false` otherwise <br /> |

### isRecognitionAvailable

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static boolean isRecognitionAvailable (Context context)
```

Checks whether a speech recognition service is available on the system. If this method
returns `false`, `https://developer.android.com/reference/android/speech/SpeechRecognizer#createSpeechRecognizer(android.content.Context)` will
fail.

<br />

| Parameters ||
|---|---|
| `context` | `Context`: with which `SpeechRecognizer` will be created. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if recognition is available, `false` otherwise <br /> |

### setRecognitionListener

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void setRecognitionListener (RecognitionListener listener)
```

Sets the listener that will receive all the callbacks. The previous unfinished commands will
be executed with the old listener, while any following command will be executed with the new
listener.


This method must be called from the main thread of your app.

<br />

| Parameters ||
|---|---|
| `listener` | `RecognitionListener`: listener that will receive all the callbacks from the created `https://developer.android.com/reference/android/speech/SpeechRecognizer`, this must not be null. <br /> |

### startListening

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void startListening (Intent recognizerIntent)
```

Starts listening for speech. Please note that
`https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)` should be called beforehand, otherwise
no notifications will be received.


This method must be called from the main thread of your app.

<br />

| Parameters ||
|---|---|
| `recognizerIntent` | `Intent`: contains parameters for the recognition to be performed. The intent may also contain optional extras, see `https://developer.android.com/reference/android/speech/RecognizerIntent`. If these values are not set explicitly, default values will be used by the recognizer. <br /> |

### stopListening

Added in [API level 8](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void stopListening ()
```

Stops listening for speech. Speech captured so far will be recognized as if the user had
stopped speaking at this point.

Note that in the default case, this does not need to be called, as the speech endpointer
will automatically stop the recognizer listening when it determines speech has completed.
However, you can manipulate endpointer parameters directly using the intent extras defined in
`https://developer.android.com/reference/android/speech/RecognizerIntent`, in which case you may sometimes want to manually call this method
to stop listening sooner.

Upon invocation clients must wait until `https://developer.android.com/reference/android/speech/RecognitionListener#onResults(android.os.Bundle)` or
`https://developer.android.com/reference/android/speech/RecognitionListener#onError(int)` are invoked before calling
`https://developer.android.com/reference/android/speech/SpeechRecognizer#startListening(android.content.Intent)` again. Otherwise such an attempt would be rejected by
recognition service.

Please note that
`https://developer.android.com/reference/android/speech/SpeechRecognizer#setRecognitionListener(android.speech.RecognitionListener)` should be called beforehand, otherwise
no notifications will be received.


This method must be called from the main thread of your app.

<br />

### triggerModelDownload

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void triggerModelDownload (Intent recognizerIntent)
```

Attempts to download the support for the given `recognizerIntent`. This might trigger
user interaction to approve the download. Callers can verify the status of the request via
`https://developer.android.com/reference/android/speech/SpeechRecognizer#checkRecognitionSupport(android.content.Intent,%20java.util.concurrent.Executor,%20android.speech.RecognitionSupportCallback)`.

<br />

| Parameters ||
|---|---|
| `recognizerIntent` | `Intent`: contains parameters for the recognition to be performed. The intent may also contain optional extras, see `https://developer.android.com/reference/android/speech/RecognizerIntent`. This value cannot be `null`. <br /> |

### triggerModelDownload

Added in [API level 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void triggerModelDownload (Intent recognizerIntent, 
                Executor executor, 
                ModelDownloadListener listener)
```

Attempts to download the support for the given `recognizerIntent`. This might trigger
user interaction to approve the download. Callers can verify the status of the request via
`https://developer.android.com/reference/android/speech/SpeechRecognizer#checkRecognitionSupport(android.content.Intent,%20java.util.concurrent.Executor,%20android.speech.RecognitionSupportCallback)`.

The updates about the model download request are received via the given
`https://developer.android.com/reference/android/speech/ModelDownloadListener`:

- If the model is already available, `https://developer.android.com/reference/android/speech/ModelDownloadListener#onSuccess()` will be called directly. The model can be safely used afterwards.
- If the `https://developer.android.com/reference/android/speech/RecognitionService` has started the download, `https://developer.android.com/reference/android/speech/ModelDownloadListener#onProgress(int)` will be called an unspecified (zero or more) number of times until the download is complete. When the download finishes, `https://developer.android.com/reference/android/speech/ModelDownloadListener#onSuccess()` will be called. The model can be safely used afterwards.
- If the `https://developer.android.com/reference/android/speech/RecognitionService` has only scheduled the download, but won't satisfy it immediately, `https://developer.android.com/reference/android/speech/ModelDownloadListener#onScheduled()` will be called. There will be no further updates on this listener.
- If the request fails at any time due to a network or scheduling error, `https://developer.android.com/reference/android/speech/ModelDownloadListener#onError(int)` will be called.

  <br />

  <br />

  | Parameters ||
  |---|---|
  | `recognizerIntent` | `Intent`: contains parameters for the recognition to be performed. The intent may also contain optional extras, see `https://developer.android.com/reference/android/speech/RecognizerIntent`. This value cannot be `null`. <br /> |
  | `executor` | `Executor`: for dispatching listener callbacks. This value cannot be `null`. Callback and listener events are dispatched through this `https://developer.android.com/reference/java/util/concurrent/Executor`, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use `https://developer.android.com/reference/android/content/Context#getMainExecutor()`. Otherwise, provide an `https://developer.android.com/reference/java/util/concurrent/Executor` that dispatches to an appropriate thread. <br /> |
  | `listener` | `ModelDownloadListener`: on which to receive updates about the model download request. This value cannot be `null`. <br /> |