diff --git a/api/system-current.txt b/api/system-current.txt index 851f0f50e7155..de62fd80c92cc 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -4936,6 +4936,7 @@ package android.media.tv { } public abstract class TvInputService extends android.app.Service { + method @Nullable public android.os.IBinder createExtension(); method @Nullable public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo); method @Nullable public String onHardwareRemoved(android.media.tv.TvInputHardwareInfo); method @Nullable public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo); diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java index 95199cc8e0453..95c4f2a025d78 100755 --- a/media/java/android/media/tv/TvInputService.java +++ b/media/java/android/media/tv/TvInputService.java @@ -152,7 +152,7 @@ public abstract class TvInputService extends Service { @Override public final IBinder onBind(Intent intent) { - return new ITvInputService.Stub() { + ITvInputService.Stub tvInputServiceBinder = new ITvInputService.Stub() { @Override public void registerCallback(ITvInputServiceCallback cb) { if (cb != null) { @@ -181,7 +181,8 @@ public abstract class TvInputService extends Service { args.arg2 = cb; args.arg3 = inputId; args.arg4 = sessionId; - mServiceHandler.obtainMessage(ServiceHandler.DO_CREATE_SESSION, args).sendToTarget(); + mServiceHandler.obtainMessage(ServiceHandler.DO_CREATE_SESSION, + args).sendToTarget(); } @Override @@ -228,6 +229,26 @@ public abstract class TvInputService extends Service { deviceInfo).sendToTarget(); } }; + IBinder ext = createExtension(); + if (ext != null) { + tvInputServiceBinder.setExtension(ext); + } + return tvInputServiceBinder; + } + + /** + * Returns a new {@link android.os.Binder} + * + *

if an extension is provided on top of existing {@link TvInputService}; otherwise, + * return {@code null}. Override to provide extended interface. + * + * @see android.os.Binder#setExtension(IBinder) + * @hide + */ + @Nullable + @SystemApi + public IBinder createExtension() { + return null; } /** diff --git a/non-updatable-api/system-current.txt b/non-updatable-api/system-current.txt index fe4604b4c68da..79c82695e9116 100644 --- a/non-updatable-api/system-current.txt +++ b/non-updatable-api/system-current.txt @@ -4876,6 +4876,7 @@ package android.media.tv { } public abstract class TvInputService extends android.app.Service { + method @Nullable public android.os.IBinder createExtension(); method @Nullable public android.media.tv.TvInputInfo onHardwareAdded(android.media.tv.TvInputHardwareInfo); method @Nullable public String onHardwareRemoved(android.media.tv.TvInputHardwareInfo); method @Nullable public android.media.tv.TvInputInfo onHdmiDeviceAdded(android.hardware.hdmi.HdmiDeviceInfo);