Merge "Add digital radio flags to ProgramInfo API."
This commit is contained in:
committed by
Android (Google) Code Review
commit
60932a32f1
@@ -1149,21 +1149,27 @@ public class RadioManager {
|
||||
* {@link RadioTuner#getProgramInformation(RadioManager.ProgramInfo[])} */
|
||||
public static class ProgramInfo implements Parcelable {
|
||||
|
||||
// sourced from hardware/interfaces/broadcastradio/1.1/types.hal
|
||||
private final static int FLAG_LIVE = 1 << 0;
|
||||
private final static int FLAG_MUTED = 1 << 1;
|
||||
|
||||
private final int mChannel;
|
||||
private final int mSubChannel;
|
||||
private final boolean mTuned;
|
||||
private final boolean mStereo;
|
||||
private final boolean mDigital;
|
||||
private final int mFlags;
|
||||
private final int mSignalStrength;
|
||||
private final RadioMetadata mMetadata;
|
||||
|
||||
ProgramInfo(int channel, int subChannel, boolean tuned, boolean stereo,
|
||||
boolean digital, int signalStrength, RadioMetadata metadata) {
|
||||
boolean digital, int signalStrength, RadioMetadata metadata, int flags) {
|
||||
mChannel = channel;
|
||||
mSubChannel = subChannel;
|
||||
mTuned = tuned;
|
||||
mStereo = stereo;
|
||||
mDigital = digital;
|
||||
mFlags = flags;
|
||||
mSignalStrength = signalStrength;
|
||||
mMetadata = metadata;
|
||||
}
|
||||
@@ -1199,6 +1205,30 @@ public class RadioManager {
|
||||
public boolean isDigital() {
|
||||
return mDigital;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code true} if the program is currently playing live stream.
|
||||
* This may result in a slightly altered reception parameters,
|
||||
* usually targetted at reduced latency.
|
||||
*
|
||||
* @hide FutureFeature
|
||||
*/
|
||||
public boolean isLive() {
|
||||
return (mFlags & FLAG_LIVE) != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code true} if radio stream is not playing, ie. due to bad reception
|
||||
* conditions or buffering. In this state volume knob MAY be disabled to
|
||||
* prevent user increasing volume too much.
|
||||
* It does NOT mean the user has muted audio.
|
||||
*
|
||||
* @hide FutureFeature
|
||||
*/
|
||||
public boolean isMuted() {
|
||||
return (mFlags & FLAG_MUTED) != 0;
|
||||
}
|
||||
|
||||
/** Signal strength indicator from 0 (no signal) to 100 (excellent)
|
||||
* @return the signal strength indication.
|
||||
*/
|
||||
@@ -1225,6 +1255,7 @@ public class RadioManager {
|
||||
} else {
|
||||
mMetadata = null;
|
||||
}
|
||||
mFlags = in.readInt();
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<ProgramInfo> CREATOR
|
||||
@@ -1252,6 +1283,7 @@ public class RadioManager {
|
||||
dest.writeByte((byte)1);
|
||||
mMetadata.writeToParcel(dest, flags);
|
||||
}
|
||||
dest.writeInt(mFlags);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1263,7 +1295,7 @@ public class RadioManager {
|
||||
public String toString() {
|
||||
return "ProgramInfo [mChannel=" + mChannel + ", mSubChannel=" + mSubChannel
|
||||
+ ", mTuned=" + mTuned + ", mStereo=" + mStereo + ", mDigital=" + mDigital
|
||||
+ ", mSignalStrength=" + mSignalStrength
|
||||
+ ", mFlags=" + mFlags + ", mSignalStrength=" + mSignalStrength
|
||||
+ ((mMetadata == null) ? "" : (", mMetadata=" + mMetadata.toString()))
|
||||
+ "]";
|
||||
}
|
||||
@@ -1277,6 +1309,7 @@ public class RadioManager {
|
||||
result = prime * result + (mTuned ? 1 : 0);
|
||||
result = prime * result + (mStereo ? 1 : 0);
|
||||
result = prime * result + (mDigital ? 1 : 0);
|
||||
result = prime * result + mFlags;
|
||||
result = prime * result + mSignalStrength;
|
||||
result = prime * result + ((mMetadata == null) ? 0 : mMetadata.hashCode());
|
||||
return result;
|
||||
@@ -1299,6 +1332,8 @@ public class RadioManager {
|
||||
return false;
|
||||
if (mDigital != other.isDigital())
|
||||
return false;
|
||||
if (mFlags != other.mFlags)
|
||||
return false;
|
||||
if (mSignalStrength != other.getSignalStrength())
|
||||
return false;
|
||||
if (mMetadata == null) {
|
||||
|
||||
@@ -325,11 +325,12 @@ static jint convertProgramInfoFromNative(JNIEnv *env,
|
||||
|
||||
ALOGV("%s channel %d tuned %d", __FUNCTION__, nProgramInfo->channel, nProgramInfo->tuned);
|
||||
|
||||
int flags = 0; // TODO(b/32621193): pass from the HAL
|
||||
*jProgramInfo = env->NewObject(gRadioProgramInfoClass, gRadioProgramInfoCstor,
|
||||
nProgramInfo->channel, nProgramInfo->sub_channel,
|
||||
nProgramInfo->tuned, nProgramInfo->stereo,
|
||||
nProgramInfo->digital, nProgramInfo->signal_strength,
|
||||
jMetadata);
|
||||
jMetadata, flags);
|
||||
|
||||
env->DeleteLocalRef(jMetadata);
|
||||
return (jint)RADIO_STATUS_OK;
|
||||
@@ -932,7 +933,7 @@ int register_android_hardware_Radio(JNIEnv *env)
|
||||
jclass programInfoClass = FindClassOrDie(env, kRadioProgramInfoClassPathName);
|
||||
gRadioProgramInfoClass = MakeGlobalRefOrDie(env, programInfoClass);
|
||||
gRadioProgramInfoCstor = GetMethodIDOrDie(env, programInfoClass, "<init>",
|
||||
"(IIZZZILandroid/hardware/radio/RadioMetadata;)V");
|
||||
"(IIZZZILandroid/hardware/radio/RadioMetadata;I)V");
|
||||
|
||||
jclass metadataClass = FindClassOrDie(env, kRadioMetadataClassPathName);
|
||||
gRadioMetadataClass = MakeGlobalRefOrDie(env, metadataClass);
|
||||
|
||||
Reference in New Issue
Block a user