Merge "Mark DVB methods and classes as System APIs."
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user