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

Commit c4cd823a authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Fill announcement-related gaps in Broadcast Radio APIs.

- adds TA and TP flags to ProgramInfo struct
- adds a callback to cancel announcement

Bug: b/63702941
Test: Instrumentalization, VTS
Change-Id: I09317c8ee837ee3f522037d0a727b095ef9a87a6
parent 24250ef9
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -17399,6 +17399,8 @@ package android.hardware.radio {
    method public boolean isLive();
    method public boolean isMuted();
    method public boolean isStereo();
    method public boolean isTrafficAnnouncementActive();
    method public boolean isTrafficProgram();
    method public boolean isTuned();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.hardware.radio.RadioManager.ProgramInfo> CREATOR;
@@ -17451,6 +17453,7 @@ package android.hardware.radio {
  public abstract class RadioTuner {
    ctor public RadioTuner();
    method public abstract int cancel();
    method public abstract void cancelAnnouncement();
    method public abstract void close();
    method public abstract int getConfiguration(android.hardware.radio.RadioManager.BandConfig[]);
    method public abstract boolean getMute();
+2 −0
Original line number Diff line number Diff line
@@ -60,6 +60,8 @@ interface ITuner {
     */
    void cancel();

    void cancelAnnouncement();

    RadioManager.ProgramInfo getProgramInformation();

    /**
+20 −2
Original line number Diff line number Diff line
@@ -1267,8 +1267,10 @@ public class RadioManager {
    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 static final int FLAG_LIVE = 1 << 0;
        private static final int FLAG_MUTED = 1 << 1;
        private static final int FLAG_TRAFFIC_PROGRAM = 1 << 2;
        private static final int FLAG_TRAFFIC_ANNOUNCEMENT = 1 << 3;

        @NonNull private final ProgramSelector mSelector;
        private final boolean mTuned;
@@ -1369,6 +1371,22 @@ public class RadioManager {
            return (mFlags & FLAG_MUTED) != 0;
        }

        /**
         * {@code true} if radio station transmits traffic information
         * regularily.
         */
        public boolean isTrafficProgram() {
            return (mFlags & FLAG_TRAFFIC_PROGRAM) != 0;
        }

        /**
         * {@code true} if radio station transmits traffic information
         * at the very moment.
         */
        public boolean isTrafficAnnouncementActive() {
            return (mFlags & FLAG_TRAFFIC_ANNOUNCEMENT) != 0;
        }

        /** Signal strength indicator from 0 (no signal) to 100 (excellent)
         * @return the signal strength indication.
         */
+11 −0
Original line number Diff line number Diff line
@@ -202,6 +202,17 @@ public abstract class RadioTuner {
     */
    public abstract int cancel();

    /**
     * Cancels traffic or emergency announcement.
     *
     * If there was no announcement to cancel, no action is taken.
     *
     * There is a race condition between calling cancelAnnouncement and the actual announcement
     * being finished, so onTrafficAnnouncement / onEmergencyAnnouncement callback should be
     * tracked with proper locking.
     */
    public abstract void cancelAnnouncement();

    /**
     * Get current station information.
     * @param info a ProgramInfo array of lengh 1 where the information is returned.
+9 −0
Original line number Diff line number Diff line
@@ -179,6 +179,15 @@ class TunerAdapter extends RadioTuner {
        return RadioManager.STATUS_OK;
    }

    @Override
    public void cancelAnnouncement() {
        try {
            mTuner.cancelAnnouncement();
        } catch (RemoteException e) {
            throw new RuntimeException("service died", e);
        }
    }

    @Override
    public int getProgramInformation(RadioManager.ProgramInfo[] info) {
        if (info == null || info.length != 1) {
Loading