Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 74c4faa3 authored by Shubang Lu's avatar Shubang Lu Committed by Android (Google) Code Review
Browse files

Merge "Mark frontend APIs @SystemApi"

parents f8a45ea2 497fd605
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ package android {
    field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES";
    field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
    field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
    field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
    field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
    field public static final String ADJUST_RUNTIME_PERMISSIONS_POLICY = "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY";
    field public static final String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
@@ -4479,6 +4480,20 @@ package android.media.tv {
}
package android.media.tv.tuner {
  public abstract class FrontendSettings {
    method public final int getFrequency();
    method public abstract int getType();
  }
  public final class Tuner implements java.lang.AutoCloseable {
    ctor public Tuner(@NonNull android.content.Context);
    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int tune(@NonNull android.media.tv.tuner.FrontendSettings);
  }
}
package android.metrics {
  public class LogMaker {
+6 −0
Original line number Diff line number Diff line
@@ -4715,6 +4715,12 @@
    <permission android:name="android.permission.PEEK_DROPBOX_DATA"
        android:protectionLevel="signature" />

    <!-- @SystemApi Allows an application to access TV tuner HAL
         <p>Not for use by third-party applications.
         @hide -->
    <permission android:name="android.permission.ACCESS_TV_TUNER"
        android:protectionLevel="signature|privileged" />

    <application android:process="system"
                 android:persistent="true"
                 android:hasCode="false"
+58 −3
Original line number Diff line number Diff line
@@ -16,15 +16,22 @@

package android.media.tv.tuner;

import android.annotation.SystemApi;
import android.media.tv.tuner.TunerConstants.FrontendSettingsType;

import java.util.List;

/**
 * Frontend settings for tune and scan operations.
 * @hide
 */
@SystemApi
public abstract class FrontendSettings {
    protected int mFrequency;
    private final int mFrequency;

    FrontendSettings(int frequency) {
        mFrequency = frequency;
    }

    /**
     * Returns the frontend type.
@@ -32,7 +39,12 @@ public abstract class FrontendSettings {
    @FrontendSettingsType
    public abstract int getType();

    public int getFrequency() {
    /**
     * Gets the frequency setting.
     *
     * @return the frequency in Hz.
     */
    public final int getFrequency() {
        return mFrequency;
    }

@@ -42,6 +54,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for analog.
     * @hide
     */
    public static class FrontendAnalogSettings extends FrontendSettings {
        private int mAnalogType;
@@ -68,7 +81,7 @@ public abstract class FrontendSettings {
        }

        private FrontendAnalogSettings(int frequency, int analogType, int sifStandard) {
            mFrequency = frequency;
            super(frequency);
            mAnalogType = analogType;
            mSifStandard = sifStandard;
        }
@@ -118,10 +131,15 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for ATSC.
     * @hide
     */
    public static class FrontendAtscSettings extends FrontendSettings {
        public int modulation;

        FrontendAtscSettings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_ATSC;
@@ -130,12 +148,17 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for ATSC-3.
     * @hide
     */
    public static class FrontendAtsc3Settings extends FrontendSettings {
        public int bandwidth;
        public byte demodOutputFormat;
        public List<FrontendAtsc3PlpSettings> plpSettings;

        FrontendAtsc3Settings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_ATSC3;
@@ -144,6 +167,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for DVBS.
     * @hide
     */
    public static class FrontendDvbsSettings extends FrontendSettings {
        public int modulation;
@@ -154,6 +178,10 @@ public abstract class FrontendSettings {
        public int inputStreamId;
        public byte standard;

        FrontendDvbsSettings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_DVBS;
@@ -162,6 +190,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for DVBC.
     * @hide
     */
    public static class FrontendDvbcSettings extends FrontendSettings {
        public int modulation;
@@ -171,6 +200,10 @@ public abstract class FrontendSettings {
        public byte annex;
        public int spectralInversion;

        FrontendDvbcSettings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_DVBC;
@@ -179,6 +212,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for DVBT.
     * @hide
     */
    public static class FrontendDvbtSettings extends FrontendSettings {
        public int transmissionMode;
@@ -195,6 +229,10 @@ public abstract class FrontendSettings {
        public byte plpId;
        public byte plpGroupId;

        FrontendDvbtSettings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_DVBT;
@@ -203,6 +241,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for ISDBS.
     * @hide
     */
    public static class FrontendIsdbsSettings extends FrontendSettings {
        public int streamId;
@@ -212,6 +251,10 @@ public abstract class FrontendSettings {
        public int symbolRate;
        public int rolloff;

        FrontendIsdbsSettings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_ISDBS;
@@ -220,6 +263,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for ISDBS-3.
     * @hide
     */
    public static class FrontendIsdbs3Settings extends FrontendSettings {
        public int streamId;
@@ -229,6 +273,10 @@ public abstract class FrontendSettings {
        public int symbolRate;
        public int rolloff;

        FrontendIsdbs3Settings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_ISDBS3;
@@ -237,6 +285,7 @@ public abstract class FrontendSettings {

    /**
     * Frontend settings for ISDBT.
     * @hide
     */
    public static class FrontendIsdbtSettings extends FrontendSettings {
        public int modulation;
@@ -245,6 +294,10 @@ public abstract class FrontendSettings {
        public int guardInterval;
        public int serviceAreaId;

        FrontendIsdbtSettings(int frequency) {
            super(frequency);
        }

        @Override
        public int getType() {
            return TunerConstants.FRONTEND_TYPE_ISDBT;
@@ -253,6 +306,7 @@ public abstract class FrontendSettings {

    /**
     * PLP settings for ATSC-3.
     * @hide
     */
    public static class FrontendAtsc3PlpSettings {
        public byte plpId;
@@ -264,6 +318,7 @@ public abstract class FrontendSettings {

    /**
     * Code rate for DVBS.
     * @hide
     */
    public static class FrontendDvbsCodeRate {
        public long fec;
+52 −8
Original line number Diff line number Diff line
@@ -18,6 +18,10 @@ package android.media.tv.tuner;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.Context;
import android.content.pm.PackageManager;
import android.media.tv.tuner.TunerConstants.DemuxPidType;
import android.os.Handler;
import android.os.Looper;
@@ -26,14 +30,20 @@ import android.os.Message;
import java.util.List;

/**
 * Tuner is used to interact with tuner devices.
 * This class is used to interact with hardware tuners devices.
 *
 * <p> Each TvInputService Session should create one instance of this class.
 *
 * <p> This class controls the TIS interaction with Tuner HAL.
 *
 * @hide
 */
@SystemApi
public final class Tuner implements AutoCloseable  {
    private static final String TAG = "MediaTvTuner";
    private static final boolean DEBUG = false;

    private static final String PERMISSION = android.Manifest.permission.ACCESS_TV_TUNER;
    private static final int MSG_ON_FRONTEND_EVENT = 1;
    private static final int MSG_ON_FILTER_EVENT = 2;
    private static final int MSG_ON_FILTER_STATUS = 3;
@@ -44,6 +54,8 @@ public final class Tuner implements AutoCloseable {
        nativeInit();
    }

    private final Context mContext;

    private List<Integer> mFrontendIds;
    private Frontend mFrontend;
    private EventHandler mHandler;
@@ -51,12 +63,26 @@ public final class Tuner implements AutoCloseable {
    private List<Integer> mLnbIds;
    private Lnb mLnb;

    public Tuner() {
    /**
     * Constructs a Tuner instance.
     *
     * @param context context of the caller.
     */
    public Tuner(@NonNull Context context) {
        mContext = context;
        nativeSetup();
    }

    private void checkPermission() {
        if (mContext.checkCallingOrSelfPermission(PERMISSION)
                != PackageManager.PERMISSION_GRANTED) {
            throw new SecurityException("Caller must have " + PERMISSION + " permission.");
        }
    }

    private long mNativeContext; // used by native jMediaTuner

    /** @hide */
    @Override
    public void close() {}

@@ -92,6 +118,8 @@ public final class Tuner implements AutoCloseable {

    /**
     * Frontend Callback.
     *
     * @hide
     */
    public interface FrontendCallback {

@@ -103,6 +131,8 @@ public final class Tuner implements AutoCloseable {

    /**
     * LNB Callback.
     *
     * @hide
     */
    public interface LnbCallback {
        /**
@@ -113,6 +143,8 @@ public final class Tuner implements AutoCloseable {

    /**
     * Frontend Callback.
     *
     * @hide
     */
    public interface FilterCallback {
        /**
@@ -123,6 +155,8 @@ public final class Tuner implements AutoCloseable {

    /**
     * DVR Callback.
     *
     * @hide
     */
    public interface DvrCallback {
        /**
@@ -177,7 +211,7 @@ public final class Tuner implements AutoCloseable {
        }
    }

    protected class Frontend {
    private class Frontend {
        private int mId;
        private FrontendCallback mCallback;

@@ -210,9 +244,15 @@ public final class Tuner implements AutoCloseable {
    }

    /**
     * Tunes the frontend to using the settings given.
     * Tunes the frontend to the settings given.
     *
     * @return result status of tune operation.
     * @throws SecurityException if the caller does not have appropriate permissions.
     * TODO: add result constants or throw exceptions.
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    public int tune(@NonNull FrontendSettings settings) {
        checkPermission();
        return nativeTune(settings.getType(), settings);
    }

@@ -238,7 +278,8 @@ public final class Tuner implements AutoCloseable {
        }
    }

    protected class Filter {
    /** @hide */
    public class Filter {
        private long mNativeContext;
        private FilterCallback mCallback;
        int mId;
@@ -297,7 +338,8 @@ public final class Tuner implements AutoCloseable {
        return filter;
    }

    protected class Lnb {
    /** @hide */
    public class Lnb {
        private int mId;
        private LnbCallback mCallback;

@@ -338,7 +380,8 @@ public final class Tuner implements AutoCloseable {
        }
    }

    protected class Descrambler {
    /** @hide */
    public class Descrambler {
        private long mNativeContext;

        private native boolean nativeAddPid(int pidType, int pid, Filter filter);
@@ -362,7 +405,8 @@ public final class Tuner implements AutoCloseable {
    }

    // TODO: consider splitting Dvr to Playback and Recording
    protected class Dvr {
    /** @hide */
    public class Dvr {
        private long mNativeContext;
        private DvrCallback mCallback;