summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alex Ray <aray@google.com> 2013-10-03 12:17:54 -0700
committer Alex Ray <aray@google.com> 2013-10-03 18:19:38 -0700
commit0c9d61f0989e5a85674fbbc24cf06dd3de1fc326 (patch)
tree8647021c9f325e6f6663f234484b8355a9f4f816
parent7192c6d7c6272c788e5e72ca416354491119fbfa (diff)
Add Consumer IR feature
Bug: 10676690 Change-Id: Id2c118225dc6ef259f5ed97da4071e9b6de3a83a
-rw-r--r--api/current.txt1
-rw-r--r--core/java/android/content/pm/PackageManager.java8
-rw-r--r--services/java/com/android/server/ConsumerIrService.java9
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!");
}
}