Merge changes from topic "frinfo"
* changes: Add comparator for FrontendInfo Expose FrontendInfo list of all the existed Frontends in Tuner java
This commit is contained in:
@@ -5092,6 +5092,7 @@ package android.media.tv.tuner {
|
||||
method public long getAvSyncTime(int);
|
||||
method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
|
||||
method @Nullable public java.util.List<android.media.tv.tuner.frontend.FrontendInfo> getFrontendInfoList();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
|
||||
method public int linkFrontendToCiCam(int);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
|
||||
|
||||
@@ -5032,6 +5032,7 @@ package android.media.tv.tuner {
|
||||
method public long getAvSyncTime(int);
|
||||
method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
|
||||
method @Nullable public java.util.List<android.media.tv.tuner.frontend.FrontendInfo> getFrontendInfoList();
|
||||
method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
|
||||
method public int linkFrontendToCiCam(int);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_DESCRAMBLER) public android.media.tv.tuner.Descrambler openDescrambler();
|
||||
|
||||
@@ -61,6 +61,7 @@ import com.android.internal.util.FrameworkStatsLog;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -369,6 +370,28 @@ public class Tuner implements AutoCloseable {
|
||||
mTunerResourceManager.setFrontendInfoList(infos);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get frontend info list from native and build them into a {@link FrontendInfo} list. Any
|
||||
* {@code null} FrontendInfo element would be removed.
|
||||
*/
|
||||
private FrontendInfo[] getFrontendInfoListInternal() {
|
||||
List<Integer> ids = getFrontendIds();
|
||||
if (ids == null) {
|
||||
return null;
|
||||
}
|
||||
FrontendInfo[] infos = new FrontendInfo[ids.size()];
|
||||
for (int i = 0; i < ids.size(); i++) {
|
||||
int id = ids.get(i);
|
||||
FrontendInfo frontendInfo = getFrontendInfoById(id);
|
||||
if (frontendInfo == null) {
|
||||
Log.e(TAG, "Failed to get a FrontendInfo on frontend id:" + id + "!");
|
||||
continue;
|
||||
}
|
||||
infos[i] = frontendInfo;
|
||||
}
|
||||
return Arrays.stream(infos).filter(Objects::nonNull).toArray(FrontendInfo[]::new);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public static int getTunerVersion() {
|
||||
return sTunerVersion;
|
||||
@@ -932,7 +955,7 @@ public class Tuner implements AutoCloseable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the frontend information.
|
||||
* Gets the initialized frontend information.
|
||||
*
|
||||
* @return The frontend information. {@code null} if the operation failed.
|
||||
*/
|
||||
@@ -950,6 +973,16 @@ public class Tuner implements AutoCloseable {
|
||||
return mFrontendInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list all the existed frontend information.
|
||||
*
|
||||
* @return The list of all the frontend information. {@code null} if the operation failed.
|
||||
*/
|
||||
@Nullable
|
||||
public List<FrontendInfo> getFrontendInfoList() {
|
||||
return Arrays.asList(getFrontendInfoListInternal());
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public FrontendInfo getFrontendInfoById(int id) {
|
||||
return nativeGetFrontendInfo(id);
|
||||
|
||||
@@ -22,6 +22,9 @@ import android.media.tv.tuner.frontend.FrontendSettings.Type;
|
||||
import android.media.tv.tuner.frontend.FrontendStatus.FrontendStatusType;
|
||||
import android.util.Range;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* This class is used to specify meta information of a frontend.
|
||||
*
|
||||
@@ -118,4 +121,30 @@ public class FrontendInfo {
|
||||
public FrontendCapabilities getFrontendCapabilities() {
|
||||
return mFrontendCap;
|
||||
}
|
||||
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || !(o instanceof FrontendInfo)) {
|
||||
return false;
|
||||
}
|
||||
// TODO: compare FrontendCapabilities
|
||||
FrontendInfo info = (FrontendInfo) o;
|
||||
return mId == info.getId() && mType == info.getType()
|
||||
&& Objects.equals(mFrequencyRange, info.getFrequencyRange())
|
||||
&& Objects.equals(mSymbolRateRange, info.getSymbolRateRange())
|
||||
&& mAcquireRange == info.getAcquireRange()
|
||||
&& mExclusiveGroupId == info.getExclusiveGroupId()
|
||||
&& Arrays.equals(mStatusCaps, info.getStatusCapabilities());
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return mId;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user