summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrei Litvin <andreilitvin@google.com> 2020-05-04 13:18:35 -0400
committer Andrei Litvin <andreilitvin@google.com> 2020-05-07 09:43:31 -0400
commitcd66d9dab2fdf4a3e86c8f36ddb29a4fba8ff11e (patch)
treee4d23e4c6a2ed75092a665ae9ac0ee33513a066d
parentcbdece25538f9ed1077d4858d775b02362221af2 (diff)
Added @IntDef annotation for sending gamepad keys and axes.
Test: build android image, compile succeeds Change-Id: Icb4ba58ce99c13f418e28d90d56aaf1f8d46ef0d
-rw-r--r--media/lib/tvremote/Android.bp5
-rw-r--r--media/lib/tvremote/java/com/android/media/tv/remoteprovider/TvRemoteProvider.java83
2 files changed, 80 insertions, 8 deletions
diff --git a/media/lib/tvremote/Android.bp b/media/lib/tvremote/Android.bp
index 5f101a3141c8..c5d14191c6c8 100644
--- a/media/lib/tvremote/Android.bp
+++ b/media/lib/tvremote/Android.bp
@@ -20,5 +20,8 @@ java_sdk_library {
api_packages: ["com.android.media.tv.remoteprovider"],
dex_preopt: {
enabled: false,
- }
+ },
+ static_libs: [
+ "android-support-annotations"
+ ],
}
diff --git a/media/lib/tvremote/java/com/android/media/tv/remoteprovider/TvRemoteProvider.java b/media/lib/tvremote/java/com/android/media/tv/remoteprovider/TvRemoteProvider.java
index 9a3b350f1f39..969b5a4a978e 100644
--- a/media/lib/tvremote/java/com/android/media/tv/remoteprovider/TvRemoteProvider.java
+++ b/media/lib/tvremote/java/com/android/media/tv/remoteprovider/TvRemoteProvider.java
@@ -18,13 +18,19 @@ package com.android.media.tv.remoteprovider;
import android.annotation.FloatRange;
import android.annotation.NonNull;
+import android.annotation.SuppressAutoDoc;
import android.content.Context;
import android.media.tv.ITvRemoteProvider;
import android.media.tv.ITvRemoteServiceInput;
import android.os.IBinder;
import android.os.RemoteException;
+import android.support.annotation.IntDef;
import android.util.Log;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.util.LinkedList;
import java.util.Objects;
@@ -43,6 +49,63 @@ import java.util.Objects;
public abstract class TvRemoteProvider {
+ /** @hide */
+ @IntDef({
+ KeyEvent.KEYCODE_BUTTON_A,
+ KeyEvent.KEYCODE_BUTTON_B,
+ KeyEvent.KEYCODE_BUTTON_X,
+ KeyEvent.KEYCODE_BUTTON_Y,
+ KeyEvent.KEYCODE_BUTTON_L1,
+ KeyEvent.KEYCODE_BUTTON_L2,
+ KeyEvent.KEYCODE_BUTTON_R1,
+ KeyEvent.KEYCODE_BUTTON_R2,
+ KeyEvent.KEYCODE_BUTTON_SELECT,
+ KeyEvent.KEYCODE_BUTTON_START,
+ KeyEvent.KEYCODE_BUTTON_MODE,
+ KeyEvent.KEYCODE_BUTTON_THUMBL,
+ KeyEvent.KEYCODE_BUTTON_THUMBR,
+ KeyEvent.KEYCODE_DPAD_UP,
+ KeyEvent.KEYCODE_DPAD_DOWN,
+ KeyEvent.KEYCODE_DPAD_LEFT,
+ KeyEvent.KEYCODE_DPAD_RIGHT,
+ KeyEvent.KEYCODE_BUTTON_1,
+ KeyEvent.KEYCODE_BUTTON_2,
+ KeyEvent.KEYCODE_BUTTON_3,
+ KeyEvent.KEYCODE_BUTTON_4,
+ KeyEvent.KEYCODE_BUTTON_5,
+ KeyEvent.KEYCODE_BUTTON_6,
+ KeyEvent.KEYCODE_BUTTON_7,
+ KeyEvent.KEYCODE_BUTTON_8,
+ KeyEvent.KEYCODE_BUTTON_9,
+ KeyEvent.KEYCODE_BUTTON_10,
+ KeyEvent.KEYCODE_BUTTON_11,
+ KeyEvent.KEYCODE_BUTTON_12,
+ KeyEvent.KEYCODE_BUTTON_13,
+ KeyEvent.KEYCODE_BUTTON_14,
+ KeyEvent.KEYCODE_BUTTON_15,
+ KeyEvent.KEYCODE_BUTTON_16,
+ KeyEvent.KEYCODE_ASSIST,
+ KeyEvent.KEYCODE_VOICE_ASSIST,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface GamepadKeyCode {
+ }
+
+ /** @hide */
+ @IntDef({
+ MotionEvent.AXIS_X,
+ MotionEvent.AXIS_Y,
+ MotionEvent.AXIS_Z,
+ MotionEvent.AXIS_RZ,
+ MotionEvent.AXIS_LTRIGGER,
+ MotionEvent.AXIS_RTRIGGER,
+ MotionEvent.AXIS_HAT_X,
+ MotionEvent.AXIS_HAT_Y,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface GamepadAxis {
+ }
+
/**
* The {@link Intent} that must be declared as handled by the service.
* The service must also require the {@link android.Manifest.permission#BIND_TV_REMOTE_SERVICE}
@@ -357,10 +420,13 @@ public abstract class TvRemoteProvider {
* <li> Assistant: ASSIST, VOICE_ASSIST
* </ul>
*
- * @param token identifier for the device
+ * @param token identifier for the device. This value must never be null.
* @param keyCode the gamepad key that was pressed (like BUTTON_A)
+ *
*/
- public void sendGamepadKeyDown(@NonNull IBinder token, int keyCode) throws RuntimeException {
+ @SuppressAutoDoc
+ public void sendGamepadKeyDown(@NonNull IBinder token, @GamepadKeyCode int keyCode)
+ throws RuntimeException {
Objects.requireNonNull(token);
if (DEBUG_KEYS) {
Log.d(TAG, "sendGamepadKeyDown() token: " + token);
@@ -378,10 +444,12 @@ public abstract class TvRemoteProvider {
*
* @see sendGamepadKeyDown for supported key codes.
*
- * @param token identifier for the device
+ * @param token identifier for the device. This value mus never be null.
* @param keyCode the gamepad key that was pressed
*/
- public void sendGamepadKeyUp(@NonNull IBinder token, int keyCode) throws RuntimeException {
+ @SuppressAutoDoc
+ public void sendGamepadKeyUp(@NonNull IBinder token, @GamepadKeyCode int keyCode)
+ throws RuntimeException {
Objects.requireNonNull(token);
if (DEBUG_KEYS) {
Log.d(TAG, "sendGamepadKeyUp() token: " + token);
@@ -406,13 +474,14 @@ public abstract class TvRemoteProvider {
* For non-trigger axes, the range of acceptable values is [-1, 1]. The trigger axes support
* values [0, 1].
*
- * @param token identifier for the device
+ * @param token identifier for the device. This value must never be null.
* @param axis MotionEvent axis
* @param value the value to send
*/
+ @SuppressAutoDoc
public void sendGamepadAxisValue(
- @NonNull IBinder token, int axis, @FloatRange(from = -1.0f, to = 1.0f) float value)
- throws RuntimeException {
+ @NonNull IBinder token, @GamepadAxis int axis,
+ @FloatRange(from = -1.0f, to = 1.0f) float value) throws RuntimeException {
Objects.requireNonNull(token);
if (DEBUG_KEYS) {
Log.d(TAG, "sendGamepadAxisValue() token: " + token);