diff --git a/api/current.txt b/api/current.txt index 81aec5ea0a6a1..ab92a1be018be 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7277,6 +7277,7 @@ package android.content.pm { field public static final java.lang.String FEATURE_CAMERA_AUTOFOCUS = "android.hardware.camera.autofocus"; field public static final java.lang.String FEATURE_CAMERA_FLASH = "android.hardware.camera.flash"; field public static final java.lang.String FEATURE_CAMERA_FRONT = "android.hardware.camera.front"; + field public static final java.lang.String FEATURE_CONSUMER_IR = "android.hardware.consumerir"; field public static final java.lang.String FEATURE_DEVICE_ADMIN = "android.software.device_admin"; field public static final java.lang.String FEATURE_FAKETOUCH = "android.hardware.faketouch"; field public static final java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT = "android.hardware.faketouch.multitouch.distinct"; diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 9203af94caee1..b63db8a8856c8 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -913,6 +913,14 @@ public abstract class PackageManager { @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_CAMERA_FRONT = "android.hardware.camera.front"; + /** + * Feature for {@link #getSystemAvailableFeatures} and + * {@link #hasSystemFeature}: The device is capable of communicating with + * consumer IR devices. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_CONSUMER_IR = "android.hardware.consumerir"; + /** * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature}: The device supports one or more methods of diff --git a/services/java/com/android/server/ConsumerIrService.java b/services/java/com/android/server/ConsumerIrService.java index 07f2a413259d5..783dff1114432 100644 --- a/services/java/com/android/server/ConsumerIrService.java +++ b/services/java/com/android/server/ConsumerIrService.java @@ -39,6 +39,7 @@ import android.provider.Settings.SettingNotFoundException; import android.util.Slog; import android.view.InputDevice; +import java.lang.RuntimeException; import java.util.ArrayList; import java.util.LinkedList; import java.util.ListIterator; @@ -65,8 +66,12 @@ public class ConsumerIrService extends IConsumerIrService.Stub { mWakeLock.setReferenceCounted(true); mHal = halOpen(); - if (mHal == 0) { - Slog.w(TAG, "No IR HAL loaded"); + if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CONSUMER_IR)) { + if (mHal == 0) { + throw new RuntimeException("FEATURE_CONSUMER_IR present, but no IR HAL loaded!"); + } + } else if (mHal != 0) { + throw new RuntimeException("IR HAL present, but FEATURE_CONSUMER_IR is not set!"); } }