Repository: expo/expo
File: packages/expo-sensors/src/DeviceSensor.ts (TypeScript)

Code before:
   * Returns the registered listeners count.
   */
  getListenerCount(): number {
    return this._nativeModule.listenerCount(this._nativeEventName);
  }

  /**
   * Removes all registered listeners.
   */
  removeAllListeners(): void {
    this._nativeModule.removeAllListeners(this._nativeEventName);
  }

  /**
   * Removes the given subscription.
   * @param subscription A subscription to remove.
   */
  removeSubscription(subscription: EventSubscription): void {
    subscription.remove();
  }

  /**
   * Set the sensor update interval.
   *
   * @param intervalMs Desired interval in milliseconds between sensor updates.
   * > Starting from Android 12 (API level 31),  the system has a 200Hz limit for each sensor updates.
   * >
   * > If you need an update interval of greater than 200Hz, you should
   * > * add `android.permission.HIGH_SAMPLING_RATE_SENSORS` to [**app.json** `permissions` field](/versions/latest/config/app/#permissions)
   * > * or if you are using an existing React Native project, add
   * > `<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS"/>` to **AndroidManifest.xml**.
   */
  setUpdateInterval(intervalMs: number): void {
    if (!this._nativeModule.setUpdateInterval) {
      console.warn(`expo-sensors: setUpdateInterval() is not supported on ${Platform.OS}`);
    } else {
      this._nativeModule.setUpdateInterval(intervalMs);
    }
  }

  /**
   * > **info** You should always check the sensor availability before attempting to use it.
   * @return A promise that resolves to a `boolean` denoting the availability of the sensor.
   */
  async isAvailableAsync(): Promise<boolean> {
    if (!this._nativeModule.isAvailableAsync) {
      return false;
    } else {
      return await this._nativeModule.isAvailableAsync();
    }
  }

Review comment (suggestion):
```suggestion
   * > Starting from Android 12 (API level 31), the system has a 200Hz limit for each sensor updates.
```

Feel free to ignore this since it's such a small thing, but I noticed there is an extra space here for some reason 

Code after:
   * Returns the registered listeners count.
   */
  getListenerCount(): number {
    return this._nativeModule.listenerCount(this._nativeEventName);
  }

  /**
   * Removes all registered listeners.
   */
  removeAllListeners(): void {
    this._nativeModule.removeAllListeners(this._nativeEventName);
  }

  /**
   * Removes the given subscription.
   * @param subscription A subscription to remove.
   */
  removeSubscription(subscription: EventSubscription): void {
    subscription.remove();
  }

  /**
   * Set the sensor update interval.
   *
   * @param intervalMs Desired interval in milliseconds between sensor updates.
   * > Starting from Android 12 (API level 31), the system has a 200Hz limit for each sensor updates.
   * >
   * > If you need an update interval of greater than 200Hz, you should
   * > * add `android.permission.HIGH_SAMPLING_RATE_SENSORS` to [**app.json** `permissions` field](/versions/latest/config/app/#permissions)
   * > * or if you are using an existing React Native project, add
   * > `<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS"/>` to **AndroidManifest.xml**.
   */
  setUpdateInterval(intervalMs: number): void {
    if (!this._nativeModule.setUpdateInterval) {
      console.warn(`expo-sensors: setUpdateInterval() is not supported on ${Platform.OS}`);
    } else {
      this._nativeModule.setUpdateInterval(intervalMs);
    }
  }

  /**
   * > **info** You should always check the sensor availability before attempting to use it.
   * @return A promise that resolves to a `boolean` denoting the availability of the sensor.
   */
  async isAvailableAsync(): Promise<boolean> {
    if (!this._nativeModule.isAvailableAsync) {
      return false;
    } else {
      return await this._nativeModule.isAvailableAsync();
    }
  }