Expose necessary SystemApi as test API for CEC CTS
This CL annotates multiple APIs in the HdmiControlManager as Test APIs. Also creates a Test api wrapper for aidl interface IHdmiControlService. HdmiPortInfo is the param under test that is also annotated as Test API. Test: atest android.hardware.hdmi.cts Bug: 155113872 Change-Id: I58b483eaaa5fe08f90415a7e044c30a28dc7d7c2
This commit is contained in:
@@ -1298,6 +1298,130 @@ package android.hardware.display {
|
||||
|
||||
}
|
||||
|
||||
package android.hardware.hdmi {
|
||||
|
||||
public final class HdmiControlManager {
|
||||
method @Nullable public android.hardware.hdmi.HdmiSwitchClient getSwitchClient();
|
||||
method @RequiresPermission("android.permission.HDMI_CEC") public void setStandbyMode(boolean);
|
||||
field public static final String ACTION_OSD_MESSAGE = "android.hardware.hdmi.action.OSD_MESSAGE";
|
||||
field public static final int AVR_VOLUME_MUTED = 101; // 0x65
|
||||
field public static final int CLEAR_TIMER_STATUS_CEC_DISABLE = 162; // 0xa2
|
||||
field public static final int CLEAR_TIMER_STATUS_CHECK_RECORDER_CONNECTION = 160; // 0xa0
|
||||
field public static final int CLEAR_TIMER_STATUS_FAIL_TO_CLEAR_SELECTED_SOURCE = 161; // 0xa1
|
||||
field public static final int CLEAR_TIMER_STATUS_TIMER_CLEARED = 128; // 0x80
|
||||
field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_INFO_AVAILABLE = 2; // 0x2
|
||||
field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_NO_MATCHING = 1; // 0x1
|
||||
field public static final int CLEAR_TIMER_STATUS_TIMER_NOT_CLEARED_RECORDING = 0; // 0x0
|
||||
field public static final int CONTROL_STATE_CHANGED_REASON_SETTING = 1; // 0x1
|
||||
field public static final int CONTROL_STATE_CHANGED_REASON_STANDBY = 3; // 0x3
|
||||
field public static final int CONTROL_STATE_CHANGED_REASON_START = 0; // 0x0
|
||||
field public static final int CONTROL_STATE_CHANGED_REASON_WAKEUP = 2; // 0x2
|
||||
field public static final int DEVICE_EVENT_ADD_DEVICE = 1; // 0x1
|
||||
field public static final int DEVICE_EVENT_REMOVE_DEVICE = 2; // 0x2
|
||||
field public static final int DEVICE_EVENT_UPDATE_DEVICE = 3; // 0x3
|
||||
field public static final String EXTRA_MESSAGE_EXTRA_PARAM1 = "android.hardware.hdmi.extra.MESSAGE_EXTRA_PARAM1";
|
||||
field public static final String EXTRA_MESSAGE_ID = "android.hardware.hdmi.extra.MESSAGE_ID";
|
||||
field public static final int ONE_TOUCH_RECORD_ALREADY_RECORDING = 18; // 0x12
|
||||
field public static final int ONE_TOUCH_RECORD_CEC_DISABLED = 51; // 0x33
|
||||
field public static final int ONE_TOUCH_RECORD_CHECK_RECORDER_CONNECTION = 49; // 0x31
|
||||
field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_COPY = 13; // 0xd
|
||||
field public static final int ONE_TOUCH_RECORD_DISALLOW_TO_FUTHER_COPIES = 14; // 0xe
|
||||
field public static final int ONE_TOUCH_RECORD_FAIL_TO_RECORD_DISPLAYED_SCREEN = 50; // 0x32
|
||||
field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PHYSICAL_ADDRESS = 10; // 0xa
|
||||
field public static final int ONE_TOUCH_RECORD_INVALID_EXTERNAL_PLUG_NUMBER = 9; // 0x9
|
||||
field public static final int ONE_TOUCH_RECORD_MEDIA_PROBLEM = 21; // 0x15
|
||||
field public static final int ONE_TOUCH_RECORD_MEDIA_PROTECTED = 19; // 0x13
|
||||
field public static final int ONE_TOUCH_RECORD_NOT_ENOUGH_SPACE = 22; // 0x16
|
||||
field public static final int ONE_TOUCH_RECORD_NO_MEDIA = 16; // 0x10
|
||||
field public static final int ONE_TOUCH_RECORD_NO_OR_INSUFFICIENT_CA_ENTITLEMENTS = 12; // 0xc
|
||||
field public static final int ONE_TOUCH_RECORD_NO_SOURCE_SIGNAL = 20; // 0x14
|
||||
field public static final int ONE_TOUCH_RECORD_OTHER_REASON = 31; // 0x1f
|
||||
field public static final int ONE_TOUCH_RECORD_PARENT_LOCK_ON = 23; // 0x17
|
||||
field public static final int ONE_TOUCH_RECORD_PLAYING = 17; // 0x11
|
||||
field public static final int ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS = 48; // 0x30
|
||||
field public static final int ONE_TOUCH_RECORD_RECORDING_ALREADY_TERMINATED = 27; // 0x1b
|
||||
field public static final int ONE_TOUCH_RECORD_RECORDING_ANALOGUE_SERVICE = 3; // 0x3
|
||||
field public static final int ONE_TOUCH_RECORD_RECORDING_CURRENTLY_SELECTED_SOURCE = 1; // 0x1
|
||||
field public static final int ONE_TOUCH_RECORD_RECORDING_DIGITAL_SERVICE = 2; // 0x2
|
||||
field public static final int ONE_TOUCH_RECORD_RECORDING_EXTERNAL_INPUT = 4; // 0x4
|
||||
field public static final int ONE_TOUCH_RECORD_RECORDING_TERMINATED_NORMALLY = 26; // 0x1a
|
||||
field public static final int ONE_TOUCH_RECORD_UNABLE_ANALOGUE_SERVICE = 6; // 0x6
|
||||
field public static final int ONE_TOUCH_RECORD_UNABLE_DIGITAL_SERVICE = 5; // 0x5
|
||||
field public static final int ONE_TOUCH_RECORD_UNABLE_SELECTED_SERVICE = 7; // 0x7
|
||||
field public static final int ONE_TOUCH_RECORD_UNSUPPORTED_CA = 11; // 0xb
|
||||
field public static final int OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT = 1; // 0x1
|
||||
field public static final int OSD_MESSAGE_AVR_VOLUME_CHANGED = 2; // 0x2
|
||||
field public static final int POWER_STATUS_ON = 0; // 0x0
|
||||
field public static final int POWER_STATUS_STANDBY = 1; // 0x1
|
||||
field public static final int POWER_STATUS_TRANSIENT_TO_ON = 2; // 0x2
|
||||
field public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3; // 0x3
|
||||
field public static final int POWER_STATUS_UNKNOWN = -1; // 0xffffffff
|
||||
field @Deprecated public static final int RESULT_ALREADY_IN_PROGRESS = 4; // 0x4
|
||||
field public static final int RESULT_COMMUNICATION_FAILED = 7; // 0x7
|
||||
field public static final int RESULT_EXCEPTION = 5; // 0x5
|
||||
field public static final int RESULT_INCORRECT_MODE = 6; // 0x6
|
||||
field public static final int RESULT_SOURCE_NOT_AVAILABLE = 2; // 0x2
|
||||
field public static final int RESULT_SUCCESS = 0; // 0x0
|
||||
field public static final int RESULT_TARGET_NOT_AVAILABLE = 3; // 0x3
|
||||
field public static final int RESULT_TIMEOUT = 1; // 0x1
|
||||
field public static final int TIMER_RECORDING_RESULT_EXTRA_CEC_DISABLED = 3; // 0x3
|
||||
field public static final int TIMER_RECORDING_RESULT_EXTRA_CHECK_RECORDER_CONNECTION = 1; // 0x1
|
||||
field public static final int TIMER_RECORDING_RESULT_EXTRA_FAIL_TO_RECORD_SELECTED_SOURCE = 2; // 0x2
|
||||
field public static final int TIMER_RECORDING_RESULT_EXTRA_NO_ERROR = 0; // 0x0
|
||||
field public static final int TIMER_RECORDING_TYPE_ANALOGUE = 2; // 0x2
|
||||
field public static final int TIMER_RECORDING_TYPE_DIGITAL = 1; // 0x1
|
||||
field public static final int TIMER_RECORDING_TYPE_EXTERNAL = 3; // 0x3
|
||||
field public static final int TIMER_STATUS_MEDIA_INFO_NOT_PRESENT = 2; // 0x2
|
||||
field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_NOT_PROTECTED = 0; // 0x0
|
||||
field public static final int TIMER_STATUS_MEDIA_INFO_PRESENT_PROTECTED = 1; // 0x1
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_CA_NOT_SUPPORTED = 6; // 0x6
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_CLOCK_FAILURE = 10; // 0xa
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_DATE_OUT_OF_RANGE = 2; // 0x2
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_DUPLICATED = 14; // 0xe
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PHYSICAL_NUMBER = 5; // 0x5
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_EXTERNAL_PLUG_NUMBER = 4; // 0x4
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_INVALID_SEQUENCE = 3; // 0x3
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_CA_ENTITLEMENTS = 7; // 0x7
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_NO_FREE_TIME = 1; // 0x1
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_PARENTAL_LOCK_ON = 9; // 0x9
|
||||
field public static final int TIMER_STATUS_NOT_PROGRAMMED_UNSUPPORTED_RESOLUTION = 8; // 0x8
|
||||
field public static final int TIMER_STATUS_PROGRAMMED_INFO_ENOUGH_SPACE = 8; // 0x8
|
||||
field public static final int TIMER_STATUS_PROGRAMMED_INFO_MIGHT_NOT_ENOUGH_SPACE = 11; // 0xb
|
||||
field public static final int TIMER_STATUS_PROGRAMMED_INFO_NOT_ENOUGH_SPACE = 9; // 0x9
|
||||
field public static final int TIMER_STATUS_PROGRAMMED_INFO_NO_MEDIA_INFO = 10; // 0xa
|
||||
}
|
||||
|
||||
public final class HdmiControlServiceWrapper {
|
||||
ctor public HdmiControlServiceWrapper();
|
||||
method @NonNull public android.hardware.hdmi.HdmiControlManager createHdmiControlManager();
|
||||
method @BinderThread public void setDeviceTypes(@NonNull int[]);
|
||||
method @BinderThread public void setPortInfo(@NonNull java.util.List<android.hardware.hdmi.HdmiPortInfo>);
|
||||
field public static final int DEVICE_PURE_CEC_SWITCH = 6; // 0x6
|
||||
}
|
||||
|
||||
public final class HdmiPortInfo implements android.os.Parcelable {
|
||||
ctor public HdmiPortInfo(int, int, int, boolean, boolean, boolean);
|
||||
method public int describeContents();
|
||||
method public int getAddress();
|
||||
method public int getId();
|
||||
method public int getType();
|
||||
method public boolean isArcSupported();
|
||||
method public boolean isCecSupported();
|
||||
method public boolean isMhlSupported();
|
||||
field @NonNull public static final android.os.Parcelable.Creator<android.hardware.hdmi.HdmiPortInfo> CREATOR;
|
||||
field public static final int PORT_INPUT = 0; // 0x0
|
||||
field public static final int PORT_OUTPUT = 1; // 0x1
|
||||
}
|
||||
|
||||
public class HdmiSwitchClient {
|
||||
method public int getDeviceType();
|
||||
method @NonNull public java.util.List<android.hardware.hdmi.HdmiPortInfo> getPortInfo();
|
||||
method public void sendKeyEvent(int, boolean);
|
||||
method public void sendVendorCommand(int, byte[], boolean);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
package android.hardware.lights {
|
||||
|
||||
public final class Light implements android.os.Parcelable {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package android.hardware.hdmi;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.SystemApi;
|
||||
import android.hardware.hdmi.HdmiControlManager.VendorCommandListener;
|
||||
import android.os.RemoteException;
|
||||
@@ -84,7 +85,8 @@ public abstract class HdmiClient {
|
||||
* @param hasVendorId {@code true} if the command type will be <Vendor Command With ID>.
|
||||
* {@code false} if the command will be <Vendor Command>
|
||||
*/
|
||||
public void sendVendorCommand(int targetAddress, byte[] params, boolean hasVendorId) {
|
||||
public void sendVendorCommand(int targetAddress,
|
||||
@SuppressLint("MissingNullability") byte[] params, boolean hasVendorId) {
|
||||
try {
|
||||
mService.sendVendorCommand(getDeviceType(), targetAddress, params, hasVendorId);
|
||||
} catch (RemoteException e) {
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.annotation.SdkConstant.SdkConstantType;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.SystemService;
|
||||
import android.annotation.TestApi;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Binder;
|
||||
@@ -57,6 +58,7 @@ import java.util.concurrent.Executor;
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@TestApi
|
||||
@SystemService(Context.HDMI_CONTROL_SERVICE)
|
||||
@RequiresFeature(PackageManager.FEATURE_HDMI_CEC)
|
||||
public final class HdmiControlManager {
|
||||
@@ -139,6 +141,8 @@ public final class HdmiControlManager {
|
||||
public static final int POWER_STATUS_TRANSIENT_TO_ON = 2;
|
||||
public static final int POWER_STATUS_TRANSIENT_TO_STANDBY = 3;
|
||||
|
||||
/** @hide */
|
||||
@SystemApi
|
||||
@IntDef ({
|
||||
RESULT_SUCCESS,
|
||||
RESULT_TIMEOUT,
|
||||
@@ -400,8 +404,11 @@ public final class HdmiControlManager {
|
||||
* See {@link HdmiDeviceInfo#DEVICE_PLAYBACK}
|
||||
* See {@link HdmiDeviceInfo#DEVICE_TV}
|
||||
* See {@link HdmiDeviceInfo#DEVICE_AUDIO_SYSTEM}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@Nullable
|
||||
@SystemApi
|
||||
@SuppressLint("Doclava125")
|
||||
public HdmiClient getClient(int type) {
|
||||
if (mService == null) {
|
||||
@@ -430,8 +437,11 @@ public final class HdmiControlManager {
|
||||
* system if the system is configured to host more than one type of HDMI-CEC logical devices.
|
||||
*
|
||||
* @return {@link HdmiPlaybackClient} instance. {@code null} on failure.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@Nullable
|
||||
@SystemApi
|
||||
@SuppressLint("Doclava125")
|
||||
public HdmiPlaybackClient getPlaybackClient() {
|
||||
return (HdmiPlaybackClient) getClient(HdmiDeviceInfo.DEVICE_PLAYBACK);
|
||||
@@ -445,8 +455,11 @@ public final class HdmiControlManager {
|
||||
* system if the system is configured to host more than one type of HDMI-CEC logical devices.
|
||||
*
|
||||
* @return {@link HdmiTvClient} instance. {@code null} on failure.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@Nullable
|
||||
@SystemApi
|
||||
@SuppressLint("Doclava125")
|
||||
public HdmiTvClient getTvClient() {
|
||||
return (HdmiTvClient) getClient(HdmiDeviceInfo.DEVICE_TV);
|
||||
@@ -478,10 +491,8 @@ public final class HdmiControlManager {
|
||||
* system if the system is configured to host more than one type of HDMI-CEC logical device.
|
||||
*
|
||||
* @return {@link HdmiSwitchClient} instance. {@code null} on failure.
|
||||
* @hide
|
||||
*/
|
||||
@Nullable
|
||||
@SystemApi
|
||||
@SuppressLint("Doclava125")
|
||||
public HdmiSwitchClient getSwitchClient() {
|
||||
return (HdmiSwitchClient) getClient(HdmiDeviceInfo.DEVICE_PURE_CEC_SWITCH);
|
||||
@@ -790,7 +801,10 @@ public final class HdmiControlManager {
|
||||
|
||||
/**
|
||||
* Listener used to get hotplug event from HDMI port.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public interface HotplugEventListener {
|
||||
void onReceived(HdmiHotplugEvent event);
|
||||
}
|
||||
@@ -840,7 +854,10 @@ public final class HdmiControlManager {
|
||||
|
||||
/**
|
||||
* Listener used to get vendor-specific commands.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public interface VendorCommandListener {
|
||||
/**
|
||||
* Called when a vendor command is received.
|
||||
@@ -879,7 +896,10 @@ public final class HdmiControlManager {
|
||||
*
|
||||
* @param listener {@link HotplugEventListener} instance
|
||||
* @see HdmiControlManager#removeHotplugEventListener(HotplugEventListener)
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.HDMI_CEC)
|
||||
public void addHotplugEventListener(HotplugEventListener listener) {
|
||||
if (mService == null) {
|
||||
@@ -903,7 +923,10 @@ public final class HdmiControlManager {
|
||||
* Removes a listener to stop getting informed of {@link HdmiHotplugEvent}.
|
||||
*
|
||||
* @param listener {@link HotplugEventListener} instance to be removed
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.HDMI_CEC)
|
||||
public void removeHotplugEventListener(HotplugEventListener listener) {
|
||||
if (mService == null) {
|
||||
|
||||
469
core/java/android/hardware/hdmi/HdmiControlServiceWrapper.java
Normal file
469
core/java/android/hardware/hdmi/HdmiControlServiceWrapper.java
Normal file
@@ -0,0 +1,469 @@
|
||||
/*
|
||||
* Copyright 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.hardware.hdmi;
|
||||
|
||||
import android.annotation.BinderThread;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.TestApi;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A wrapper of the Binder interface that clients running in the application process
|
||||
* will use to perform HDMI-CEC features by communicating with other devices
|
||||
* on the bus.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public final class HdmiControlServiceWrapper {
|
||||
|
||||
/** Pure CEC switch device type. */
|
||||
public static final int DEVICE_PURE_CEC_SWITCH = HdmiDeviceInfo.DEVICE_PURE_CEC_SWITCH;
|
||||
|
||||
private List<HdmiPortInfo> mInfoList = null;
|
||||
private int[] mTypes = null;
|
||||
|
||||
/**
|
||||
* Create a new HdmiControlManager with the current HdmiControlService wrapper
|
||||
*
|
||||
* @return the created HdmiControlManager
|
||||
*/
|
||||
@NonNull
|
||||
public HdmiControlManager createHdmiControlManager() {
|
||||
return new HdmiControlManager(mInterface);
|
||||
}
|
||||
|
||||
private final IHdmiControlService mInterface = new IHdmiControlService.Stub() {
|
||||
|
||||
@Override
|
||||
public int[] getSupportedTypes() {
|
||||
return HdmiControlServiceWrapper.this.getSupportedTypes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HdmiDeviceInfo getActiveSource() {
|
||||
return HdmiControlServiceWrapper.this.getActiveSource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void oneTouchPlay(IHdmiControlCallback callback) {
|
||||
HdmiControlServiceWrapper.this.oneTouchPlay(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void queryDisplayStatus(IHdmiControlCallback callback) {
|
||||
HdmiControlServiceWrapper.this.queryDisplayStatus(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener) {
|
||||
HdmiControlServiceWrapper.this.addHdmiControlStatusChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeHdmiControlStatusChangeListener(
|
||||
IHdmiControlStatusChangeListener listener) {
|
||||
HdmiControlServiceWrapper.this.removeHdmiControlStatusChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addHotplugEventListener(IHdmiHotplugEventListener listener) {
|
||||
HdmiControlServiceWrapper.this.addHotplugEventListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeHotplugEventListener(IHdmiHotplugEventListener listener) {
|
||||
HdmiControlServiceWrapper.this.removeHotplugEventListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDeviceEventListener(IHdmiDeviceEventListener listener) {
|
||||
HdmiControlServiceWrapper.this.addDeviceEventListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deviceSelect(int deviceId, IHdmiControlCallback callback) {
|
||||
HdmiControlServiceWrapper.this.deviceSelect(deviceId, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void portSelect(int portId, IHdmiControlCallback callback) {
|
||||
HdmiControlServiceWrapper.this.portSelect(portId, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendKeyEvent(int deviceType, int keyCode, boolean isPressed) {
|
||||
HdmiControlServiceWrapper.this.sendKeyEvent(deviceType, keyCode, isPressed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendVolumeKeyEvent(int deviceType, int keyCode, boolean isPressed) {
|
||||
HdmiControlServiceWrapper.this.sendVolumeKeyEvent(deviceType, keyCode, isPressed);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HdmiPortInfo> getPortInfo() {
|
||||
return HdmiControlServiceWrapper.this.getPortInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canChangeSystemAudioMode() {
|
||||
return HdmiControlServiceWrapper.this.canChangeSystemAudioMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getSystemAudioMode() {
|
||||
return HdmiControlServiceWrapper.this.getSystemAudioMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPhysicalAddress() {
|
||||
return HdmiControlServiceWrapper.this.getPhysicalAddress();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSystemAudioMode(boolean enabled, IHdmiControlCallback callback) {
|
||||
HdmiControlServiceWrapper.this.setSystemAudioMode(enabled, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addSystemAudioModeChangeListener(IHdmiSystemAudioModeChangeListener listener) {
|
||||
HdmiControlServiceWrapper.this.addSystemAudioModeChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSystemAudioModeChangeListener(
|
||||
IHdmiSystemAudioModeChangeListener listener) {
|
||||
HdmiControlServiceWrapper.this.removeSystemAudioModeChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setArcMode(boolean enabled) {
|
||||
HdmiControlServiceWrapper.this.setArcMode(enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProhibitMode(boolean enabled) {
|
||||
HdmiControlServiceWrapper.this.setProhibitMode(enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSystemAudioVolume(int oldIndex, int newIndex, int maxIndex) {
|
||||
HdmiControlServiceWrapper.this.setSystemAudioVolume(oldIndex, newIndex, maxIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSystemAudioMute(boolean mute) {
|
||||
HdmiControlServiceWrapper.this.setSystemAudioMute(mute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInputChangeListener(IHdmiInputChangeListener listener) {
|
||||
HdmiControlServiceWrapper.this.setInputChangeListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HdmiDeviceInfo> getInputDevices() {
|
||||
return HdmiControlServiceWrapper.this.getInputDevices();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HdmiDeviceInfo> getDeviceList() {
|
||||
return HdmiControlServiceWrapper.this.getDeviceList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void powerOffRemoteDevice(int logicalAddress, int powerStatus) {
|
||||
HdmiControlServiceWrapper.this.powerOffRemoteDevice(logicalAddress, powerStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void powerOnRemoteDevice(int logicalAddress, int powerStatus) {
|
||||
HdmiControlServiceWrapper.this.powerOnRemoteDevice(logicalAddress, powerStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void askRemoteDeviceToBecomeActiveSource(int physicalAddress) {
|
||||
HdmiControlServiceWrapper.this.askRemoteDeviceToBecomeActiveSource(physicalAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendVendorCommand(int deviceType, int targetAddress, byte[] params,
|
||||
boolean hasVendorId) {
|
||||
HdmiControlServiceWrapper.this.sendVendorCommand(
|
||||
deviceType, targetAddress, params, hasVendorId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVendorCommandListener(IHdmiVendorCommandListener listener, int deviceType) {
|
||||
HdmiControlServiceWrapper.this.addVendorCommandListener(listener, deviceType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendStandby(int deviceType, int deviceId) {
|
||||
HdmiControlServiceWrapper.this.sendStandby(deviceType, deviceId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHdmiRecordListener(IHdmiRecordListener callback) {
|
||||
HdmiControlServiceWrapper.this.setHdmiRecordListener(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startOneTouchRecord(int recorderAddress, byte[] recordSource) {
|
||||
HdmiControlServiceWrapper.this.startOneTouchRecord(recorderAddress, recordSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopOneTouchRecord(int recorderAddress) {
|
||||
HdmiControlServiceWrapper.this.stopOneTouchRecord(recorderAddress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startTimerRecording(int recorderAddress, int sourceType, byte[] recordSource) {
|
||||
HdmiControlServiceWrapper.this.startTimerRecording(
|
||||
recorderAddress, sourceType, recordSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearTimerRecording(int recorderAddress, int sourceType, byte[] recordSource) {
|
||||
HdmiControlServiceWrapper.this.clearTimerRecording(
|
||||
recorderAddress, sourceType, recordSource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMhlVendorCommand(int portId, int offset, int length, byte[] data) {
|
||||
HdmiControlServiceWrapper.this.sendMhlVendorCommand(portId, offset, length, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addHdmiMhlVendorCommandListener(IHdmiMhlVendorCommandListener listener) {
|
||||
HdmiControlServiceWrapper.this.addHdmiMhlVendorCommandListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStandbyMode(boolean isStandbyModeOn) {
|
||||
HdmiControlServiceWrapper.this.setStandbyMode(isStandbyModeOn);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHdmiCecVolumeControlEnabled(boolean isHdmiCecVolumeControlEnabled) {
|
||||
HdmiControlServiceWrapper.this.setHdmiCecVolumeControlEnabled(
|
||||
isHdmiCecVolumeControlEnabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHdmiCecVolumeControlEnabled() {
|
||||
return HdmiControlServiceWrapper.this.isHdmiCecVolumeControlEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportAudioStatus(int deviceType, int volume, int maxVolume, boolean isMute) {
|
||||
HdmiControlServiceWrapper.this.reportAudioStatus(deviceType, volume, maxVolume, isMute);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSystemAudioModeOnForAudioOnlySource() {
|
||||
HdmiControlServiceWrapper.this.setSystemAudioModeOnForAudioOnlySource();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addHdmiCecVolumeControlFeatureListener(
|
||||
IHdmiCecVolumeControlFeatureListener listener) {
|
||||
HdmiControlServiceWrapper.this.addHdmiCecVolumeControlFeatureListener(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeHdmiCecVolumeControlFeatureListener(
|
||||
IHdmiCecVolumeControlFeatureListener listener) {
|
||||
HdmiControlServiceWrapper.this.removeHdmiCecVolumeControlFeatureListener(listener);
|
||||
}
|
||||
};
|
||||
|
||||
@BinderThread
|
||||
public void setPortInfo(@NonNull List<HdmiPortInfo> infoList) {
|
||||
mInfoList = infoList;
|
||||
}
|
||||
|
||||
@BinderThread
|
||||
public void setDeviceTypes(@NonNull int[] types) {
|
||||
mTypes = types;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public List<HdmiPortInfo> getPortInfo() {
|
||||
return mInfoList;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public int[] getSupportedTypes() {
|
||||
return mTypes;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public HdmiDeviceInfo getActiveSource() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void oneTouchPlay(IHdmiControlCallback callback) {}
|
||||
|
||||
/** @hide */
|
||||
public void queryDisplayStatus(IHdmiControlCallback callback) {}
|
||||
|
||||
/** @hide */
|
||||
public void addHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void removeHdmiControlStatusChangeListener(IHdmiControlStatusChangeListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void addHotplugEventListener(IHdmiHotplugEventListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void removeHotplugEventListener(IHdmiHotplugEventListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void addDeviceEventListener(IHdmiDeviceEventListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void deviceSelect(int deviceId, IHdmiControlCallback callback) {}
|
||||
|
||||
/** @hide */
|
||||
public void portSelect(int portId, IHdmiControlCallback callback) {}
|
||||
|
||||
/** @hide */
|
||||
public void sendKeyEvent(int deviceType, int keyCode, boolean isPressed) {}
|
||||
|
||||
/** @hide */
|
||||
public void sendVolumeKeyEvent(int deviceType, int keyCode, boolean isPressed) {}
|
||||
|
||||
/** @hide */
|
||||
public boolean canChangeSystemAudioMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public boolean getSystemAudioMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public int getPhysicalAddress() {
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void setSystemAudioMode(boolean enabled, IHdmiControlCallback callback) {}
|
||||
|
||||
/** @hide */
|
||||
public void addSystemAudioModeChangeListener(IHdmiSystemAudioModeChangeListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void removeSystemAudioModeChangeListener(IHdmiSystemAudioModeChangeListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void setArcMode(boolean enabled) {}
|
||||
|
||||
/** @hide */
|
||||
public void setProhibitMode(boolean enabled) {}
|
||||
|
||||
/** @hide */
|
||||
public void setSystemAudioVolume(int oldIndex, int newIndex, int maxIndex) {}
|
||||
|
||||
/** @hide */
|
||||
public void setSystemAudioMute(boolean mute) {}
|
||||
|
||||
/** @hide */
|
||||
public void setInputChangeListener(IHdmiInputChangeListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public List<HdmiDeviceInfo> getInputDevices() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public List<HdmiDeviceInfo> getDeviceList() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void powerOffRemoteDevice(int logicalAddress, int powerStatus) {}
|
||||
|
||||
/** @hide */
|
||||
public void powerOnRemoteDevice(int logicalAddress, int powerStatus) {}
|
||||
|
||||
/** @hide */
|
||||
public void askRemoteDeviceToBecomeActiveSource(int physicalAddress) {}
|
||||
|
||||
/** @hide */
|
||||
public void sendVendorCommand(int deviceType, int targetAddress, byte[] params,
|
||||
boolean hasVendorId) {}
|
||||
|
||||
/** @hide */
|
||||
public void addVendorCommandListener(IHdmiVendorCommandListener listener, int deviceType) {}
|
||||
|
||||
/** @hide */
|
||||
public void sendStandby(int deviceType, int deviceId) {}
|
||||
|
||||
/** @hide */
|
||||
public void setHdmiRecordListener(IHdmiRecordListener callback) {}
|
||||
|
||||
/** @hide */
|
||||
public void startOneTouchRecord(int recorderAddress, byte[] recordSource) {}
|
||||
|
||||
/** @hide */
|
||||
public void stopOneTouchRecord(int recorderAddress) {}
|
||||
|
||||
/** @hide */
|
||||
public void startTimerRecording(int recorderAddress, int sourceType, byte[] recordSource) {}
|
||||
|
||||
/** @hide */
|
||||
public void clearTimerRecording(int recorderAddress, int sourceType, byte[] recordSource) {}
|
||||
|
||||
/** @hide */
|
||||
public void sendMhlVendorCommand(int portId, int offset, int length, byte[] data) {}
|
||||
|
||||
/** @hide */
|
||||
public void addHdmiMhlVendorCommandListener(IHdmiMhlVendorCommandListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void setStandbyMode(boolean isStandbyModeOn) {}
|
||||
|
||||
/** @hide */
|
||||
public void setHdmiCecVolumeControlEnabled(boolean isHdmiCecVolumeControlEnabled) {}
|
||||
|
||||
/** @hide */
|
||||
public boolean isHdmiCecVolumeControlEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public void reportAudioStatus(int deviceType, int volume, int maxVolume, boolean isMute) {}
|
||||
|
||||
/** @hide */
|
||||
public void setSystemAudioModeOnForAudioOnlySource() {}
|
||||
|
||||
/** @hide */
|
||||
public void addHdmiCecVolumeControlFeatureListener(
|
||||
IHdmiCecVolumeControlFeatureListener listener) {}
|
||||
|
||||
/** @hide */
|
||||
public void removeHdmiCecVolumeControlFeatureListener(
|
||||
IHdmiCecVolumeControlFeatureListener listener) {}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ package android.hardware.hdmi;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.TestApi;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
@@ -28,6 +29,7 @@ import android.os.Parcelable;
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@TestApi
|
||||
public final class HdmiPortInfo implements Parcelable {
|
||||
/** HDMI port type: Input */
|
||||
public static final int PORT_INPUT = 0;
|
||||
@@ -153,7 +155,9 @@ public final class HdmiPortInfo implements Parcelable {
|
||||
* @param dest The Parcel in which the object should be written.
|
||||
* @param flags Additional flags about how the object should be written.
|
||||
* May be 0 or {@link Parcelable#PARCELABLE_WRITE_RETURN_VALUE}.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeInt(mId);
|
||||
@@ -187,4 +191,9 @@ public final class HdmiPortInfo implements Parcelable {
|
||||
&& mCecSupported == other.mCecSupported && mArcSupported == other.mArcSupported
|
||||
&& mMhlSupported == other.mMhlSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return mId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package android.hardware.hdmi;
|
||||
import android.annotation.CallbackExecutor;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.TestApi;
|
||||
import android.hardware.hdmi.HdmiControlManager.ControlCallbackResult;
|
||||
import android.os.Binder;
|
||||
import android.os.RemoteException;
|
||||
@@ -38,6 +39,7 @@ import java.util.concurrent.Executor;
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@TestApi
|
||||
public class HdmiSwitchClient extends HdmiClient {
|
||||
|
||||
private static final String TAG = "HdmiSwitchClient";
|
||||
@@ -187,11 +189,8 @@ public class HdmiSwitchClient extends HdmiClient {
|
||||
* <p>This returns an empty list when the current device does not have HDMI input.
|
||||
*
|
||||
* @return a list of {@link HdmiPortInfo}
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
@SystemApi
|
||||
public List<HdmiPortInfo> getPortInfo() {
|
||||
try {
|
||||
return mService.getPortInfo();
|
||||
|
||||
Reference in New Issue
Block a user