Merge "Mark DVB methods and classes as System APIs."

This commit is contained in:
nchalko
2020-01-06 19:08:36 +00:00
committed by Gerrit Code Review
4 changed files with 42 additions and 14 deletions

View File

@@ -3972,6 +3972,15 @@ package android.media.soundtrigger {
package android.media.tv {
public final class DvbDeviceInfo implements android.os.Parcelable {
ctor public DvbDeviceInfo(int, int);
method public int describeContents();
method public int getAdapterId();
method public int getDeviceId();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.DvbDeviceInfo> CREATOR;
}
public final class TvContentRatingSystemInfo implements android.os.Parcelable {
method public static android.media.tv.TvContentRatingSystemInfo createTvContentRatingSystemInfo(int, android.content.pm.ApplicationInfo);
method public int describeContents();
@@ -4086,12 +4095,14 @@ package android.media.tv {
method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean isSingleSessionActive();
method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramAddedToWatchNext(String, long, long);
method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyPreviewProgramBrowsableDisabled(String, long);
method @RequiresPermission(android.Manifest.permission.NOTIFY_TV_INPUTS) public void notifyWatchNextProgramBrowsableDisabled(String, long);
method @Nullable @RequiresPermission("android.permission.DVB_DEVICE") public android.os.ParcelFileDescriptor openDvbDevice(@NonNull android.media.tv.DvbDeviceInfo, int);
method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void removeBlockedRating(@NonNull android.media.tv.TvContentRating);
method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void setParentalControlsEnabled(boolean);

View File

@@ -16,6 +16,8 @@
package android.media.tv;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
@@ -26,10 +28,11 @@ import android.util.Log;
*
* @hide
*/
@SystemApi
public final class DvbDeviceInfo implements Parcelable {
static final String TAG = "DvbDeviceInfo";
public static final @android.annotation.NonNull Parcelable.Creator<DvbDeviceInfo> CREATOR =
public static final @NonNull Parcelable.Creator<DvbDeviceInfo> CREATOR =
new Parcelable.Creator<DvbDeviceInfo>() {
@Override
public DvbDeviceInfo createFromParcel(Parcel source) {
@@ -86,7 +89,7 @@ public final class DvbDeviceInfo implements Parcelable {
}
@Override
public void writeToParcel(Parcel dest, int flags) {
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(mAdapterId);
dest.writeInt(mDeviceId);
}

View File

@@ -101,6 +101,12 @@ public final class TvInputManager {
*/
public static final int DVB_DEVICE_FRONTEND = DVB_DEVICE_END;
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef({DVB_DEVICE_DEMUX, DVB_DEVICE_DVR, DVB_DEVICE_FRONTEND})
public @interface DvbDeviceType {}
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef({VIDEO_UNAVAILABLE_REASON_UNKNOWN, VIDEO_UNAVAILABLE_REASON_TUNING,
@@ -1663,6 +1669,9 @@ public final class TvInputManager {
* @return the list of {@link DvbDeviceInfo} objects representing available DVB devices.
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.DVB_DEVICE)
@NonNull
public List<DvbDeviceInfo> getDvbDeviceList() {
try {
return mService.getDvbDeviceList();
@@ -1676,19 +1685,24 @@ public final class TvInputManager {
* {@link DvbDeviceInfo}
*
* @param info A {@link DvbDeviceInfo} to open a DVB device.
* @param device A DVB device. The DVB device can be {@link #DVB_DEVICE_DEMUX},
* @param deviceType A DVB device type. The type can be {@link #DVB_DEVICE_DEMUX},
* {@link #DVB_DEVICE_DVR} or {@link #DVB_DEVICE_FRONTEND}.
* @return a {@link ParcelFileDescriptor} of a specified DVB device for a given
* {@link DvbDeviceInfo}, or {@code null} if the given {@link DvbDeviceInfo} was invalid
* or the specified DVB device was busy with a previous request.
* {@link DvbDeviceInfo}, or {@code null} if the given {@link DvbDeviceInfo}
* failed to open.
* @throws IllegalArgumentException if {@code deviceType} is invalid or the device is not found.
* @hide
*/
public ParcelFileDescriptor openDvbDevice(DvbDeviceInfo info, int device) {
@SystemApi
@RequiresPermission(android.Manifest.permission.DVB_DEVICE)
@Nullable
public ParcelFileDescriptor openDvbDevice(@NonNull DvbDeviceInfo info,
@DvbDeviceType int deviceType) {
try {
if (DVB_DEVICE_START > device || DVB_DEVICE_END < device) {
throw new IllegalArgumentException("Invalid DVB device: " + device);
if (DVB_DEVICE_START > deviceType || DVB_DEVICE_END < deviceType) {
throw new IllegalArgumentException("Invalid DVB device: " + deviceType);
}
return mService.openDvbDevice(info, device);
return mService.openDvbDevice(info, deviceType);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}

View File

@@ -1814,8 +1814,8 @@ public final class TvInputManagerService extends SystemService {
}
@Override
public ParcelFileDescriptor openDvbDevice(DvbDeviceInfo info, int device)
throws RemoteException {
public ParcelFileDescriptor openDvbDevice(DvbDeviceInfo info,
@TvInputManager.DvbDeviceType int deviceType) throws RemoteException {
if (mContext.checkCallingPermission(android.Manifest.permission.DVB_DEVICE)
!= PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Requires DVB_DEVICE permission");
@@ -1852,7 +1852,7 @@ public final class TvInputManagerService extends SystemService {
final long identity = Binder.clearCallingIdentity();
try {
String deviceFileName;
switch (device) {
switch (deviceType) {
case TvInputManager.DVB_DEVICE_DEMUX:
deviceFileName = String.format(dvbDeviceFound
? "/dev/dvb/adapter%d/demux%d" : "/dev/dvb%d.demux%d",
@@ -1869,14 +1869,14 @@ public final class TvInputManagerService extends SystemService {
info.getAdapterId(), info.getDeviceId());
break;
default:
throw new IllegalArgumentException("Invalid DVB device: " + device);
throw new IllegalArgumentException("Invalid DVB device: " + deviceType);
}
try {
// The DVB frontend device only needs to be opened in read/write mode, which
// allows performing tuning operations. The DVB demux and DVR device are enough
// to be opened in read only mode.
return ParcelFileDescriptor.open(new File(deviceFileName),
TvInputManager.DVB_DEVICE_FRONTEND == device
TvInputManager.DVB_DEVICE_FRONTEND == deviceType
? ParcelFileDescriptor.MODE_READ_WRITE
: ParcelFileDescriptor.MODE_READ_ONLY);
} catch (FileNotFoundException e) {