From 0c9d61f0989e5a85674fbbc24cf06dd3de1fc326 Mon Sep 17 00:00:00 2001 From: Alex Ray Date: Thu, 3 Oct 2013 12:17:54 -0700 Subject: [PATCH] Add Consumer IR feature Bug: 10676690 Change-Id: Id2c118225dc6ef259f5ed97da4071e9b6de3a83a --- api/current.txt | 1 + core/java/android/content/pm/PackageManager.java | 8 ++++++++ services/java/com/android/server/ConsumerIrService.java | 9 +++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/api/current.txt b/api/current.txt index e8f4204afc2e..106dbbf50276 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 9203af94caee..b63db8a8856c 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -915,6 +915,14 @@ public abstract class PackageManager { /** * 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 * reporting current location. */ diff --git a/services/java/com/android/server/ConsumerIrService.java b/services/java/com/android/server/ConsumerIrService.java index 07f2a413259d..783dff111443 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!"); } } -- 2.11.0