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

Commit 60932a32 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Android (Google) Code Review
Browse files

Merge "Add digital radio flags to ProgramInfo API."

parents 9ae3e79a 5fb600b1
Loading
Loading
Loading
Loading
+37 −2
Original line number Diff line number Diff line
@@ -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) {
+3 −2
Original line number Diff line number Diff line
@@ -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);