diff options
Diffstat (limited to 'android/telephony/mbms/DownloadStateCallback.java')
-rw-r--r-- | android/telephony/mbms/DownloadStateCallback.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/android/telephony/mbms/DownloadStateCallback.java b/android/telephony/mbms/DownloadStateCallback.java index 86920bd3..892fbf07 100644 --- a/android/telephony/mbms/DownloadStateCallback.java +++ b/android/telephony/mbms/DownloadStateCallback.java @@ -16,8 +16,12 @@ package android.telephony.mbms; +import android.annotation.IntDef; import android.telephony.MbmsDownloadSession; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * A optional listener class used by download clients to track progress. Apps should extend this * class and pass an instance into @@ -29,6 +33,71 @@ import android.telephony.MbmsDownloadSession; public class DownloadStateCallback { /** + * Bitmask flags used for filtering out callback methods. Used when constructing the + * DownloadStateCallback as an optional parameter. + * @hide + */ + @Retention(RetentionPolicy.SOURCE) + @IntDef({ALL_UPDATES, PROGRESS_UPDATES, STATE_UPDATES}) + public @interface FilterFlag {} + + /** + * Receive all callbacks. + * Default value. + */ + public static final int ALL_UPDATES = 0x00; + /** + * Receive callbacks for {@link #onProgressUpdated}. + */ + public static final int PROGRESS_UPDATES = 0x01; + /** + * Receive callbacks for {@link #onStateUpdated}. + */ + public static final int STATE_UPDATES = 0x02; + + private final int mCallbackFilterFlags; + + /** + * Creates a DownloadStateCallback that will receive all callbacks. + */ + public DownloadStateCallback() { + mCallbackFilterFlags = ALL_UPDATES; + } + + /** + * Creates a DownloadStateCallback that will only receive callbacks for the methods specified + * via the filterFlags parameter. + * @param filterFlags A bitmask of filter flags that will specify which callback this instance + * is interested in. + */ + public DownloadStateCallback(int filterFlags) { + mCallbackFilterFlags = filterFlags; + } + + /** + * Return the currently set filter flags. + * @return An integer containing the bitmask of flags that this instance is interested in. + * @hide + */ + public int getCallbackFilterFlags() { + return mCallbackFilterFlags; + } + + /** + * Returns true if a filter flag is set for a particular callback method. If the flag is set, + * the callback will be delivered to the listening process. + * @param flag A filter flag specifying whether or not a callback method is registered to + * receive callbacks. + * @return true if registered to receive callbacks in the listening process, false if not. + */ + public final boolean isFilterFlagSet(@FilterFlag int flag) { + if (mCallbackFilterFlags == ALL_UPDATES) { + return true; + } + return (mCallbackFilterFlags & flag) > 0; + } + + /** * Called when the middleware wants to report progress for a file in a {@link DownloadRequest}. * * @param request a {@link DownloadRequest}, indicating which download is being referenced. |