Tuner Java API: minor changes per API review feedback

The feedback is b/149341923

Bug: 149341923
Test: make;
Change-Id: I54f98b2531c73f341ff49d29878e6e30d9d4b105
This commit is contained in:
shubang
2020-02-13 17:52:47 -08:00
parent 0d8fea17d3
commit c090b6db71
6 changed files with 77 additions and 27 deletions

View File

@@ -4826,7 +4826,7 @@ package android.media.tv.tuner {
method public int getAudioFilterCount();
method public int getDemuxCount();
method public int getFilterCapabilities();
method @Nullable @Size(5) public int[] getLinkCapabilities();
method @NonNull @Size(5) public int[] getLinkCapabilities();
method public int getPcrFilterCount();
method public int getPesFilterCount();
method public int getPlaybackCount();
@@ -4842,7 +4842,7 @@ package android.media.tv.tuner {
method public int addPid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
method public void close();
method public int removePid(int, int, @Nullable android.media.tv.tuner.filter.Filter);
method public int setKeyToken(@Nullable byte[]);
method public int setKeyToken(@NonNull byte[]);
field public static final int PID_TYPE_MMTP = 2; // 0x2
field public static final int PID_TYPE_T = 1; // 0x1
}
@@ -4879,10 +4879,11 @@ package android.media.tv.tuner {
}
public class Tuner implements java.lang.AutoCloseable {
ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @NonNull String, int, @Nullable android.media.tv.tuner.Tuner.OnResourceLostListener);
ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @Nullable String, int);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int cancelScanning();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int cancelTuning();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void clearOnTuneEventListener();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void clearResourceLostListener();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void close();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int connectCiCam(int);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int disconnectCiCam();
@@ -4892,15 +4893,16 @@ package android.media.tv.tuner {
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.dvr.DvrPlayback openDvrPlayback(long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.dvr.DvrRecorder openDvrRecorder(long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.dvr.OnRecordStatusChangedListener);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.dvr.DvrPlayback openDvrPlayback(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.dvr.DvrRecorder openDvrRecorder(long, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.dvr.OnRecordStatusChangedListener);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.filter.Filter openFilter(int, int, long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.filter.FilterCallback);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.Lnb openLnb(@Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.LnbCallback);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.Lnb openLnbByName(@Nullable String, @Nullable java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.Lnb openLnb(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.Lnb openLnbByName(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.LnbCallback);
method @Nullable public android.media.tv.tuner.filter.TimeFilter openTimeFilter();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int scan(@NonNull android.media.tv.tuner.frontend.FrontendSettings, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.ScanCallback);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int setLna(boolean);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int setLnaEnabled(boolean);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void setResourceLostListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.Tuner.OnResourceLostListener);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void updateResourcePriority(int, int);

View File

@@ -18,7 +18,7 @@ package android.media.tv.tuner;
import android.annotation.BytesLong;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.NonNull;
import android.annotation.Size;
import android.annotation.SystemApi;
import android.media.tv.tuner.filter.Filter;
@@ -159,7 +159,7 @@ public class DemuxCapabilities {
* {@link FilterConfiguration}.
* <p>The ith element represents the filter's capability as the source for the ith type.
*/
@Nullable
@NonNull
@Size(5)
public int[] getLinkCapabilities() {
return mLinkCaps;

View File

@@ -17,12 +17,15 @@
package android.media.tv.tuner;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.media.tv.tuner.TunerConstants.Result;
import android.media.tv.tuner.filter.Filter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
/**
* This class is used to interact with descramblers.
@@ -75,6 +78,7 @@ public class Descrambler implements AutoCloseable {
* @param filter an optional filter instance to identify upper stream.
* @return result status of the operation.
*/
@Result
public int addPid(@PidType int pidType, int pid, @Nullable Filter filter) {
return nativeAddPid(pidType, pid, filter);
}
@@ -89,6 +93,7 @@ public class Descrambler implements AutoCloseable {
* @param filter an optional filter instance to identify upper stream.
* @return result status of the operation.
*/
@Result
public int removePid(@PidType int pidType, int pid, @Nullable Filter filter) {
return nativeRemovePid(pidType, pid, filter);
}
@@ -102,7 +107,9 @@ public class Descrambler implements AutoCloseable {
* @param keyToken the token to be used to link the key slot.
* @return result status of the operation.
*/
public int setKeyToken(@Nullable byte[] keyToken) {
@Result
public int setKeyToken(@NonNull byte[] keyToken) {
Objects.requireNonNull(keyToken, "key token must not be null");
return nativeSetKeyToken(keyToken);
}

View File

@@ -37,6 +37,7 @@ import android.media.tv.tuner.filter.TimeFilter;
import android.media.tv.tuner.frontend.FrontendInfo;
import android.media.tv.tuner.frontend.FrontendSettings;
import android.media.tv.tuner.frontend.FrontendStatus;
import android.media.tv.tuner.frontend.FrontendStatus.FrontendStatusType;
import android.media.tv.tuner.frontend.OnTuneEventListener;
import android.media.tv.tuner.frontend.ScanCallback;
import android.os.Handler;
@@ -44,6 +45,7 @@ import android.os.Looper;
import android.os.Message;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;
/**
@@ -87,6 +89,10 @@ public class Tuner implements AutoCloseable {
private ScanCallback mScanCallback;
@Nullable
private Executor mScanCallbackExecutor;
@Nullable
private OnResourceLostListener mOnResourceLostListener;
@Nullable
private Executor mOnResourceLostListenerExecutor;
/**
* Constructs a Tuner instance.
@@ -96,13 +102,36 @@ public class Tuner implements AutoCloseable {
* @param useCase the use case of this Tuner instance.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
public Tuner(@NonNull Context context, @NonNull String tvInputSessionId,
@TvInputService.PriorityHintUseCaseType int useCase,
@Nullable OnResourceLostListener listener) {
public Tuner(@NonNull Context context, @Nullable String tvInputSessionId,
@TvInputService.PriorityHintUseCaseType int useCase) {
nativeSetup();
mContext = context;
}
/**
* Sets the listener for resource lost.
*
* @param executor the executor on which the listener should be invoked.
* @param listener the listener that will be run.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
public void setResourceLostListener(@NonNull @CallbackExecutor Executor executor,
@NonNull OnResourceLostListener listener) {
Objects.requireNonNull(executor, "OnResourceLostListener must not be null");
Objects.requireNonNull(listener, "executor must not be null");
mOnResourceLostListener = listener;
mOnResourceLostListenerExecutor = executor;
}
/**
* Removes the listener for resource lost.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
public void clearResourceLostListener() {
mOnResourceLostListener = null;
mOnResourceLostListenerExecutor = null;
}
/**
* Shares the frontend resource with another Tuner instance
*
@@ -386,7 +415,7 @@ public class Tuner implements AutoCloseable {
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
@Result
public int setLna(boolean enable) {
public int setLnaEnabled(boolean enable) {
TunerUtils.checkTunerPermission(mContext);
return nativeSetLna(enable);
}
@@ -397,10 +426,10 @@ public class Tuner implements AutoCloseable {
* <p>This retrieve the statuses of the frontend for given status types.
*
* @param statusTypes an array of status types which the caller requests.
* @return statuses which response the caller's requests.
* @return statuses which response the caller's requests. {@code null} if the operation failed.
*/
@Nullable
public FrontendStatus getFrontendStatus(@NonNull int[] statusTypes) {
public FrontendStatus getFrontendStatus(@NonNull @FrontendStatusType int[] statusTypes) {
return nativeGetFrontendStatus(statusTypes);
}
@@ -481,6 +510,10 @@ public class Tuner implements AutoCloseable {
/**
* Gets Demux capabilities.
*
* @param context the context of the caller.
* @return A {@link DemuxCapabilities} instance that represents the demux capabilities.
* {@code null} if the operation failed.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
@Nullable
@@ -552,13 +585,15 @@ public class Tuner implements AutoCloseable {
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
@Nullable
public Lnb openLnb(@CallbackExecutor @Nullable Executor executor, @Nullable LnbCallback cb) {
public Lnb openLnb(@CallbackExecutor @NonNull Executor executor, @NonNull LnbCallback cb) {
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(cb, "LnbCallback must not be null");
TunerUtils.checkTunerPermission(mContext);
return openLnbByName(null, executor, cb);
}
/**
* Opens an LNB (low-noise block downconverter) object.
* Opens an LNB (low-noise block downconverter) object specified by the give name.
*
* @param name the LNB name.
* @param executor the executor on which callback will be invoked. The default event handler
@@ -568,8 +603,10 @@ public class Tuner implements AutoCloseable {
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
@Nullable
public Lnb openLnbByName(@Nullable String name, @CallbackExecutor @Nullable Executor executor,
public Lnb openLnbByName(@NonNull String name, @CallbackExecutor @NonNull Executor executor,
@NonNull LnbCallback cb) {
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(cb, "LnbCallback must not be null");
TunerUtils.checkTunerPermission(mContext);
// TODO: use resource manager to get LNB ID.
return new Lnb(0);
@@ -633,8 +670,10 @@ public class Tuner implements AutoCloseable {
@Nullable
public DvrRecorder openDvrRecorder(
@BytesLong long bufferSize,
@CallbackExecutor @Nullable Executor executor,
@Nullable OnRecordStatusChangedListener l) {
@CallbackExecutor @NonNull Executor executor,
@NonNull OnRecordStatusChangedListener l) {
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(l, "OnRecordStatusChangedListener must not be null");
TunerUtils.checkTunerPermission(mContext);
DvrRecorder dvr = nativeOpenDvrRecorder(bufferSize);
return dvr;
@@ -654,8 +693,10 @@ public class Tuner implements AutoCloseable {
@Nullable
public DvrPlayback openDvrPlayback(
@BytesLong long bufferSize,
@CallbackExecutor @Nullable Executor executor,
@Nullable OnPlaybackStatusChangedListener l) {
@CallbackExecutor @NonNull Executor executor,
@NonNull OnPlaybackStatusChangedListener l) {
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(l, "OnPlaybackStatusChangedListener must not be null");
TunerUtils.checkTunerPermission(mContext);
DvrPlayback dvr = nativeOpenDvrPlayback(bufferSize);
return dvr;

View File

@@ -53,7 +53,7 @@ public interface ScanCallback {
void onInputStreamIds(@NonNull int[] inputStreamIds);
/** Locked signal standard for DVBS. */
void onDvbsStandard(@DvbsFrontendSettings.Standard int dvbsStandandard);
void onDvbsStandard(@DvbsFrontendSettings.Standard int dvbsStandard);
/** Locked signal standard. for DVBT */
void onDvbtStandard(@DvbtFrontendSettings.Standard int dvbtStandard);

View File

@@ -48,13 +48,13 @@ public class TunerTest {
@Test
public void testTunerConstructor() throws Exception {
Tuner tuner = new Tuner(mContext, "123", 1, null);
Tuner tuner = new Tuner(mContext, "123", 1);
assertNotNull(tuner);
}
@Test
public void testOpenDescrambler() throws Exception {
Tuner tuner = new Tuner(mContext, "123", 1, null);
Tuner tuner = new Tuner(mContext, "123", 1);
Descrambler descrambler = tuner.openDescrambler();
assertNotNull(descrambler);
}