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

# SatelliteManager

*** ** * ** ***

` public final class SatelliteManager `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.telephony.satellite.SatelliteManager |

<br />

*** ** * ** ***

Manages satellite states such as monitoring enabled state and operations such as provisioning, pointing, messaging, location sharing, etc.

To get the object, call `https://developer.android.com/reference/android/content/Context#getSystemService(java.lang.String)` with `https://developer.android.com/reference/android/content/Context#SATELLITE_SERVICE`.

SatelliteManager is intended for use on devices with feature `https://developer.android.com/`. On devices without the feature, the behavior is not reliable.   

Requires the PackageManager#FEATURE_TELEPHONY_SATELLITE feature which can be detected using `https://developer.android.com/reference/android/content/pm/PackageManager#hasSystemFeature(java.lang.String)`.

## Summary

| ### Constants ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | `https://developer.android.com/reference/android/telephony/satellite/SatelliteManager#PROPERTY_SATELLITE_DATA_OPTIMIZED` The applications that are optimized for low bandwidth satellite data should set this property to package name of the application in the manifest to indicate to platform about the same. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/telephony/satellite/SatelliteManager#registerStateChangeListener(java.util.concurrent.Executor,%20android.telephony.satellite.SatelliteStateChangeListener)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener listener) ` Registers a `https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener` to receive callbacks when the satellite state may have changed. |
| ` void` | ` https://developer.android.com/reference/android/telephony/satellite/SatelliteManager#unregisterStateChangeListener(android.telephony.satellite.SatelliteStateChangeListener)(https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener listener) ` Unregisters the `https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener` previously registered with `https://developer.android.com/reference/android/telephony/satellite/SatelliteManager#registerStateChangeListener(java.util.concurrent.Executor,%20android.telephony.satellite.SatelliteStateChangeListener)`. |

### 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

### PROPERTY_SATELLITE_DATA_OPTIMIZED

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final String PROPERTY_SATELLITE_DATA_OPTIMIZED
```

The applications that are optimized for low bandwidth satellite data should set this property to package name of the application in the manifest to indicate to platform about the same. `<application> <meta-data android:name="android.telephony.PROPERTY_SATELLITE_DATA_OPTIMIZED" android:value=<package-name>/> </application> `

When this meta-data is set in application's manifest, satellite data optimized network is available for application to use.

<br />

Constant Value: "android.telephony.PROPERTY_SATELLITE_DATA_OPTIMIZED"

## Public methods

### registerStateChangeListener

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

```
public void registerStateChangeListener (Executor executor, 
                SatelliteStateChangeListener listener)
```

Registers a `https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener` to receive callbacks when the satellite state may have changed.

The callback method is immediately triggered with latest state on invoking this method if the state change has been notified before.   

Requires `https://developer.android.com/reference/android/Manifest.permission#READ_BASIC_PHONE_STATE` or android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE or `https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE` or `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The `https://developer.android.com/reference/java/util/concurrent/Executor` where the `listener` will be invoked. 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` | `SatelliteStateChangeListener`: The listener to monitor the satellite state change. This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener`
- `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`

### unregisterStateChangeListener

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

```
public void unregisterStateChangeListener (SatelliteStateChangeListener listener)
```

Unregisters the `https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener` previously registered with `https://developer.android.com/reference/android/telephony/satellite/SatelliteManager#registerStateChangeListener(java.util.concurrent.Executor,%20android.telephony.satellite.SatelliteStateChangeListener)`.

It will be a no-op if the `listener` is not currently registered.   

Requires `https://developer.android.com/reference/android/Manifest.permission#READ_BASIC_PHONE_STATE` or android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE or `https://developer.android.com/reference/android/Manifest.permission#READ_PHONE_STATE` or `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`

<br />

| Parameters ||
|---|---|
| `listener` | `SatelliteStateChangeListener`: The listener to unregister. This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/telephony/satellite/SatelliteStateChangeListener`
- `https://developer.android.com/reference/android/telephony/TelephonyManager#hasCarrierPrivileges()`