Loading media/java/android/media/tv/ITvInputManager.aidl +0 −5 Original line number Diff line number Diff line Loading @@ -64,11 +64,6 @@ interface ITvInputManager { // For TV input hardware binding List<TvInputHardwareInfo> getHardwareList(); /* * All TvInputServices which want to use hardware must call this method on * BOOT_COMPLETE. */ void registerTvInputInfo(in TvInputInfo info, int deviceId); ITvInputHardware acquireTvInputHardware(int deviceId, in ITvInputHardwareCallback callback, in TvInputInfo info, int userId); void releaseTvInputHardware(int deviceId, in ITvInputHardware hardware, int userId); Loading media/java/android/media/tv/ITvInputService.aidl +5 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media.tv; import android.hardware.hdmi.HdmiCecDeviceInfo; import android.media.tv.ITvInputServiceCallback; import android.media.tv.ITvInputSessionCallback; import android.media.tv.TvInputHardwareInfo; Loading @@ -32,6 +33,8 @@ oneway interface ITvInputService { in String inputId); // For hardware TvInputService void notifyHardwareAdded(in TvInputHardwareInfo info); void notifyHardwareRemoved(int deviceId); void notifyHardwareAdded(in TvInputHardwareInfo hardwareInfo); void notifyHardwareRemoved(in TvInputHardwareInfo hardwareInfo); void notifyHdmiCecDeviceAdded(in HdmiCecDeviceInfo cecDeviceInfo); void notifyHdmiCecDeviceRemoved(in HdmiCecDeviceInfo cecDeviceInfo); } media/java/android/media/tv/ITvInputServiceCallback.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.media.tv.TvInputInfo; * @hide */ oneway interface ITvInputServiceCallback { void addTvInput(in TvInputInfo inputInfo); void addHardwareTvInput(in int deviceID, in TvInputInfo inputInfo); void addHdmiCecTvInput(in int logicalAddress, in TvInputInfo inputInfo); void removeTvInput(in String inputId); } media/java/android/media/tv/TvInputInfo.java +8 −9 Original line number Diff line number Diff line Loading @@ -122,7 +122,8 @@ public final class TvInputInfo implements Parcelable { public static TvInputInfo createTvInputInfo(Context context, ResolveInfo service) throws XmlPullParserException, IOException { return createTvInputInfo(context, service, generateInputIdForComponentName( new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name))); new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name)), null); } /** Loading @@ -134,10 +135,10 @@ public final class TvInputInfo implements Parcelable { * @hide */ public static TvInputInfo createTvInputInfo(Context context, ResolveInfo service, HdmiCecDeviceInfo cecInfo) throws XmlPullParserException, IOException { HdmiCecDeviceInfo cecInfo, String parentId) throws XmlPullParserException, IOException { return createTvInputInfo(context, service, generateInputIdForHdmiCec( new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name), cecInfo)); cecInfo), parentId); } /** Loading @@ -152,11 +153,11 @@ public final class TvInputInfo implements Parcelable { TvInputHardwareInfo hardwareInfo) throws XmlPullParserException, IOException { return createTvInputInfo(context, service, generateInputIdForHardware( new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name), hardwareInfo)); hardwareInfo), null); } private static TvInputInfo createTvInputInfo(Context context, ResolveInfo service, String id) throws XmlPullParserException, IOException { String id, String parentId) throws XmlPullParserException, IOException { ServiceInfo si = service.serviceInfo; PackageManager pm = context.getPackageManager(); XmlResourceParser parser = null; Loading @@ -181,7 +182,7 @@ public final class TvInputInfo implements Parcelable { "Meta-data does not start with tv-input-service tag in " + si.name); } TvInputInfo input = new TvInputInfo(context, service, id, null); TvInputInfo input = new TvInputInfo(service, id, parentId); TypedArray sa = res.obtainAttributes(attrs, com.android.internal.R.styleable.TvInputService); input.mSetupActivity = sa.getString( Loading Loading @@ -222,9 +223,8 @@ public final class TvInputInfo implements Parcelable { * @param id ID of this TV input. Should be generated via generateInputId*(). * @param parentId ID of this TV input's parent input. {@code null} if none exists. */ private TvInputInfo(Context context, ResolveInfo service, String id, String parentId) { private TvInputInfo(ResolveInfo service, String id, String parentId) { mService = service; ServiceInfo si = service.serviceInfo; mId = id; mParentId = parentId; } Loading Loading @@ -429,7 +429,6 @@ public final class TvInputInfo implements Parcelable { /** * Used to make this class parcelable. * * @hide */ public static final Parcelable.Creator<TvInputInfo> CREATOR = Loading media/java/android/media/tv/TvInputService.java +91 −20 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.PixelFormat; import android.graphics.Rect; import android.hardware.hdmi.HdmiCecDeviceInfo; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -121,21 +122,32 @@ public abstract class TvInputService extends Service { @Override public void notifyHardwareAdded(TvInputHardwareInfo hardwareInfo) { mHandler.obtainMessage(ServiceHandler.DO_ADD_TV_INPUT_FROM_HARDWARE, mHandler.obtainMessage(ServiceHandler.DO_ADD_HARDWARE_TV_INPUT, hardwareInfo).sendToTarget(); } @Override public void notifyHardwareRemoved(int deviceId) { mHandler.obtainMessage(ServiceHandler.DO_REMOVE_TV_INPUT_FROM_HARDWARE, deviceId, 0).sendToTarget(); public void notifyHardwareRemoved(TvInputHardwareInfo hardwareInfo) { mHandler.obtainMessage(ServiceHandler.DO_REMOVE_HARDWARE_TV_INPUT, hardwareInfo).sendToTarget(); } @Override public void notifyHdmiCecDeviceAdded(HdmiCecDeviceInfo cecDeviceInfo) { mHandler.obtainMessage(ServiceHandler.DO_ADD_HDMI_CEC_TV_INPUT, cecDeviceInfo).sendToTarget(); } @Override public void notifyHdmiCecDeviceRemoved(HdmiCecDeviceInfo cecDeviceInfo) { mHandler.obtainMessage(ServiceHandler.DO_REMOVE_HDMI_CEC_TV_INPUT, cecDeviceInfo).sendToTarget(); } }; } /** * Get the number of callbacks that are registered. * * @hide */ @VisibleForTesting Loading @@ -153,11 +165,11 @@ public abstract class TvInputService extends Service { public abstract Session onCreateSession(String inputId); /** * Returns a new TvInputInfo object if this service is responsible for {@code hardwareInfo}; * otherwise, return {@code null}. Override to modify default behavior of ignoring all input. * * @param hardwareInfo TvInputHardwareInfo object just added. * Returns a new {@link TvInputInfo} object if this service is responsible for * {@code hardwareInfo}; otherwise, return {@code null}. Override to modify default behavior of * ignoring all hardware input. * * @param hardwareInfo {@link TvInputHardwareInfo} object just added. * @hide */ @SystemApi Loading @@ -167,12 +179,40 @@ public abstract class TvInputService extends Service { /** * Returns the input ID for {@code deviceId} if it is handled by this service; * otherwise, return {@code null}. Override to modify default behavior of ignoring all input. * otherwise, return {@code null}. Override to modify default behavior of ignoring all hardware * input. * * @param hardwareInfo {@link TvInputHardwareInfo} object just removed. * @hide */ @SystemApi public String onHardwareRemoved(int deviceId) { public String onHardwareRemoved(TvInputHardwareInfo hardwareInfo) { return null; } /** * Returns a new {@link TvInputInfo} object if this service is responsible for * {@code cecDeviceInfo}; otherwise, return {@code null}. Override to modify default behavior * of ignoring all HDMI CEC logical input device. * * @param cecDeviceInfo {@link HdmiCecDeviceInfo} object just added. * @hide */ @SystemApi public TvInputInfo onHdmiCecDeviceAdded(HdmiCecDeviceInfo cecDeviceInfo) { return null; } /** * Returns the input ID for {@code logicalAddress} if it is handled by this service; * otherwise, return {@code null}. Override to modify default behavior of ignoring all HDMI CEC * logical input device. * * @param cecDeviceInfo {@link HdmiCecDeviceInfo} object just removed. * @hide */ @SystemApi public String onHdmiCecDeviceRemoved(HdmiCecDeviceInfo cecDeviceInfo) { return null; } Loading Loading @@ -899,14 +939,29 @@ public abstract class TvInputService extends Service { @SuppressLint("HandlerLeak") private final class ServiceHandler extends Handler { private static final int DO_CREATE_SESSION = 1; private static final int DO_ADD_TV_INPUT_FROM_HARDWARE = 2; private static final int DO_REMOVE_TV_INPUT_FROM_HARDWARE = 3; private static final int DO_ADD_HARDWARE_TV_INPUT = 2; private static final int DO_REMOVE_HARDWARE_TV_INPUT = 3; private static final int DO_ADD_HDMI_CEC_TV_INPUT = 4; private static final int DO_REMOVE_HDMI_CEC_TV_INPUT = 5; private void broadcastAddHardwareTvInput(int deviceId, TvInputInfo inputInfo) { int n = mCallbacks.beginBroadcast(); for (int i = 0; i < n; ++i) { try { mCallbacks.getBroadcastItem(i).addHardwareTvInput(deviceId, inputInfo); } catch (RemoteException e) { Log.e(TAG, "Error while broadcasting: " + e); } } mCallbacks.finishBroadcast(); } private void broadcastAddTvInput(TvInputInfo inputInfo) { private void broadcastAddHdmiCecTvInput( int logicalAddress, TvInputInfo inputInfo) { int n = mCallbacks.beginBroadcast(); for (int i = 0; i < n; ++i) { try { mCallbacks.getBroadcastItem(i).addTvInput(inputInfo); mCallbacks.getBroadcastItem(i).addHdmiCecTvInput(logicalAddress, inputInfo); } catch (RemoteException e) { Log.e(TAG, "Error while broadcasting: " + e); } Loading Loading @@ -951,17 +1006,33 @@ public abstract class TvInputService extends Service { args.recycle(); return; } case DO_ADD_TV_INPUT_FROM_HARDWARE: { case DO_ADD_HARDWARE_TV_INPUT: { TvInputHardwareInfo hardwareInfo = (TvInputHardwareInfo) msg.obj; TvInputInfo inputInfo = onHardwareAdded(hardwareInfo); if (inputInfo != null) { broadcastAddTvInput(inputInfo); broadcastAddHardwareTvInput(hardwareInfo.getDeviceId(), inputInfo); } return; } case DO_REMOVE_HARDWARE_TV_INPUT: { TvInputHardwareInfo hardwareInfo = (TvInputHardwareInfo) msg.obj; String inputId = onHardwareRemoved(hardwareInfo); if (inputId != null) { broadcastRemoveTvInput(inputId); } return; } case DO_ADD_HDMI_CEC_TV_INPUT: { HdmiCecDeviceInfo cecDeviceInfo = (HdmiCecDeviceInfo) msg.obj; TvInputInfo inputInfo = onHdmiCecDeviceAdded(cecDeviceInfo); if (inputInfo != null) { broadcastAddHdmiCecTvInput(cecDeviceInfo.getLogicalAddress(), inputInfo); } return; } case DO_REMOVE_TV_INPUT_FROM_HARDWARE: { int deviceId = msg.arg1; String inputId = onHardwareRemoved(deviceId); case DO_REMOVE_HDMI_CEC_TV_INPUT: { HdmiCecDeviceInfo cecDeviceInfo = (HdmiCecDeviceInfo) msg.obj; String inputId = onHdmiCecDeviceRemoved(cecDeviceInfo); if (inputId != null) { broadcastRemoveTvInput(inputId); } Loading Loading
media/java/android/media/tv/ITvInputManager.aidl +0 −5 Original line number Diff line number Diff line Loading @@ -64,11 +64,6 @@ interface ITvInputManager { // For TV input hardware binding List<TvInputHardwareInfo> getHardwareList(); /* * All TvInputServices which want to use hardware must call this method on * BOOT_COMPLETE. */ void registerTvInputInfo(in TvInputInfo info, int deviceId); ITvInputHardware acquireTvInputHardware(int deviceId, in ITvInputHardwareCallback callback, in TvInputInfo info, int userId); void releaseTvInputHardware(int deviceId, in ITvInputHardware hardware, int userId); Loading
media/java/android/media/tv/ITvInputService.aidl +5 −2 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media.tv; import android.hardware.hdmi.HdmiCecDeviceInfo; import android.media.tv.ITvInputServiceCallback; import android.media.tv.ITvInputSessionCallback; import android.media.tv.TvInputHardwareInfo; Loading @@ -32,6 +33,8 @@ oneway interface ITvInputService { in String inputId); // For hardware TvInputService void notifyHardwareAdded(in TvInputHardwareInfo info); void notifyHardwareRemoved(int deviceId); void notifyHardwareAdded(in TvInputHardwareInfo hardwareInfo); void notifyHardwareRemoved(in TvInputHardwareInfo hardwareInfo); void notifyHdmiCecDeviceAdded(in HdmiCecDeviceInfo cecDeviceInfo); void notifyHdmiCecDeviceRemoved(in HdmiCecDeviceInfo cecDeviceInfo); }
media/java/android/media/tv/ITvInputServiceCallback.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.media.tv.TvInputInfo; * @hide */ oneway interface ITvInputServiceCallback { void addTvInput(in TvInputInfo inputInfo); void addHardwareTvInput(in int deviceID, in TvInputInfo inputInfo); void addHdmiCecTvInput(in int logicalAddress, in TvInputInfo inputInfo); void removeTvInput(in String inputId); }
media/java/android/media/tv/TvInputInfo.java +8 −9 Original line number Diff line number Diff line Loading @@ -122,7 +122,8 @@ public final class TvInputInfo implements Parcelable { public static TvInputInfo createTvInputInfo(Context context, ResolveInfo service) throws XmlPullParserException, IOException { return createTvInputInfo(context, service, generateInputIdForComponentName( new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name))); new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name)), null); } /** Loading @@ -134,10 +135,10 @@ public final class TvInputInfo implements Parcelable { * @hide */ public static TvInputInfo createTvInputInfo(Context context, ResolveInfo service, HdmiCecDeviceInfo cecInfo) throws XmlPullParserException, IOException { HdmiCecDeviceInfo cecInfo, String parentId) throws XmlPullParserException, IOException { return createTvInputInfo(context, service, generateInputIdForHdmiCec( new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name), cecInfo)); cecInfo), parentId); } /** Loading @@ -152,11 +153,11 @@ public final class TvInputInfo implements Parcelable { TvInputHardwareInfo hardwareInfo) throws XmlPullParserException, IOException { return createTvInputInfo(context, service, generateInputIdForHardware( new ComponentName(service.serviceInfo.packageName, service.serviceInfo.name), hardwareInfo)); hardwareInfo), null); } private static TvInputInfo createTvInputInfo(Context context, ResolveInfo service, String id) throws XmlPullParserException, IOException { String id, String parentId) throws XmlPullParserException, IOException { ServiceInfo si = service.serviceInfo; PackageManager pm = context.getPackageManager(); XmlResourceParser parser = null; Loading @@ -181,7 +182,7 @@ public final class TvInputInfo implements Parcelable { "Meta-data does not start with tv-input-service tag in " + si.name); } TvInputInfo input = new TvInputInfo(context, service, id, null); TvInputInfo input = new TvInputInfo(service, id, parentId); TypedArray sa = res.obtainAttributes(attrs, com.android.internal.R.styleable.TvInputService); input.mSetupActivity = sa.getString( Loading Loading @@ -222,9 +223,8 @@ public final class TvInputInfo implements Parcelable { * @param id ID of this TV input. Should be generated via generateInputId*(). * @param parentId ID of this TV input's parent input. {@code null} if none exists. */ private TvInputInfo(Context context, ResolveInfo service, String id, String parentId) { private TvInputInfo(ResolveInfo service, String id, String parentId) { mService = service; ServiceInfo si = service.serviceInfo; mId = id; mParentId = parentId; } Loading Loading @@ -429,7 +429,6 @@ public final class TvInputInfo implements Parcelable { /** * Used to make this class parcelable. * * @hide */ public static final Parcelable.Creator<TvInputInfo> CREATOR = Loading
media/java/android/media/tv/TvInputService.java +91 −20 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.content.Context; import android.content.Intent; import android.graphics.PixelFormat; import android.graphics.Rect; import android.hardware.hdmi.HdmiCecDeviceInfo; import android.net.Uri; import android.os.Bundle; import android.os.Handler; Loading Loading @@ -121,21 +122,32 @@ public abstract class TvInputService extends Service { @Override public void notifyHardwareAdded(TvInputHardwareInfo hardwareInfo) { mHandler.obtainMessage(ServiceHandler.DO_ADD_TV_INPUT_FROM_HARDWARE, mHandler.obtainMessage(ServiceHandler.DO_ADD_HARDWARE_TV_INPUT, hardwareInfo).sendToTarget(); } @Override public void notifyHardwareRemoved(int deviceId) { mHandler.obtainMessage(ServiceHandler.DO_REMOVE_TV_INPUT_FROM_HARDWARE, deviceId, 0).sendToTarget(); public void notifyHardwareRemoved(TvInputHardwareInfo hardwareInfo) { mHandler.obtainMessage(ServiceHandler.DO_REMOVE_HARDWARE_TV_INPUT, hardwareInfo).sendToTarget(); } @Override public void notifyHdmiCecDeviceAdded(HdmiCecDeviceInfo cecDeviceInfo) { mHandler.obtainMessage(ServiceHandler.DO_ADD_HDMI_CEC_TV_INPUT, cecDeviceInfo).sendToTarget(); } @Override public void notifyHdmiCecDeviceRemoved(HdmiCecDeviceInfo cecDeviceInfo) { mHandler.obtainMessage(ServiceHandler.DO_REMOVE_HDMI_CEC_TV_INPUT, cecDeviceInfo).sendToTarget(); } }; } /** * Get the number of callbacks that are registered. * * @hide */ @VisibleForTesting Loading @@ -153,11 +165,11 @@ public abstract class TvInputService extends Service { public abstract Session onCreateSession(String inputId); /** * Returns a new TvInputInfo object if this service is responsible for {@code hardwareInfo}; * otherwise, return {@code null}. Override to modify default behavior of ignoring all input. * * @param hardwareInfo TvInputHardwareInfo object just added. * Returns a new {@link TvInputInfo} object if this service is responsible for * {@code hardwareInfo}; otherwise, return {@code null}. Override to modify default behavior of * ignoring all hardware input. * * @param hardwareInfo {@link TvInputHardwareInfo} object just added. * @hide */ @SystemApi Loading @@ -167,12 +179,40 @@ public abstract class TvInputService extends Service { /** * Returns the input ID for {@code deviceId} if it is handled by this service; * otherwise, return {@code null}. Override to modify default behavior of ignoring all input. * otherwise, return {@code null}. Override to modify default behavior of ignoring all hardware * input. * * @param hardwareInfo {@link TvInputHardwareInfo} object just removed. * @hide */ @SystemApi public String onHardwareRemoved(int deviceId) { public String onHardwareRemoved(TvInputHardwareInfo hardwareInfo) { return null; } /** * Returns a new {@link TvInputInfo} object if this service is responsible for * {@code cecDeviceInfo}; otherwise, return {@code null}. Override to modify default behavior * of ignoring all HDMI CEC logical input device. * * @param cecDeviceInfo {@link HdmiCecDeviceInfo} object just added. * @hide */ @SystemApi public TvInputInfo onHdmiCecDeviceAdded(HdmiCecDeviceInfo cecDeviceInfo) { return null; } /** * Returns the input ID for {@code logicalAddress} if it is handled by this service; * otherwise, return {@code null}. Override to modify default behavior of ignoring all HDMI CEC * logical input device. * * @param cecDeviceInfo {@link HdmiCecDeviceInfo} object just removed. * @hide */ @SystemApi public String onHdmiCecDeviceRemoved(HdmiCecDeviceInfo cecDeviceInfo) { return null; } Loading Loading @@ -899,14 +939,29 @@ public abstract class TvInputService extends Service { @SuppressLint("HandlerLeak") private final class ServiceHandler extends Handler { private static final int DO_CREATE_SESSION = 1; private static final int DO_ADD_TV_INPUT_FROM_HARDWARE = 2; private static final int DO_REMOVE_TV_INPUT_FROM_HARDWARE = 3; private static final int DO_ADD_HARDWARE_TV_INPUT = 2; private static final int DO_REMOVE_HARDWARE_TV_INPUT = 3; private static final int DO_ADD_HDMI_CEC_TV_INPUT = 4; private static final int DO_REMOVE_HDMI_CEC_TV_INPUT = 5; private void broadcastAddHardwareTvInput(int deviceId, TvInputInfo inputInfo) { int n = mCallbacks.beginBroadcast(); for (int i = 0; i < n; ++i) { try { mCallbacks.getBroadcastItem(i).addHardwareTvInput(deviceId, inputInfo); } catch (RemoteException e) { Log.e(TAG, "Error while broadcasting: " + e); } } mCallbacks.finishBroadcast(); } private void broadcastAddTvInput(TvInputInfo inputInfo) { private void broadcastAddHdmiCecTvInput( int logicalAddress, TvInputInfo inputInfo) { int n = mCallbacks.beginBroadcast(); for (int i = 0; i < n; ++i) { try { mCallbacks.getBroadcastItem(i).addTvInput(inputInfo); mCallbacks.getBroadcastItem(i).addHdmiCecTvInput(logicalAddress, inputInfo); } catch (RemoteException e) { Log.e(TAG, "Error while broadcasting: " + e); } Loading Loading @@ -951,17 +1006,33 @@ public abstract class TvInputService extends Service { args.recycle(); return; } case DO_ADD_TV_INPUT_FROM_HARDWARE: { case DO_ADD_HARDWARE_TV_INPUT: { TvInputHardwareInfo hardwareInfo = (TvInputHardwareInfo) msg.obj; TvInputInfo inputInfo = onHardwareAdded(hardwareInfo); if (inputInfo != null) { broadcastAddTvInput(inputInfo); broadcastAddHardwareTvInput(hardwareInfo.getDeviceId(), inputInfo); } return; } case DO_REMOVE_HARDWARE_TV_INPUT: { TvInputHardwareInfo hardwareInfo = (TvInputHardwareInfo) msg.obj; String inputId = onHardwareRemoved(hardwareInfo); if (inputId != null) { broadcastRemoveTvInput(inputId); } return; } case DO_ADD_HDMI_CEC_TV_INPUT: { HdmiCecDeviceInfo cecDeviceInfo = (HdmiCecDeviceInfo) msg.obj; TvInputInfo inputInfo = onHdmiCecDeviceAdded(cecDeviceInfo); if (inputInfo != null) { broadcastAddHdmiCecTvInput(cecDeviceInfo.getLogicalAddress(), inputInfo); } return; } case DO_REMOVE_TV_INPUT_FROM_HARDWARE: { int deviceId = msg.arg1; String inputId = onHardwareRemoved(deviceId); case DO_REMOVE_HDMI_CEC_TV_INPUT: { HdmiCecDeviceInfo cecDeviceInfo = (HdmiCecDeviceInfo) msg.obj; String inputId = onHdmiCecDeviceRemoved(cecDeviceInfo); if (inputId != null) { broadcastRemoveTvInput(inputId); } Loading