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

Commit 24250ef9 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk
Browse files

Deprecate onMetadataChanged.

All ProgramInfo changes are passed now by onProgramInfoChanged callback.

The onMetadataChanged callback is still called for compatibility reasons.

Bug: b/32621193
Test: instrumentalization (none added)
Change-Id: I80be8d3b55614c618514ac1e081a3ba60f4060b3
parent 8cfb0e81
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -17487,7 +17487,7 @@ package android.hardware.radio {
    method public void onControlChanged(boolean);
    method public void onEmergencyAnnouncement(boolean);
    method public void onError(int);
    method public void onMetadataChanged(android.hardware.radio.RadioMetadata);
    method public deprecated void onMetadataChanged(android.hardware.radio.RadioMetadata);
    method public void onProgramInfoChanged(android.hardware.radio.RadioManager.ProgramInfo);
    method public void onProgramListChanged();
    method public void onTrafficAnnouncement(boolean);
+1 −2
Original line number Diff line number Diff line
@@ -23,8 +23,7 @@ import android.hardware.radio.RadioMetadata;
oneway interface ITunerCallback {
    void onError(int status);
    void onConfigurationChanged(in RadioManager.BandConfig config);
    void onProgramInfoChanged(in RadioManager.ProgramInfo info);
    void onMetadataChanged(in RadioMetadata metadata);
    void onProgramInfoChanged();
    void onTrafficAnnouncement(boolean active);
    void onEmergencyAnnouncement(boolean active);
    void onAntennaState(boolean connected);
+2 −1
Original line number Diff line number Diff line
@@ -1560,7 +1560,7 @@ public class RadioManager {
        Log.d(TAG, "Opening tuner " + moduleId + "...");

        ITuner tuner;
        ITunerCallback halCallback = new TunerCallbackAdapter(callback, handler);
        TunerCallbackAdapter halCallback = new TunerCallbackAdapter(callback, handler);
        try {
            tuner = mService.openTuner(moduleId, config, withAudio, halCallback);
        } catch (RemoteException e) {
@@ -1571,6 +1571,7 @@ public class RadioManager {
            Log.e(TAG, "Failed to open tuner");
            return null;
        }
        halCallback.attachTuner(tuner);
        return new TunerAdapter(tuner, config != null ? config.getType() : BAND_INVALID);
    }

+13 −9
Original line number Diff line number Diff line
@@ -330,20 +330,24 @@ public abstract class RadioTuner {
         * or {@link RadioTuner#setConfiguration(RadioManager.BandConfig)}
         */
        public void onConfigurationChanged(RadioManager.BandConfig config) {}

        /**
         * onProgramInfoChanged() is called upon successful completion of
         * {@link RadioTuner#step(int, boolean)}, {@link RadioTuner#scan(int, boolean)},
         * {@link RadioTuner#tune(int, int)} or when a switching to alternate frequency occurs.
         * Note that if metadata only are updated,  {@link #onMetadataChanged(RadioMetadata)} will
         * be called.
         * Called when program info (including metadata) for the current program has changed.
         *
         * It happens either upon successful completion of {@link RadioTuner#step(int, boolean)},
         * {@link RadioTuner#scan(int, boolean)}, {@link RadioTuner#tune(int, int)}; when
         * a switching to alternate frequency occurs; or when metadata is updated.
         */
        public void onProgramInfoChanged(RadioManager.ProgramInfo info) {}

        /**
         * onMetadataChanged() is called when new meta data are received on current program.
         * Meta data are also received in {@link RadioManager.ProgramInfo} when
         *  {@link #onProgramInfoChanged(RadioManager.ProgramInfo)} is called.
         * Called when metadata is updated for the current program.
         *
         * @deprecated Use {@link #onProgramInfoChanged(RadioManager.ProgramInfo)} instead.
         */
        @Deprecated
        public void onMetadataChanged(RadioMetadata metadata) {}

        /**
         * onTrafficAnnouncement() is called when a traffic announcement starts and stops.
         */
@@ -386,7 +390,7 @@ public abstract class RadioTuner {
        /**
         * Called when available program list changed.
         *
         * Use getProgramList() to get the actual list.
         * Use {@link RadioTuner#getProgramList(String)} to get an actual list.
         */
        public void onProgramListChanged() {}
    }
+37 −6
Original line number Diff line number Diff line
@@ -20,13 +20,21 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Log;

/**
 * Implements the ITunerCallback interface by forwarding calls to RadioTuner.Callback.
 */
class TunerCallbackAdapter extends ITunerCallback.Stub {
    private static final String TAG = "radio.TunerCallbackAdapter";

    @NonNull private final RadioTuner.Callback mCallback;
    @NonNull private final Handler mHandler;
    private final Object mLock = new Object();

    @Nullable private ITuner mTuner;
    boolean mPendingProgramInfoChanged = false;

    TunerCallbackAdapter(@NonNull RadioTuner.Callback callback, @Nullable Handler handler) {
        mCallback = callback;
@@ -37,6 +45,14 @@ class TunerCallbackAdapter extends ITunerCallback.Stub {
        }
    }

    public void attachTuner(@NonNull ITuner tuner) {
        synchronized (mLock) {
            if (mTuner != null) throw new IllegalStateException();
            mTuner = tuner;
            if (mPendingProgramInfoChanged) onProgramInfoChanged();
        }
    }

    @Override
    public void onError(int status) {
        mHandler.post(() -> mCallback.onError(status));
@@ -48,13 +64,28 @@ class TunerCallbackAdapter extends ITunerCallback.Stub {
    }

    @Override
    public void onProgramInfoChanged(RadioManager.ProgramInfo info) {
        mHandler.post(() -> mCallback.onProgramInfoChanged(info));
    public void onProgramInfoChanged() {
        synchronized (mLock) {
            if (mTuner == null) {
                mPendingProgramInfoChanged = true;
                return;
            }
        }

    @Override
    public void onMetadataChanged(RadioMetadata metadata) {
        mHandler.post(() -> mCallback.onMetadataChanged(metadata));
        RadioManager.ProgramInfo info;
        try {
            info = mTuner.getProgramInformation();
        } catch (RemoteException e) {
            Log.e(TAG, "service died", e);
            return;
        }

        mHandler.post(() -> {
            mCallback.onProgramInfoChanged(info);

            RadioMetadata metadata = info.getMetadata();
            if (metadata != null) mCallback.onMetadataChanged(metadata);
        });
    }

    @Override
Loading