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

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

Merge "Deprecate onMetadataChanged."

parents 38d9ee4c 24250ef9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -17490,7 +17490,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