Merge "TIF: Fix incorrect uses of INPUT_STATE_XXX"
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index ee2a233..99d254e 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -76,13 +76,10 @@
*/
public static final int VIDEO_UNAVAILABLE_REASON_AUDIO_ONLY = VIDEO_UNAVAILABLE_REASON_END;
- private static final int TIME_SHIFT_STATUS_START = 0;
- private static final int TIME_SHIFT_STATUS_END = 3;
-
/**
* Status prior to calling {@link TvInputService.Session#notifyTimeShiftStatusChanged}.
*/
- public static final int TIME_SHIFT_STATUS_UNKNOWN = TIME_SHIFT_STATUS_START;
+ public static final int TIME_SHIFT_STATUS_UNKNOWN = 0;
/**
* The TV input does not support time shifting.
@@ -99,44 +96,40 @@
* pause/resume playback, seek to a specified time position and set playback rate and audio
* mode.
*/
- public static final int TIME_SHIFT_STATUS_AVAILABLE = TIME_SHIFT_STATUS_END;
+ public static final int TIME_SHIFT_STATUS_AVAILABLE = 3;
public static final long TIME_SHIFT_INVALID_TIME = Long.MIN_VALUE;
/**
- * The TV input is in unknown state.
- * <p>
- * State for denoting unknown TV input state. The typical use case is when a requested TV
- * input is removed from the device or it is not registered. Used in
- * {@code ITvInputManager.getTvInputState()}.
- * </p>
- * @hide
- */
- public static final int INPUT_STATE_UNKNOWN = -1;
-
- /**
* The TV input is connected.
- * <p>
- * State for {@link #getInputState} and {@link
- * TvInputManager.TvInputCallback#onInputStateChanged}.
- * </p>
+ *
+ * <p>This state indicates that a source device is connected to the input port and is in the
+ * normal operation mode. It is mostly relevant to hardware inputs such as HDMI input. This is
+ * the default state for any hardware inputs where their states are unknown. Non-hardware inputs
+ * are considered connected all the time.
+ *
+ * @see #getInputState
+ * @see TvInputManager.TvInputCallback#onInputStateChanged
*/
public static final int INPUT_STATE_CONNECTED = 0;
/**
- * The TV input is connected but in standby mode. It would take a while until it becomes
- * fully ready.
- * <p>
- * State for {@link #getInputState} and {@link
- * TvInputManager.TvInputCallback#onInputStateChanged}.
- * </p>
+ * The TV input is connected but in standby mode.
+ *
+ * <p>This state indicates that a source device is connected to the input port but is in standby
+ * mode. It is mostly relevant to hardware inputs such as HDMI input.
+ *
+ * @see #getInputState
+ * @see TvInputManager.TvInputCallback#onInputStateChanged
*/
public static final int INPUT_STATE_CONNECTED_STANDBY = 1;
/**
* The TV input is disconnected.
- * <p>
- * State for {@link #getInputState} and {@link
- * TvInputManager.TvInputCallback#onInputStateChanged}.
- * </p>
+ *
+ * <p>This state indicates that a source device is disconnected from the input port. It is
+ * mostly relevant to hardware inputs such as HDMI input.
+ *
+ * @see #getInputState
+ * @see TvInputManager.TvInputCallback#onInputStateChanged
*/
public static final int INPUT_STATE_DISCONNECTED = 2;
@@ -553,7 +546,7 @@
}
/**
- * Callback used to monitor status of the TV input.
+ * Callback used to monitor status of the TV inputs.
*/
public abstract static class TvInputCallback {
/**
@@ -571,7 +564,10 @@
}
/**
- * This is called when a TV input is added.
+ * This is called when a TV input is added to the system.
+ *
+ * <p>Normally it happens when the user installs a new TV input package that implements
+ * {@link TvInputService} interface.
*
* @param inputId The id of the TV input.
*/
@@ -579,7 +575,10 @@
}
/**
- * This is called when a TV input is removed.
+ * This is called when a TV input is removed from the system.
+ *
+ * <p>Normally it happens when the user uninstalls the previously installed TV input
+ * package.
*
* @param inputId The id of the TV input.
*/
@@ -587,9 +586,10 @@
}
/**
- * This is called when a TV input is updated. The update of TV input happens when it is
- * reinstalled or the media on which the newer version of TV input exists is
- * available/unavailable.
+ * This is called when a TV input is updated on the system.
+ *
+ * <p>Normally it happens when a previously installed TV input package is re-installed or
+ * the media on which a newer version of the package exists becomes available/unavailable.
*
* @param inputId The id of the TV input.
* @hide
@@ -902,10 +902,7 @@
synchronized (mLock) {
for (TvInputInfo info : infos) {
String inputId = info.getId();
- int state = mService.getTvInputState(inputId, mUserId);
- if (state != INPUT_STATE_UNKNOWN) {
- mStateMap.put(inputId, state);
- }
+ mStateMap.put(inputId, mService.getTvInputState(inputId, mUserId));
}
}
}
@@ -945,7 +942,9 @@
}
/**
- * Returns the state of a given TV input. It returns one of the following:
+ * Returns the state of a given TV input.
+ *
+ * <p>The state is one of the following:
* <ul>
* <li>{@link #INPUT_STATE_CONNECTED}
* <li>{@link #INPUT_STATE_CONNECTED_STANDBY}
@@ -953,8 +952,7 @@
* </ul>
*
* @param inputId The id of the TV input.
- * @throws IllegalArgumentException if the argument is {@code null} or if there is no
- * {@link TvInputInfo} corresponding to {@code inputId}.
+ * @throws IllegalArgumentException if the argument is {@code null}.
*/
public int getInputState(String inputId) {
if (inputId == null) {
@@ -963,7 +961,8 @@
synchronized (mLock) {
Integer state = mStateMap.get(inputId);
if (state == null) {
- throw new IllegalArgumentException("Unrecognized input ID: " + inputId);
+ Log.w(TAG, "Unrecognized input ID: " + inputId);
+ return INPUT_STATE_DISCONNECTED;
}
return state.intValue();
}
diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index 3262cc6..5972247 100644
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -18,8 +18,6 @@
import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED;
import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED_STANDBY;
-import static android.media.tv.TvInputManager.INPUT_STATE_DISCONNECTED;
-import static android.media.tv.TvInputManager.INPUT_STATE_UNKNOWN;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
@@ -800,7 +798,7 @@
synchronized (mLock) {
UserState userState = getUserStateLocked(resolvedUserId);
TvInputState state = userState.inputMap.get(inputId);
- return state == null ? INPUT_STATE_UNKNOWN : state.state;
+ return state == null ? INPUT_STATE_CONNECTED : state.state;
}
} finally {
Binder.restoreCallingIdentity(identity);
@@ -1908,7 +1906,7 @@
for (TvInputState inputState : userState.inputMap.values()) {
if (inputState.info.getComponent().equals(component)
- && inputState.state != INPUT_STATE_DISCONNECTED) {
+ && inputState.state != INPUT_STATE_CONNECTED) {
notifyInputStateChangedLocked(userState, inputState.info.getId(),
inputState.state, null);
}
@@ -1957,13 +1955,6 @@
serviceState.callback = null;
abortPendingCreateSessionRequestsLocked(serviceState, null, mUserId);
-
- for (TvInputState inputState : userState.inputMap.values()) {
- if (inputState.info.getComponent().equals(component)) {
- notifyInputStateChangedLocked(userState, inputState.info.getId(),
- INPUT_STATE_DISCONNECTED, null);
- }
- }
}
}
}
@@ -2508,9 +2499,6 @@
}
private static class SessionNotFoundException extends IllegalArgumentException {
- public SessionNotFoundException() {
- }
-
public SessionNotFoundException(String name) {
super(name);
}