Loading api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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); core/java/android/hardware/radio/ITunerCallback.aidl +1 −2 Original line number Diff line number Diff line Loading @@ -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); Loading core/java/android/hardware/radio/RadioManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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); } Loading core/java/android/hardware/radio/RadioTuner.java +13 −9 Original line number Diff line number Diff line Loading @@ -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. */ Loading Loading @@ -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() {} } Loading core/java/android/hardware/radio/TunerCallbackAdapter.java +37 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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)); Loading @@ -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 Loading
api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -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);
core/java/android/hardware/radio/ITunerCallback.aidl +1 −2 Original line number Diff line number Diff line Loading @@ -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); Loading
core/java/android/hardware/radio/RadioManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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); } Loading
core/java/android/hardware/radio/RadioTuner.java +13 −9 Original line number Diff line number Diff line Loading @@ -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. */ Loading Loading @@ -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() {} } Loading
core/java/android/hardware/radio/TunerCallbackAdapter.java +37 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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)); Loading @@ -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