diff options
27 files changed, 1579 insertions, 0 deletions
diff --git a/Android.mk b/Android.mk index 77ab10bfe94d..a2d70ce70506 100644 --- a/Android.mk +++ b/Android.mk @@ -433,6 +433,12 @@ LOCAL_SRC_FILES += \ telecomm/java/com/android/internal/telecom/IInCallService.aidl \ telecomm/java/com/android/internal/telecom/ITelecomService.aidl \ telecomm/java/com/android/internal/telecom/RemoteServiceCallback.aidl \ + telephony/java/android/telephony/mbms/IMbmsDownloadManagerListener.aidl \ + telephony/java/android/telephony/mbms/IMbmsStreamingManagerListener.aidl \ + telephony/java/android/telephony/mbms/IDownloadListener.aidl \ + telephony/java/android/telephony/mbms/IStreamingServiceListener.aidl \ + telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl \ + telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl \ telephony/java/com/android/ims/internal/IImsCallSession.aidl \ telephony/java/com/android/ims/internal/IImsCallSessionListener.aidl \ telephony/java/com/android/ims/internal/IImsConfig.aidl \ @@ -541,6 +547,13 @@ framework_built := $(call java-lib-deps,framework) include $(CLEAR_VARS) aidl_files := \ + frameworks/base/telephony/java/android/telephony/mbms/DownloadRequest.aidl \ + frameworks/base/telephony/java/android/telephony/mbms/DownloadStatus.aidl \ + frameworks/base/telephony/java/android/telephony/mbms/FileInfo.aidl \ + frameworks/base/telephony/java/android/telephony/mbms/FileServiceInfo.aidl \ + frameworks/base/telephony/java/android/telephony/mbms/ServiceInfo.aidl \ + frameworks/base/telephony/java/android/telephony/mbms/StreamingService.aidl \ + frameworks/base/telephony/java/android/telephony/mbms/StreamingServiceInfo.aidl \ frameworks/base/telephony/java/android/telephony/ServiceState.aidl \ frameworks/base/telephony/java/android/telephony/SubscriptionInfo.aidl \ frameworks/base/telephony/java/android/telephony/CellInfo.aidl \ diff --git a/telephony/java/android/telephony/MbmsDownloadManager.java b/telephony/java/android/telephony/MbmsDownloadManager.java new file mode 100644 index 000000000000..ad61d02cbace --- /dev/null +++ b/telephony/java/android/telephony/MbmsDownloadManager.java @@ -0,0 +1,149 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony; + +import android.app.PendingIntent; +import android.content.Context; +import android.net.Uri; +import android.telephony.mbms.DownloadListener; +import android.telephony.mbms.DownloadRequest; +import android.telephony.mbms.DownloadStatus; +import android.telephony.mbms.FileServiceInfo; +import android.telephony.mbms.IMbmsDownloadManagerListener; + +import java.util.List; + +import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; + +/** @hide */ +public class MbmsDownloadManager { + private final Context mContext; + private int mSubId = INVALID_SUBSCRIPTION_ID; + + /** + * should use createManager to create/initialize a copy + * @hide + */ + public MbmsDownloadManager(Context context) { + mContext = context; + } + + public static MbmsDownloadManager createManager(Context context, + IMbmsDownloadManagerListener listener, String downloadAppName) { +// MbmsDownloadManager mdm = context.getSystemService(Context.MBMS_DOWNLOAD_SERVICE); +// if (mdm == null) return mdm; +// mdm.initialize(listener, downloadAppName, +// SubscriptionManager.getDefaultSubscriptionId()); +// return mdm; + return null; + } + + public static MbmsDownloadManager createManager(Context context, + IMbmsDownloadManagerListener listener, String downloadAppName, int subId) { +// MbmsDownloadManager mdm = context.getSystemService(Context.MBMS_DOWNLOAD_SERVICE); +// if (mdm == null) return mdm; +// mdm.initialize(listener, downloadAppName, subId); +// return mdm; + return null; + } + + private void initialize(IMbmsDownloadManagerListener listener, String downloadAppName, + int subId) { + // assert all empty and set + } + + /** + * Gets the list of files published for download. + * They may occur at times far in the future. + * servicesClasses lets the app filter on types of files and is opaque data between + * the app and the carrier + */ + public int getFileServices(List<String> serviceClasses) { + return 0; + } + + + public static final String EXTRA_REQUEST = "extraRequest"; + + public static final int RESULT_SUCCESSFUL = 1; + public static final int RESULT_CANCELLED = 2; + public static final int RESULT_EXPIRED = 3; + // TODO - more results! + + public static final String EXTRA_RESULT = "extraResult"; + public static final String EXTRA_URI = "extraDownloadedUri"; + + /** + * Requests a future download. + * returns a token which may be used to cancel a download. + * fileServiceInfo indicates what FileService to download from + * source indicates which file to download from the given FileService. This is + * an optional field - it may be null or empty to indicate download everything from + * the FileService. + * destination is a file URI for where in the apps accessible storage locations to write + * the content. This URI may be used to store temporary data and should not be + * accessed until the PendingIntent is called indicating success. + * resultIntent is sent when each file is completed and when the request is concluded + * either via TTL expiration, cancel or error. + * This intent is sent with three extras: a {@link DownloadRequest} typed extra called + * {@link #EXTRA_REQUEST}, an Integer called {@link #EXTRA_RESULT} for the result code + * and a {@link Uri} called {@link #EXTRA_URI} to the resulting file (if successful). + * downloadListener is an optional callback object which can be used to get progress reports + * of a currently occuring download. Note this can only run while the calling app + * is running, so future downloads will simply result in resultIntents being sent + * for completed or errored-out downloads. A NULL indicates no callbacks are needed. + */ + public DownloadRequest download(DownloadRequest downloadRequest, DownloadListener listener) { + return null; + } + + public List<DownloadRequest> listPendingDownloads() { + return null; + } + + public int cancelDownload(DownloadRequest downloadRequest) { + return 0; + } + + /** + * Gets information about current and known upcoming downloads. + * + * Current is a straightforward count of the files being downloaded "now" + * for some definition of now (may be racey). + * Future downloads include counts of files with pending repair operations, counts of + * files with future downloads and indication of scheduled download times with unknown + * file details. + */ + public DownloadStatus getDownloadStatus(DownloadRequest downloadRequest) { + return null; + } + + /** + * Resets middleware knowldge regarding this download request. + * + * This state consists of knowledge of what files have already been downloaded. + * Normally the middleware won't download files who's hash matches previously downloaded + * content, even if that content has since been deleted. If this function is called + * repeated content will be downloaded again when available. This does not interrupt + * in-progress downloads. + */ + public void resetDownloadKnowledge(DownloadRequest downloadRequest) { + } + + public void dispose() { + } +} diff --git a/telephony/java/android/telephony/MbmsStreamingManager.java b/telephony/java/android/telephony/MbmsStreamingManager.java new file mode 100644 index 000000000000..0bcde2f371ce --- /dev/null +++ b/telephony/java/android/telephony/MbmsStreamingManager.java @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony; + +import android.content.Context; +import android.telephony.mbms.IMbmsStreamingManagerListener; +import android.telephony.mbms.IStreamingServiceListener; +import android.telephony.mbms.StreamingService; +import android.telephony.mbms.StreamingServiceInfo; +import android.util.Log; + +import java.util.List; + +import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID; + +/** @hide */ +public class MbmsStreamingManager { + private static final String LOG_TAG = "MbmsStreamingManager"; + private static final boolean DEBUG = true; + + private final Context mContext; + private int mSubId = INVALID_SUBSCRIPTION_ID; + + /** + * Create a new MbmsStreamingManager using the system default data subscription ID. + * + * Note that this call will bind a remote service and that may take a bit. This + * may throw an IllegalArgumentException. + */ + public MbmsStreamingManager(Context context, IMbmsStreamingManagerListener listener, + String streamingAppName) { + mContext = context; + } + + /** + * Create a new MbmsStreamingManager using the give subscription ID. + * + * Note that this call will bind a remote service and that may take a bit. This + * may throw an IllegalArgumentException. + */ + public MbmsStreamingManager(Context context, IMbmsStreamingManagerListener listener, + String streamingAppName, int subId) { + mContext = context; + } + + /** + * Terminates this instance, ending calls to the registered listener. Also terminates + * any streaming services spawned from this instance. + */ + public void dispose() { + // service.dispose(streamingAppName); + } + + /** + * An inspection API to retrieve the list of streaming media currently be advertised. + * The results are returned asynchronously through the previously registered callback. + * serviceClasses lets the app filter on types of programming and is opaque data between + * the app and the carrier. + * + * Multiple calls replace the list of serviceClasses of interest. + * The return value is a success/error-code with the following possible values: + * <li>SUCCESS</li> + * <li>NO_MIDDLEWARE</li> + * <li>QUEUE_LIMIT</li> + */ + public int getStreamingServices(List<String> classList) { + return 0; + } + + /** + * Starts streaming a requested service, reporting status to the indicated listener. + * Returns an object used to control that stream. + * + */ + public StreamingService startStreaming(StreamingServiceInfo serviceInfo, + IStreamingServiceListener listener) { + return null; + } + + /** + * Lists all the services currently being streamed to the device by this application + * on this given subId. Results are returned asynchronously through the previously + * registered callback. + * + * The return value is a success/error-code with the following possible values: + * <li>SUCCESS</li> + * <li>NO_MIDDLEWARE</li> + * <li>QUEU_LIMIT</li> + */ + public int getActiveStreamingServices() { + return 0; + } + + private void logd(String str) { + Log.d(LOG_TAG, str); + } +} diff --git a/telephony/java/android/telephony/mbms/DownloadListener.java b/telephony/java/android/telephony/mbms/DownloadListener.java new file mode 100644 index 000000000000..8d1bd024a5db --- /dev/null +++ b/telephony/java/android/telephony/mbms/DownloadListener.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +/** + * A optional listener class used by download clients to track progress. + * @hide + */ +public class DownloadListener extends IDownloadListener.Stub { + /** + * Gives process callbacks for a given DownloadRequest. + * request indicates which download is being referenced. + * fileInfo gives information about the file being downloaded. Note that + * the request may result in many files being downloaded and the client + * may not have been able to get a list of them in advance. + * downloadSize is the final amount to be downloaded. This may be different + * from the decoded final size, but is useful in gauging download progress. + * currentSize is the amount currently downloaded. + * decodedPercent is the percent from 0 to 100 of the file decoded. After the + * download completes the contents needs to be processed. It is perhaps + * uncompressed, transcoded and/or decrypted. Generally the download completes + * before the decode is started, but that's not required. + */ + public void progress(DownloadRequest request, FileInfo fileInfo, + int downloadSize, int currentSize, int decodedPercent) { + } +} diff --git a/telephony/java/android/telephony/mbms/DownloadRequest.aidl b/telephony/java/android/telephony/mbms/DownloadRequest.aidl new file mode 100755 index 000000000000..ece577d1a739 --- /dev/null +++ b/telephony/java/android/telephony/mbms/DownloadRequest.aidl @@ -0,0 +1,19 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable DownloadRequest; diff --git a/telephony/java/android/telephony/mbms/DownloadRequest.java b/telephony/java/android/telephony/mbms/DownloadRequest.java new file mode 100644 index 000000000000..42a82da94d31 --- /dev/null +++ b/telephony/java/android/telephony/mbms/DownloadRequest.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.app.PendingIntent; +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; + +/** + * A Parcelable class describing a pending Cell-Broadcast download request + * @hide + */ +public class DownloadRequest implements Parcelable { + public DownloadRequest(int id, FileServiceInfo serviceInfo, Uri source, Uri dest, + PendingIntent resultPI, int sub) { + downloadId = id; + fileServiceInfo = serviceInfo; + sourceUri = source; + destinationUri = dest; + subId = sub; + } + + /** @hide */ + public DownloadRequest(DownloadRequest dr, PendingIntent fdRequestPI, PendingIntent cleanupPI) { + downloadId = dr.downloadId; + fileServiceInfo = dr.fileServiceInfo; + sourceUri = dr.sourceUri; + destinationUri = dr.destinationUri; + subId = dr.subId; + /* + * resultPI = new PI + * fileDescriptorRequstPI = fdRequestPI; + * this.cleanupPI = cleanupPI; + */ + } + + public final int downloadId; + public final FileServiceInfo fileServiceInfo; + public final Uri sourceUri; + public final Uri destinationUri; + public final int subId; + + public int describeContents() { + return 0; + } + + public void writeToParcel(Parcel out, int flags) { + out.writeInt(downloadId); + out.writeParcelable(fileServiceInfo, flags); + out.writeParcelable(sourceUri, flags); + out.writeParcelable(destinationUri, flags); + out.writeInt(subId); + } + + private DownloadRequest(Parcel in) { + downloadId = in.readInt(); + fileServiceInfo = in.readParcelable(null); + sourceUri = in.readParcelable(null); + destinationUri = in.readParcelable(null); + subId = in.readInt(); + } + + public static final Parcelable.Creator<DownloadRequest> CREATOR = + new Parcelable.Creator<DownloadRequest>() { + public DownloadRequest createFromParcel(Parcel in) { + return new DownloadRequest(in); + } + public DownloadRequest[] newArray(int size) { + return new DownloadRequest[size]; + } + }; + +} diff --git a/telephony/java/android/telephony/mbms/DownloadStatus.aidl b/telephony/java/android/telephony/mbms/DownloadStatus.aidl new file mode 100755 index 000000000000..e7cfd391dade --- /dev/null +++ b/telephony/java/android/telephony/mbms/DownloadStatus.aidl @@ -0,0 +1,19 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable DownloadStatus; diff --git a/telephony/java/android/telephony/mbms/DownloadStatus.java b/telephony/java/android/telephony/mbms/DownloadStatus.java new file mode 100644 index 000000000000..90eb53f3f59e --- /dev/null +++ b/telephony/java/android/telephony/mbms/DownloadStatus.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * A Parcelable class describing the status of a Cell-Broadcast download request + * @hide + */ +public class DownloadStatus implements Parcelable { + // includes downloads and active repair work + public final int activelyDownloading; + + // files scheduled for future broadcast + public final int pendingDownloads; + + // files scheduled for future repairs + public final int pendingRepairs; + + // is a future download window scheduled with unknown + // number of files + public final boolean windowPending; + + public DownloadStatus(int downloading, int downloads, int repairs, boolean window) { + activelyDownloading = downloading; + pendingDownloads = downloads; + pendingRepairs = repairs; + windowPending = window; + } + + public static final Parcelable.Creator<DownloadStatus> CREATOR = + new Parcelable.Creator<DownloadStatus>() { + @Override + public DownloadStatus createFromParcel(Parcel in) { + return new DownloadStatus(in); + } + + @Override + public DownloadStatus[] newArray(int size) { + return new DownloadStatus[size]; + } + }; + + DownloadStatus(Parcel in) { + activelyDownloading = in.readInt(); + pendingDownloads = in.readInt(); + pendingRepairs = in.readInt(); + windowPending = (in.readInt() == 1); + } + + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(activelyDownloading); + dest.writeInt(pendingDownloads); + dest.writeInt(pendingRepairs); + dest.writeInt((windowPending ? 1 : 0)); + } + + public int describeContents() { + return 0; + } +} diff --git a/telephony/java/android/telephony/mbms/FileInfo.aidl b/telephony/java/android/telephony/mbms/FileInfo.aidl new file mode 100755 index 000000000000..62926e199a7a --- /dev/null +++ b/telephony/java/android/telephony/mbms/FileInfo.aidl @@ -0,0 +1,20 @@ +/* +** +** Copyright 2016, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable FileInfo; diff --git a/telephony/java/android/telephony/mbms/FileInfo.java b/telephony/java/android/telephony/mbms/FileInfo.java new file mode 100644 index 000000000000..d3888bdd2c9a --- /dev/null +++ b/telephony/java/android/telephony/mbms/FileInfo.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; + +/** + * A Parcelable class Cell-Broadcast downloadable file information. + * @hide + */ +public class FileInfo implements Parcelable { + + /** + * The URI into the carriers infrastructure which points to this file. + * This is used internally but is also one of the few pieces of data about the content that is + * exposed and may be needed for disambiguation by the application. + */ + final Uri uri; + + /** + * The mime type of the content. + */ + final String mimeType; + + /** + * The size of the file in bytes. + */ + final long size; + + /** + * The MD5 hash of the file. + */ + final byte md5Hash[]; + + /** + * Gets the parent service for this file. + */ + public FileServiceInfo getFileServiceInfo() { + return null; + } + + public static final Parcelable.Creator<FileInfo> CREATOR = + new Parcelable.Creator<FileInfo>() { + @Override + public FileInfo createFromParcel(Parcel source) { + return new FileInfo(source); + } + + @Override + public FileInfo[] newArray(int size) { + return new FileInfo[size]; + } + }; + + private FileInfo(Parcel in) { + uri = in.readParcelable(null); + mimeType = in.readString(); + size = in.readLong(); + int arraySize = in.readInt(); + md5Hash = new byte[arraySize]; + in.readByteArray(md5Hash); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeParcelable(uri, flags); + dest.writeString(mimeType); + dest.writeLong(size); + dest.writeInt(md5Hash.length); + dest.writeByteArray(md5Hash); + } + + @Override + public int describeContents() { + return 0; + } +} diff --git a/telephony/java/android/telephony/mbms/FileServiceInfo.aidl b/telephony/java/android/telephony/mbms/FileServiceInfo.aidl new file mode 100755 index 000000000000..4646bad8f5db --- /dev/null +++ b/telephony/java/android/telephony/mbms/FileServiceInfo.aidl @@ -0,0 +1,20 @@ +/* +** +** Copyright 2016, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable FileServiceInfo; diff --git a/telephony/java/android/telephony/mbms/FileServiceInfo.java b/telephony/java/android/telephony/mbms/FileServiceInfo.java new file mode 100644 index 000000000000..8bda3707ef54 --- /dev/null +++ b/telephony/java/android/telephony/mbms/FileServiceInfo.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +/** + * A Parcelable class Cell-Broadcast downloadable file information. + * @hide + */ +public class FileServiceInfo extends ServiceInfo implements Parcelable { + public List<FileInfo> files; + + public FileServiceInfo(Map<Locale, String> newNames, String newClassName, Locale newLocale, + String newServiceId, Date start, Date end, List<FileInfo> newFiles) { + super(newNames, newClassName, newLocale, newServiceId, start, end); + files = new ArrayList(newFiles); + } + + public static final Parcelable.Creator<FileServiceInfo> CREATOR = + new Parcelable.Creator<FileServiceInfo>() { + @Override + public FileServiceInfo createFromParcel(Parcel source) { + return new FileServiceInfo(source); + } + + @Override + public FileServiceInfo[] newArray(int size) { + return new FileServiceInfo[size]; + } + }; + + FileServiceInfo(Parcel in) { + super(in); + files = new ArrayList<FileInfo>(); + in.readList(files, null); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + dest.writeList(files); + } + + @Override + public int describeContents() { + return 0; + } +} diff --git a/telephony/java/android/telephony/mbms/IDownloadListener.aidl b/telephony/java/android/telephony/mbms/IDownloadListener.aidl new file mode 100755 index 000000000000..9838682f2bb8 --- /dev/null +++ b/telephony/java/android/telephony/mbms/IDownloadListener.aidl @@ -0,0 +1,34 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +import android.telephony.mbms.DownloadRequest; +import android.telephony.mbms.FileInfo; + +/** + * The optional interface used by download clients to track progress. + * @hide + */ +interface IDownloadListener +{ + /** + * Gives progress callbacks for a given DownloadRequest. Includes a FileInfo + * as the list of files may not have been known at request-time. + */ + void progress(in DownloadRequest request, in FileInfo fileInfo, int downloadSize, + int currentSize, int decodedPercent); +} diff --git a/telephony/java/android/telephony/mbms/IMbmsDownloadManagerListener.aidl b/telephony/java/android/telephony/mbms/IMbmsDownloadManagerListener.aidl new file mode 100755 index 000000000000..6b5c0217f1fc --- /dev/null +++ b/telephony/java/android/telephony/mbms/IMbmsDownloadManagerListener.aidl @@ -0,0 +1,42 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +import android.telephony.mbms.FileServiceInfo; + +import java.util.List; + +/** + * The interface the clients top-level file download listener will satisfy. + * @hide + */ +interface IMbmsDownloadManagerListener +{ + void error(int errorCode, String message); + + /** + * Called to indicate published File Services have changed. + * + * This will only be called after the application has requested + * a list of file services and specified a service class list + * of interest AND the results of a subsequent getFileServices + * call with the same service class list would + * return different + * results. + */ + void fileServicesUpdated(in List<FileServiceInfo> services); +} diff --git a/telephony/java/android/telephony/mbms/IMbmsStreamingManagerListener.aidl b/telephony/java/android/telephony/mbms/IMbmsStreamingManagerListener.aidl new file mode 100755 index 000000000000..80176bfa55e4 --- /dev/null +++ b/telephony/java/android/telephony/mbms/IMbmsStreamingManagerListener.aidl @@ -0,0 +1,53 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +import android.telephony.mbms.StreamingServiceInfo; + +import java.util.List; + +/** + * The interface the clients top-level streaming listener will satisfy. + * @hide + */ +interface IMbmsStreamingManagerListener +{ + void error(int errorCode, String message); + + /** + * Called to indicate published Streaming Services have changed. + * + * This will only be called after the application has requested + * a list of streaming services and specified a service class list + * of interest AND the results of a subsequent getStreamServices + * call with the same service class list would + * return different + * results. + */ + void streamingServicesUpdated(in List<StreamingServiceInfo> services); + + /** + * Called to indicate the active Streaming Services have changed. + * + * This will be caused whenever a new service starts streaming or whenever + * MbmsStreamServiceManager.getActiveStreamingServices is called. + * + * @param services a list of StreamingServiceInfos. May be empty if + * there are no active StreamingServices + */ + void activeStreamingServicesUpdated(in List<StreamingServiceInfo> services); +} diff --git a/telephony/java/android/telephony/mbms/IStreamingServiceListener.aidl b/telephony/java/android/telephony/mbms/IStreamingServiceListener.aidl new file mode 100755 index 000000000000..a41aca30a191 --- /dev/null +++ b/telephony/java/android/telephony/mbms/IStreamingServiceListener.aidl @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.net.Uri; +import android.telephony.SignalStrength; + +/** + * @hide + */ +oneway interface IStreamingServiceListener { + void error(int errorCode, String message); + void stateUpdated(int state); + void uriUpdated(in Uri uri); + void signalStrengthUpdated(in SignalStrength signalStrength); +} diff --git a/telephony/java/android/telephony/mbms/MbmsDownloadManagerListener.java b/telephony/java/android/telephony/mbms/MbmsDownloadManagerListener.java new file mode 100644 index 000000000000..04c2f9ac5dbd --- /dev/null +++ b/telephony/java/android/telephony/mbms/MbmsDownloadManagerListener.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import java.util.List; + +/** + * A Parcelable class with Cell-Broadcast service information. + * @hide + */ +public class MbmsDownloadManagerListener extends IMbmsDownloadManagerListener.Stub { + + public final static int ERROR_CARRIER_NOT_SUPPORTED = 1; + public final static int ERROR_UNABLE_TO_INITIALIZE = 2; + public final static int ERROR_UNABLE_TO_ALLOCATE_MEMORY = 3; + + + public void error(int errorCode, String message) { + // default implementation empty + } + + /** + * Called to indicate published File Services have changed. + * + * This will only be called after the application has requested + * a list of file services and specified a service class list + * of interest AND the results of a subsequent getFileServices + * call with the same service class list would return different + * results. + * + * @param services a List of FileServiceInfos + * + */ + public void fileServicesUpdated(List<FileServiceInfo> services) { + // default implementation empty + } +} diff --git a/telephony/java/android/telephony/mbms/MbmsStreamingManagerListener.java b/telephony/java/android/telephony/mbms/MbmsStreamingManagerListener.java new file mode 100644 index 000000000000..c64ad440ed18 --- /dev/null +++ b/telephony/java/android/telephony/mbms/MbmsStreamingManagerListener.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import java.util.List; + +/** + * A Parcelable class with Cell-Broadcast service information. + * @hide + */ +public class MbmsStreamingManagerListener extends IMbmsStreamingManagerListener.Stub { + + public final static int ERROR_CARRIER_NOT_SUPPORTED = 1; + public final static int ERROR_UNABLE_TO_INITIALIZE = 2; + public final static int ERROR_UNABLE_TO_ALLOCATE_MEMORY = 3; + + + public void error(int errorCode, String message) { + // default implementation empty + } + + /** + * Called to indicate published Streaming Services have changed. + * + * This will only be called after the application has requested + * a list of streaming services and specified a service class list + * of interest AND the results of a subsequent getStreamServices + * call with the same service class list would return different + * results. + * + * @param services a List of StreamingServiceInfos + * + */ + public void streamingServicesUpdated(List<StreamingServiceInfo> services) { + // default implementation empty + } + + /** + * Called to indicate the active Streaming Services have changed. + * + * This will be caused whenever a new service starts streaming or whenever + * MbmsStreamServiceManager.getActiveStreamingServices is called. + * + * @param services a list of StreamingServiceInfos. May be empty if + * there are no active StreamingServices + */ + public void activeStreamingServicesUpdated(List<StreamingServiceInfo> services) { + // default implementation empty + } +} diff --git a/telephony/java/android/telephony/mbms/ServiceInfo.aidl b/telephony/java/android/telephony/mbms/ServiceInfo.aidl new file mode 100755 index 000000000000..6661c26d5a79 --- /dev/null +++ b/telephony/java/android/telephony/mbms/ServiceInfo.aidl @@ -0,0 +1,20 @@ +/* +** +** Copyright 2016, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable ServiceInfo; diff --git a/telephony/java/android/telephony/mbms/ServiceInfo.java b/telephony/java/android/telephony/mbms/ServiceInfo.java new file mode 100644 index 000000000000..cd2e46c20312 --- /dev/null +++ b/telephony/java/android/telephony/mbms/ServiceInfo.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; + +import java.util.Date; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +/** + * A Parcelable class with Cell-Broadcast service information. + * @hide + */ +public class ServiceInfo implements Parcelable { + // arbitrary limit on the number of locale -> name pairs we support + final static int MAP_LIMIT = 50; + /** + * User displayable names listed by language. Unmodifiable. + */ + final Map<Locale, String> names; + + /** + * The class name for this service - used to catagorize and filter + */ + final String className; + + /** + * The language for this service content + */ + final Locale locale; + + /** + * The carrier's identifier for the service. + */ + final String serviceId; + + /** + * The start time indicating when this service will be available. + */ + final Date sessionStartTime; + + /** + * The end time indicating when this sesion stops being available. + */ + final Date sessionEndTime; + + + public ServiceInfo(Map<Locale, String> newNames, String newClassName, Locale newLocale, + String newServiceId, Date start, Date end) { + if (newNames == null || newNames.isEmpty() || TextUtils.isEmpty(newClassName) + || newLocale == null || TextUtils.isEmpty(newServiceId) + || start == null || end == null) { + throw new IllegalArgumentException("Bad ServiceInfo construction"); + } + if (newNames.size() > MAP_LIMIT) { + throw new RuntimeException("bad map length" + newNames.size()); + } + names = new HashMap(newNames.size()); + names.putAll(newNames); + className = newClassName; + locale = (Locale)newLocale.clone(); + serviceId = newServiceId; + sessionStartTime = (Date)start.clone(); + sessionEndTime = (Date)end.clone(); + } + + public static final Parcelable.Creator<FileServiceInfo> CREATOR = + new Parcelable.Creator<FileServiceInfo>() { + @Override + public FileServiceInfo createFromParcel(Parcel source) { + return new FileServiceInfo(source); + } + + @Override + public FileServiceInfo[] newArray(int size) { + return new FileServiceInfo[size]; + } + }; + + ServiceInfo(Parcel in) { + int mapCount = in.readInt(); + if (mapCount > MAP_LIMIT || mapCount < 0) { + throw new RuntimeException("bad map length" + mapCount); + } + names = new HashMap(mapCount); + while (mapCount-- > 0) { + Locale locale = (java.util.Locale) in.readSerializable(); + String name = in.readString(); + names.put(locale, name); + } + className = in.readString(); + locale = (java.util.Locale) in.readSerializable(); + serviceId = in.readString(); + sessionStartTime = (java.util.Date) in.readSerializable(); + sessionEndTime = (java.util.Date) in.readSerializable(); + } + + public void writeToParcel(Parcel dest, int flags) { + Set<Locale> keySet = names.keySet(); + dest.writeInt(keySet.size()); + for (Locale l : keySet) { + dest.writeSerializable(l); + dest.writeString(names.get(l)); + } + dest.writeString(className); + dest.writeSerializable(locale); + dest.writeString(serviceId); + dest.writeSerializable(sessionStartTime); + dest.writeSerializable(sessionEndTime); + } + + public int describeContents() { + return 0; + } +} diff --git a/telephony/java/android/telephony/mbms/StreamingService.aidl b/telephony/java/android/telephony/mbms/StreamingService.aidl new file mode 100755 index 000000000000..0c286f3a0502 --- /dev/null +++ b/telephony/java/android/telephony/mbms/StreamingService.aidl @@ -0,0 +1,19 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable StreamingService; diff --git a/telephony/java/android/telephony/mbms/StreamingService.java b/telephony/java/android/telephony/mbms/StreamingService.java new file mode 100644 index 000000000000..f93b1a8a4064 --- /dev/null +++ b/telephony/java/android/telephony/mbms/StreamingService.java @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.net.Uri; +import android.os.Parcel; +import android.os.Parcelable; +import android.telephony.SignalStrength; + +/** + * @hide + */ +public class StreamingService { + + public final static int STATE_STOPPED = 1; + public final static int STATE_STARTED = 2; + public final static int STATE_STALLED = 3; + + /** + */ + StreamingService(StreamingServiceInfo streamingServiceInfo, + IStreamingServiceListener listener) { + } + + /** + * Retreive the Uri used to play this stream + */ + public Uri getPlaybackUri() { + return null; + } + + /** + * Retreive the info for this StreamingService. + */ + public StreamingServiceInfo getInfo() { + return null; + } + + /** + * Retreive the current state of this stream. + */ + public int getState() { + return STATE_STOPPED; + } + + /** + * Stop streaming this service. Terminal. + */ + public void stopStreaming() { + } + + /** + * Switch this stream to a different service. Used for smooth transitions. + */ + public void switchStream(StreamingServiceInfo streamingServiceInfo) { + } + + public void dispose() { + } + + public static final Parcelable.Creator<StreamingService> CREATOR = + new Parcelable.Creator<StreamingService>() { + @Override + public StreamingService createFromParcel(Parcel in) { + return new StreamingService(in); + } + + @Override + public StreamingService[] newArray(int size) { + return new StreamingService[size]; + } + }; + + private StreamingService(Parcel in) { + } + + public void writeToParcel(Parcel dest, int flags) { + } + + public int describeContents() { + return 0; + } +} + diff --git a/telephony/java/android/telephony/mbms/StreamingServiceInfo.aidl b/telephony/java/android/telephony/mbms/StreamingServiceInfo.aidl new file mode 100755 index 000000000000..b902f271a96c --- /dev/null +++ b/telephony/java/android/telephony/mbms/StreamingServiceInfo.aidl @@ -0,0 +1,20 @@ +/* +** +** Copyright 2016, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms; + +parcelable StreamingServiceInfo; diff --git a/telephony/java/android/telephony/mbms/StreamingServiceInfo.java b/telephony/java/android/telephony/mbms/StreamingServiceInfo.java new file mode 100644 index 000000000000..f559585bea2c --- /dev/null +++ b/telephony/java/android/telephony/mbms/StreamingServiceInfo.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.Date; +import java.util.Locale; +import java.util.Map; + +/** + * A Parcelable class Cell-Broadcast media stream information. + * This may not have any more info than ServiceInfo, but kept for completeness. + * @hide + */ +public class StreamingServiceInfo extends ServiceInfo implements Parcelable { + + public StreamingServiceInfo(Map<Locale, String> newNames, String newClassName, + Locale newLocale, String newServiceId, Date start, Date end) { + super(newNames, newClassName, newLocale, newServiceId, start, end); + } + + public static final Parcelable.Creator<StreamingServiceInfo> CREATOR = + new Parcelable.Creator<StreamingServiceInfo>() { + @Override + public StreamingServiceInfo createFromParcel(Parcel source) { + return new StreamingServiceInfo(source); + } + + @Override + public StreamingServiceInfo[] newArray(int size) { + return new StreamingServiceInfo[size]; + } + }; + + StreamingServiceInfo(Parcel in) { + super(in); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + super.writeToParcel(dest, flags); + } + + @Override + public int describeContents() { + return 0; + } +} diff --git a/telephony/java/android/telephony/mbms/StreamingServiceListener.java b/telephony/java/android/telephony/mbms/StreamingServiceListener.java new file mode 100644 index 000000000000..bc5aebbbd6b3 --- /dev/null +++ b/telephony/java/android/telephony/mbms/StreamingServiceListener.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.telephony.mbms; + +import android.net.Uri; +import android.telephony.SignalStrength; + +/** + * A Callback class for use when the applicaiton is actively streaming content. + * @hide + */ +public class StreamingServiceListener extends IStreamingServiceListener.Stub { + + + public void error(int errorCode, String message) { + // default implementation empty + } + + /** + * Called to indicate this stream has changed state. + * + * See {@link StreamingService#STATE_STOPPED}, {@link StreamingService#STATE_STARTED} + * and {@link StreamingService#STATE_STALLED}. + */ + public void stateUpdated(int state) { + // default implementation empty + } + + /** + * Called to indicate published Download Services have changed. + * + * This may be called when a looping stream hits the end or + * when the a new URI should be used to correct for time drift. + */ + public void uriUpdated(Uri uri) { + // default implementation empty + } + + /** + * Signal Strength updated. + * + * This signal strength is the BROADCAST signal strength which, + * depending on technology in play and it's deployment, may be + * stronger or weaker than the traditional UNICAST signal + * strength. + * + * A {@link android.telephony.SignalStrength#getLevel} result of 0 means + * you don't have coverage for this stream, either due to geographic + * restrictions, poor tower coverage or something (yards of concrete?) + * interferring with the signal. + */ + public void signalStrengthUpdated(SignalStrength signalStrength) { + // default implementation empty + } +} diff --git a/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl b/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl new file mode 100755 index 000000000000..4ec40dafc301 --- /dev/null +++ b/telephony/java/android/telephony/mbms/vendor/IMbmsDownloadService.aidl @@ -0,0 +1,73 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms.vendor; + +import android.app.PendingIntent; +import android.net.Uri; +import android.telephony.mbms.DownloadRequest; +import android.telephony.mbms.DownloadStatus; +import android.telephony.mbms.IMbmsDownloadManagerListener; +import android.telephony.mbms.IDownloadListener; + +/** + * The interface the opaque MbmsStreamingService will satisfy. + * @hide + */ +interface IMbmsDownloadService +{ + /** + * Initialize download service + * Registers this listener, subId with this appName + * + * No return value. Async errors may be reported, but none expected (not doing anything yet). + */ + void initialize(String appName, int subId, IMbmsDownloadManagerListener listener); + + /** + * - Registers serviceClasses of interest with the uid/appName/subId key. + * - Starts asynch fetching data on download services of matching classes to be reported + * later by callback. + * + * Note that subsequent calls with the same callback, appName, subId and uid will replace + * the service class list. + */ + int getFileServices(String appName, int subId, in List<String> serviceClasses); + + /** + * should move the params into a DownloadRequest parcelable + */ + int download(in DownloadRequest downloadRequest, IDownloadListener listener); + + List<DownloadRequest> listPendingDownloads(); + + int cancelDownload(in DownloadRequest downloadRequest); + + DownloadStatus getDownloadStatus(in DownloadRequest downloadRequest); + + /* + * named this for 2 reasons: + * 1 don't want 'State' here as it conflicts with 'Status' of the previous function + * 2 want to perfect typing 'Knowledge' + */ + void resetDownloadKnowledge(in DownloadRequest downloadRequest); + + /** + * End of life for this MbmsDownloadManager. + * Any pending downloads remain in affect and may start up independently in the future. + */ + void dispose(String appName, int subId); +} diff --git a/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl b/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl new file mode 100755 index 000000000000..cb83969b0958 --- /dev/null +++ b/telephony/java/android/telephony/mbms/vendor/IMbmsStreamingService.aidl @@ -0,0 +1,88 @@ +/* +** Copyright 2017, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package android.telephony.mbms.vendor; + +import android.net.Uri; +import android.telephony.mbms.IMbmsStreamingManagerListener; +import android.telephony.mbms.IStreamingServiceListener; +import android.telephony.mbms.StreamingService; +import android.telephony.mbms.StreamingServiceInfo; +import android.telephony.SignalStrength; + +/** + * The interface the opaque MbmsStreamingService will satisfy. + * @hide + */ +interface IMbmsStreamingService +{ + /** + * Initialize streaming service + * Registers this listener, subId with this appName + * + */ + int initialize(IMbmsStreamingManagerListener listener, String appName, int subId); + + + /** + * - Registers serviceClasses of interest with the uid/appName/subId key. + * - Starts asynch fetching data on streaming services of matching classes to be reported + * later by callback. + * + * Note that subsequent calls with the same callback, appName, subId and uid will replace + * the service class list. + */ + int getStreamingServices(String appName, int subId, in List<String> serviceClasses); + + /** + * - Starts streaming the serviceId given. + * - if the uid/appName/subId don't match a previously registered callback an error will + * be returned + * - Streaming status will be sent via the included listener, including an initial + * URL-change and State-change pair. + */ + StreamingService startStreaming(String appName, int subId, String serviceId, + IStreamingServiceListener listener); + + /** + * Asynchronously fetches all Services being streamed by this uid/appName/subId. + */ + int getActiveStreamingServices(String appName, int subId); + + + /** + * Per-stream api. Note each specifies what stream they apply to. + */ + + Uri getPlaybackUri(String appName, int subId, String serviceId); + + void switchStreams(String appName, int subId, String oldServiceId, String newServiceId); + + int getState(String appName, int subId, String serviceId); + + void stopStreaming(String appName, int subId, String serviceId); + + void disposeStream(String appName, int subId, String serviceId); + + + /** + * End of life for all MbmsStreamingManager's created by this uid/appName/subId. + * Ends any streams run under this uid/appname/subId and calls the disposed methods + * an callbacks registered for this uid/appName/subId and the disposed methods on any + * listeners registered with startStreaming. + */ + void dispose(String appName, int subId); +} |