summaryrefslogtreecommitdiffstats
path: root/telecomm/java
diff options
context:
space:
mode:
Diffstat (limited to 'telecomm/java')
-rw-r--r--telecomm/java/android/telecom/CameraCapabilities.aidl22
-rw-r--r--telecomm/java/android/telecom/CameraCapabilities.java157
-rw-r--r--telecomm/java/android/telecom/Conference.java39
-rw-r--r--telecomm/java/android/telecom/Connection.java2
-rw-r--r--telecomm/java/android/telecom/InCallService.java3
-rw-r--r--telecomm/java/android/telecom/PhoneAccount.java2
-rw-r--r--telecomm/java/android/telecom/PhoneAccountHandle.java2
-rw-r--r--telecomm/java/android/telecom/RemoteConference.java119
-rw-r--r--telecomm/java/android/telecom/RemoteConnection.java5
-rw-r--r--telecomm/java/android/telecom/VideoCallImpl.java4
-rw-r--r--telecomm/java/android/telecom/VideoCallbackServant.java5
-rw-r--r--telecomm/java/android/telecom/VideoProfile.aidl1
-rw-r--r--telecomm/java/android/telecom/VideoProfile.java138
-rw-r--r--telecomm/java/com/android/internal/telecom/IVideoCallback.aidl3
14 files changed, 294 insertions, 208 deletions
diff --git a/telecomm/java/android/telecom/CameraCapabilities.aidl b/telecomm/java/android/telecom/CameraCapabilities.aidl
deleted file mode 100644
index c8e0c5e..0000000
--- a/telecomm/java/android/telecom/CameraCapabilities.aidl
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2014 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.telecom;
-
-/**
- * {@hide}
- */
-parcelable CameraCapabilities;
diff --git a/telecomm/java/android/telecom/CameraCapabilities.java b/telecomm/java/android/telecom/CameraCapabilities.java
deleted file mode 100644
index 6242956..0000000
--- a/telecomm/java/android/telecom/CameraCapabilities.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2014 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.telecom;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * Represents the camera capabilities important to a Video Telephony provider.
- */
-public final class CameraCapabilities implements Parcelable {
-
- /**
- * The width of the camera video in pixels.
- */
- private final int mWidth;
-
- /**
- * The height of the camera video in pixels.
- */
- private final int mHeight;
-
- /**
- * Whether the camera supports zoom.
- */
- private final boolean mZoomSupported;
-
- /**
- * The maximum zoom supported by the camera.
- */
- private final float mMaxZoom;
-
- /**
- * Create a call camera capabilities instance.
- *
- * @param width The width of the camera video (in pixels).
- * @param height The height of the camera video (in pixels).
- */
- public CameraCapabilities(int width, int height) {
- this(width, height, false, 1.0f);
- }
-
- /**
- * Create a call camera capabilities instance that optionally
- * supports zoom.
- *
- * @param width The width of the camera video (in pixels).
- * @param height The height of the camera video (in pixels).
- * @param zoomSupported True when camera supports zoom.
- * @param maxZoom Maximum zoom supported by camera.
- * @hide
- */
- public CameraCapabilities(int width, int height, boolean zoomSupported, float maxZoom) {
- mWidth = width;
- mHeight = height;
- mZoomSupported = zoomSupported;
- mMaxZoom = maxZoom;
- }
-
- /**
- * Responsible for creating CallCameraCapabilities objects from deserialized Parcels.
- **/
- public static final Parcelable.Creator<CameraCapabilities> CREATOR =
- new Parcelable.Creator<CameraCapabilities> () {
- /**
- * Creates a CallCameraCapabilities instances from a parcel.
- *
- * @param source The parcel.
- * @return The CallCameraCapabilities.
- */
- @Override
- public CameraCapabilities createFromParcel(Parcel source) {
- int width = source.readInt();
- int height = source.readInt();
- boolean supportsZoom = source.readByte() != 0;
- float maxZoom = source.readFloat();
-
- return new CameraCapabilities(width, height, supportsZoom, maxZoom);
- }
-
- @Override
- public CameraCapabilities[] newArray(int size) {
- return new CameraCapabilities[size];
- }
- };
-
- /**
- * Describe the kinds of special objects contained in this Parcelable's
- * marshalled representation.
- *
- * @return a bitmask indicating the set of special object types marshalled
- * by the Parcelable.
- */
- @Override
- public int describeContents() {
- return 0;
- }
-
- /**
- * Flatten this object in to a Parcel.
- *
- * @param dest The Parcel in which the object should be written.
- * @param flags Additional flags about how the object should be written.
- * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}.
- */
- @Override
- public void writeToParcel(Parcel dest, int flags) {
- dest.writeInt(getWidth());
- dest.writeInt(getHeight());
- dest.writeByte((byte) (isZoomSupported() ? 1 : 0));
- dest.writeFloat(getMaxZoom());
- }
-
- /**
- * The width of the camera video in pixels.
- */
- public int getWidth() {
- return mWidth;
- }
-
- /**
- * The height of the camera video in pixels.
- */
- public int getHeight() {
- return mHeight;
- }
-
- /**
- * Whether the camera supports zoom.
- * @hide
- */
- public boolean isZoomSupported() {
- return mZoomSupported;
- }
-
- /**
- * The maximum zoom supported by the camera.
- * @hide
- */
- public float getMaxZoom() {
- return mMaxZoom;
- }
-}
diff --git a/telecomm/java/android/telecom/Conference.java b/telecomm/java/android/telecom/Conference.java
index e682697..e2971f9 100644
--- a/telecomm/java/android/telecom/Conference.java
+++ b/telecomm/java/android/telecom/Conference.java
@@ -16,6 +16,7 @@
package android.telecom;
+import android.annotation.SystemApi;
import android.telecom.Connection.VideoProvider;
import java.util.ArrayList;
@@ -116,7 +117,7 @@ public abstract class Conference implements Conferenceable {
}
/**
- * Returns the capabilities of a conference. See {@code CAPABILITY_*} constants in class
+ * Returns the capabilities of the conference. See {@code CAPABILITY_*} constants in class
* {@link Connection} for valid values.
*
* @return A bitmask of the capabilities of the conference call.
@@ -458,7 +459,9 @@ public abstract class Conference implements Conferenceable {
* the connection from which the conference will retrieve its current state.
*
* @return The primary connection.
+ * @hide
*/
+ @SystemApi
public Connection getPrimaryConnection() {
if (mUnmodifiableChildConnections == null || mUnmodifiableChildConnections.isEmpty()) {
return null;
@@ -467,22 +470,42 @@ public abstract class Conference implements Conferenceable {
}
/**
- * Sets the connect time of the {@code Conference}.
+ * @hide
+ * @deprecated Use {@link #setConnectionTime}.
+ */
+ @Deprecated
+ @SystemApi
+ public final void setConnectTimeMillis(long connectTimeMillis) {
+ setConnectionTime(connectTimeMillis);
+ }
+
+ /**
+ * Sets the connection start time of the {@code Conference}.
*
- * @param connectTimeMillis The connection time, in milliseconds.
+ * @param connectionTimeMillis The connection time, in milliseconds.
*/
- public void setConnectTimeMillis(long connectTimeMillis) {
- mConnectTimeMillis = connectTimeMillis;
+ public final void setConnectionTime(long connectionTimeMillis) {
+ mConnectTimeMillis = connectionTimeMillis;
}
/**
- * Retrieves the connect time of the {@code Conference}, if specified. A value of
+ * @hide
+ * @deprecated Use {@link #getConnectionTime}.
+ */
+ @Deprecated
+ @SystemApi
+ public final long getConnectTimeMillis() {
+ return getConnectionTime();
+ }
+
+ /**
+ * Retrieves the connection start time of the {@code Conference}, if specified. A value of
* {@link #CONNECT_TIME_NOT_SPECIFIED} indicates that Telecom should determine the start time
* of the conference.
*
- * @return The time the {@code Conference} has been connected.
+ * @return The time at which the {@code Conference} was connected.
*/
- public final long getConnectTimeMillis() {
+ public final long getConnectionTime() {
return mConnectTimeMillis;
}
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 0bf9118..5076c38 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -742,7 +742,7 @@ public abstract class Connection implements Conferenceable {
*
* @param cameraCapabilities The changed camera capabilities.
*/
- public void changeCameraCapabilities(CameraCapabilities cameraCapabilities) {
+ public void changeCameraCapabilities(VideoProfile.CameraCapabilities cameraCapabilities) {
if (mVideoCallbacks != null) {
try {
for (IVideoCallback callback : mVideoCallbacks.values()) {
diff --git a/telecomm/java/android/telecom/InCallService.java b/telecomm/java/android/telecom/InCallService.java
index 3cb4e87..63a416b 100644
--- a/telecomm/java/android/telecom/InCallService.java
+++ b/telecomm/java/android/telecom/InCallService.java
@@ -546,7 +546,8 @@ public abstract class InCallService extends Service {
*
* @param cameraCapabilities The changed camera capabilities.
*/
- public abstract void onCameraCapabilitiesChanged(CameraCapabilities cameraCapabilities);
+ public abstract void onCameraCapabilitiesChanged(
+ VideoProfile.CameraCapabilities cameraCapabilities);
}
}
}
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index bab460d..86475b1 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -47,7 +47,7 @@ import java.util.MissingResourceException;
* should supply a valid {@link PhoneAccountHandle} that references the connection service
* implementation Telecom will use to interact with the app.
*/
-public class PhoneAccount implements Parcelable {
+public final class PhoneAccount implements Parcelable {
/**
* Flag indicating that this {@code PhoneAccount} can act as a connection manager for
diff --git a/telecomm/java/android/telecom/PhoneAccountHandle.java b/telecomm/java/android/telecom/PhoneAccountHandle.java
index 60917b2..6dc6e9c 100644
--- a/telecomm/java/android/telecom/PhoneAccountHandle.java
+++ b/telecomm/java/android/telecom/PhoneAccountHandle.java
@@ -35,7 +35,7 @@ import java.util.Objects;
*
* See {@link PhoneAccount}, {@link TelecomManager}.
*/
-public class PhoneAccountHandle implements Parcelable {
+public final class PhoneAccountHandle implements Parcelable {
private final ComponentName mComponentName;
private final String mId;
private final UserHandle mUserHandle;
diff --git a/telecomm/java/android/telecom/RemoteConference.java b/telecomm/java/android/telecom/RemoteConference.java
index a76bf59..b59584b 100644
--- a/telecomm/java/android/telecom/RemoteConference.java
+++ b/telecomm/java/android/telecom/RemoteConference.java
@@ -29,7 +29,10 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
/**
- * Represents a conference call which can contain any number of {@link Connection} objects.
+ * A conference provided to a {@link ConnectionService} by another {@code ConnectionService}
+ * running in a different process.
+ *
+ * @see ConnectionService#onRemoteConferenceAdded
*/
public final class RemoteConference {
@@ -62,18 +65,18 @@ public final class RemoteConference {
private DisconnectCause mDisconnectCause;
private int mConnectionCapabilities;
- /** {@hide} */
+ /** @hide */
RemoteConference(String id, IConnectionService connectionService) {
mId = id;
mConnectionService = connectionService;
}
- /** {@hide} */
+ /** @hide */
String getId() {
return mId;
}
- /** {@hide} */
+ /** @hide */
void setDestroyed() {
for (RemoteConnection connection : mChildConnections) {
connection.setConference(null);
@@ -90,7 +93,7 @@ public final class RemoteConference {
}
}
- /** {@hide} */
+ /** @hide */
void setState(final int newState) {
if (newState != Connection.STATE_ACTIVE &&
newState != Connection.STATE_HOLDING &&
@@ -116,7 +119,7 @@ public final class RemoteConference {
}
}
- /** {@hide} */
+ /** @hide */
void addConnection(final RemoteConnection connection) {
if (!mChildConnections.contains(connection)) {
mChildConnections.add(connection);
@@ -134,7 +137,7 @@ public final class RemoteConference {
}
}
- /** {@hide} */
+ /** @hide */
void removeConnection(final RemoteConnection connection) {
if (mChildConnections.contains(connection)) {
mChildConnections.remove(connection);
@@ -152,7 +155,7 @@ public final class RemoteConference {
}
}
- /** {@hide} */
+ /** @hide */
void setConnectionCapabilities(final int connectionCapabilities) {
if (mConnectionCapabilities != connectionCapabilities) {
mConnectionCapabilities = connectionCapabilities;
@@ -187,7 +190,7 @@ public final class RemoteConference {
}
}
- /** {@hide} */
+ /** @hide */
void setDisconnected(final DisconnectCause disconnectCause) {
if (mState != Connection.STATE_DISCONNECTED) {
mDisconnectCause = disconnectCause;
@@ -205,18 +208,37 @@ public final class RemoteConference {
}
}
+ /**
+ * Returns the list of {@link RemoteConnection}s contained in this conference.
+ *
+ * @return A list of child connections.
+ */
public final List<RemoteConnection> getConnections() {
return mUnmodifiableChildConnections;
}
+ /**
+ * Gets the state of the conference call. See {@link Connection} for valid values.
+ *
+ * @return A constant representing the state the conference call is currently in.
+ */
public final int getState() {
return mState;
}
+ /**
+ * Returns the capabilities of the conference. See {@code CAPABILITY_*} constants in class
+ * {@link Connection} for valid values.
+ *
+ * @return A bitmask of the capabilities of the conference call.
+ */
public final int getConnectionCapabilities() {
return mConnectionCapabilities;
}
+ /**
+ * Disconnects the conference call as well as the child {@link RemoteConnection}s.
+ */
public void disconnect() {
try {
mConnectionService.disconnect(mId);
@@ -224,6 +246,13 @@ public final class RemoteConference {
}
}
+ /**
+ * Removes the specified {@link RemoteConnection} from the conference. This causes the
+ * {@link RemoteConnection} to become a standalone connection. This is a no-op if the
+ * {@link RemoteConnection} does not belong to this conference.
+ *
+ * @param connection The remote-connection to remove.
+ */
public void separate(RemoteConnection connection) {
if (mChildConnections.contains(connection)) {
try {
@@ -233,6 +262,16 @@ public final class RemoteConference {
}
}
+ /**
+ * Merges all {@link RemoteConnection}s of this conference into a single call. This should be
+ * invoked only if the conference contains the capability
+ * {@link Connection#CAPABILITY_MERGE_CONFERENCE}, otherwise it is a no-op. The presence of said
+ * capability indicates that the connections of this conference, despite being part of the
+ * same conference object, are yet to have their audio streams merged; this is a common pattern
+ * for CDMA conference calls, but the capability is not used for GSM and SIP conference calls.
+ * Invoking this method will cause the unmerged child connections to merge their audio
+ * streams.
+ */
public void merge() {
try {
mConnectionService.mergeConference(mId);
@@ -240,6 +279,15 @@ public final class RemoteConference {
}
}
+ /**
+ * Swaps the active audio stream between the conference's child {@link RemoteConnection}s.
+ * This should be invoked only if the conference contains the capability
+ * {@link Connection#CAPABILITY_SWAP_CONFERENCE}, otherwise it is a no-op. This is only used by
+ * {@link ConnectionService}s that create conferences for connections that do not yet have
+ * their audio streams merged; this is a common pattern for CDMA conference calls, but the
+ * capability is not used for GSM and SIP conference calls. Invoking this method will change the
+ * active audio stream to a different child connection.
+ */
public void swap() {
try {
mConnectionService.swapConference(mId);
@@ -247,6 +295,9 @@ public final class RemoteConference {
}
}
+ /**
+ * Puts the conference on hold.
+ */
public void hold() {
try {
mConnectionService.hold(mId);
@@ -254,6 +305,9 @@ public final class RemoteConference {
}
}
+ /**
+ * Unholds the conference call.
+ */
public void unhold() {
try {
mConnectionService.unhold(mId);
@@ -261,10 +315,22 @@ public final class RemoteConference {
}
}
+ /**
+ * Returns the {@link DisconnectCause} for the conference if it is in the state
+ * {@link Connection#STATE_DISCONNECTED}. If the conference is not disconnected, this will
+ * return null.
+ *
+ * @return The disconnect cause.
+ */
public DisconnectCause getDisconnectCause() {
return mDisconnectCause;
}
+ /**
+ * Requests that the conference start playing the specified DTMF tone.
+ *
+ * @param digit The digit for which to play a DTMF tone.
+ */
public void playDtmfTone(char digit) {
try {
mConnectionService.playDtmfTone(mId, digit);
@@ -272,6 +338,11 @@ public final class RemoteConference {
}
}
+ /**
+ * Stops the most recent request to play a DTMF tone.
+ *
+ * @see #playDtmfTone
+ */
public void stopDtmfTone() {
try {
mConnectionService.stopDtmfTone(mId);
@@ -279,6 +350,12 @@ public final class RemoteConference {
}
}
+ /**
+ * Request to change the conference's audio routing to the specified state. The specified state
+ * can include audio routing (Bluetooth, Speaker, etc) and muting state.
+ *
+ * @see android.telecom.AudioState
+ */
public void setAudioState(AudioState state) {
try {
mConnectionService.onAudioStateChanged(mId, state);
@@ -286,14 +363,31 @@ public final class RemoteConference {
}
}
+ /**
+ * Returns a list of independent connections that can me merged with this conference.
+ *
+ * @return A list of conferenceable connections.
+ */
public List<RemoteConnection> getConferenceableConnections() {
return mUnmodifiableConferenceableConnections;
}
+ /**
+ * Register a callback through which to receive state updates for this conference.
+ *
+ * @param callback The callback to notify of state changes.
+ */
public final void registerCallback(Callback callback) {
registerCallback(callback, new Handler());
}
+ /**
+ * Registers a callback through which to receive state updates for this conference.
+ * Callbacks will be notified using the specified handler, if provided.
+ *
+ * @param callback The callback to notify of state changes.
+ * @param handler The handler on which to execute the callbacks.
+ */
public final void registerCallback(Callback callback, Handler handler) {
unregisterCallback(callback);
if (callback != null && handler != null) {
@@ -301,6 +395,13 @@ public final class RemoteConference {
}
}
+ /**
+ * Unregisters a previously registered callback.
+ *
+ * @see #registerCallback
+ *
+ * @param callback The callback to unregister.
+ */
public final void unregisterCallback(Callback callback) {
if (callback != null) {
for (CallbackRecord<Callback> record : mCallbackRecords) {
diff --git a/telecomm/java/android/telecom/RemoteConnection.java b/telecomm/java/android/telecom/RemoteConnection.java
index 9ca9f31..f2e6bcb 100644
--- a/telecomm/java/android/telecom/RemoteConnection.java
+++ b/telecomm/java/android/telecom/RemoteConnection.java
@@ -220,7 +220,7 @@ public final class RemoteConnection {
public void onCameraCapabilitiesChanged(
VideoProvider videoProvider,
- CameraCapabilities cameraCapabilities) {}
+ VideoProfile.CameraCapabilities cameraCapabilities) {}
public void onVideoQualityChanged(VideoProvider videoProvider, int videoQuality) {}
}
@@ -267,7 +267,8 @@ public final class RemoteConnection {
}
@Override
- public void changeCameraCapabilities(CameraCapabilities cameraCapabilities) {
+ public void changeCameraCapabilities(
+ VideoProfile.CameraCapabilities cameraCapabilities) {
for (Listener l : mListeners) {
l.onCameraCapabilitiesChanged(VideoProvider.this, cameraCapabilities);
}
diff --git a/telecomm/java/android/telecom/VideoCallImpl.java b/telecomm/java/android/telecom/VideoCallImpl.java
index 331f57e..5352dfc 100644
--- a/telecomm/java/android/telecom/VideoCallImpl.java
+++ b/telecomm/java/android/telecom/VideoCallImpl.java
@@ -98,7 +98,7 @@ public class VideoCallImpl extends VideoCall {
}
@Override
- public void changeCameraCapabilities(CameraCapabilities cameraCapabilities) {
+ public void changeCameraCapabilities(VideoProfile.CameraCapabilities cameraCapabilities) {
mHandler.obtainMessage(MessageHandler.MSG_CHANGE_CAMERA_CAPABILITIES,
cameraCapabilities).sendToTarget();
}
@@ -160,7 +160,7 @@ public class VideoCallImpl extends VideoCall {
break;
case MSG_CHANGE_CAMERA_CAPABILITIES:
mCallback.onCameraCapabilitiesChanged(
- (CameraCapabilities) msg.obj);
+ (VideoProfile.CameraCapabilities) msg.obj);
break;
case MSG_CHANGE_VIDEO_QUALITY:
mVideoQuality = msg.arg1;
diff --git a/telecomm/java/android/telecom/VideoCallbackServant.java b/telecomm/java/android/telecom/VideoCallbackServant.java
index 1123621..1fbad22 100644
--- a/telecomm/java/android/telecom/VideoCallbackServant.java
+++ b/telecomm/java/android/telecom/VideoCallbackServant.java
@@ -98,7 +98,7 @@ final class VideoCallbackServant {
break;
}
case MSG_CHANGE_CAMERA_CAPABILITIES: {
- mDelegate.changeCameraCapabilities((CameraCapabilities) msg.obj);
+ mDelegate.changeCameraCapabilities((VideoProfile.CameraCapabilities) msg.obj);
break;
}
case MSG_CHANGE_VIDEO_QUALITY: {
@@ -148,7 +148,8 @@ final class VideoCallbackServant {
}
@Override
- public void changeCameraCapabilities(CameraCapabilities cameraCapabilities)
+ public void changeCameraCapabilities(
+ VideoProfile.CameraCapabilities cameraCapabilities)
throws RemoteException {
mHandler.obtainMessage(MSG_CHANGE_CAMERA_CAPABILITIES, cameraCapabilities)
.sendToTarget();
diff --git a/telecomm/java/android/telecom/VideoProfile.aidl b/telecomm/java/android/telecom/VideoProfile.aidl
index 091b569..0b32721 100644
--- a/telecomm/java/android/telecom/VideoProfile.aidl
+++ b/telecomm/java/android/telecom/VideoProfile.aidl
@@ -21,3 +21,4 @@ package android.telecom;
* {@hide}
*/
parcelable VideoProfile;
+parcelable VideoProfile.CameraCapabilities;
diff --git a/telecomm/java/android/telecom/VideoProfile.java b/telecomm/java/android/telecom/VideoProfile.java
index 902fddb..7ac4090 100644
--- a/telecomm/java/android/telecom/VideoProfile.java
+++ b/telecomm/java/android/telecom/VideoProfile.java
@@ -278,4 +278,142 @@ public class VideoProfile implements Parcelable {
return sb.toString();
}
}
+
+ /**
+ * Represents the camera capabilities important to a Video Telephony provider.
+ */
+ public static final class CameraCapabilities implements Parcelable {
+
+ /**
+ * The width of the camera video in pixels.
+ */
+ private final int mWidth;
+
+ /**
+ * The height of the camera video in pixels.
+ */
+ private final int mHeight;
+
+ /**
+ * Whether the camera supports zoom.
+ */
+ private final boolean mZoomSupported;
+
+ /**
+ * The maximum zoom supported by the camera.
+ */
+ private final float mMaxZoom;
+
+ /**
+ * Create a call camera capabilities instance.
+ *
+ * @param width The width of the camera video (in pixels).
+ * @param height The height of the camera video (in pixels).
+ */
+ public CameraCapabilities(int width, int height) {
+ this(width, height, false, 1.0f);
+ }
+
+ /**
+ * Create a call camera capabilities instance that optionally
+ * supports zoom.
+ *
+ * @param width The width of the camera video (in pixels).
+ * @param height The height of the camera video (in pixels).
+ * @param zoomSupported True when camera supports zoom.
+ * @param maxZoom Maximum zoom supported by camera.
+ * @hide
+ */
+ public CameraCapabilities(int width, int height, boolean zoomSupported, float maxZoom) {
+ mWidth = width;
+ mHeight = height;
+ mZoomSupported = zoomSupported;
+ mMaxZoom = maxZoom;
+ }
+
+ /**
+ * Responsible for creating CallCameraCapabilities objects from deserialized Parcels.
+ **/
+ public static final Parcelable.Creator<CameraCapabilities> CREATOR =
+ new Parcelable.Creator<CameraCapabilities> () {
+ /**
+ * Creates a CallCameraCapabilities instances from a parcel.
+ *
+ * @param source The parcel.
+ * @return The CallCameraCapabilities.
+ */
+ @Override
+ public CameraCapabilities createFromParcel(Parcel source) {
+ int width = source.readInt();
+ int height = source.readInt();
+ boolean supportsZoom = source.readByte() != 0;
+ float maxZoom = source.readFloat();
+
+ return new CameraCapabilities(width, height, supportsZoom, maxZoom);
+ }
+
+ @Override
+ public CameraCapabilities[] newArray(int size) {
+ return new CameraCapabilities[size];
+ }
+ };
+
+ /**
+ * Describe the kinds of special objects contained in this Parcelable's
+ * marshalled representation.
+ *
+ * @return a bitmask indicating the set of special object types marshalled
+ * by the Parcelable.
+ */
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ /**
+ * Flatten this object in to a Parcel.
+ *
+ * @param dest The Parcel in which the object should be written.
+ * @param flags Additional flags about how the object should be written.
+ * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}.
+ */
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(getWidth());
+ dest.writeInt(getHeight());
+ dest.writeByte((byte) (isZoomSupported() ? 1 : 0));
+ dest.writeFloat(getMaxZoom());
+ }
+
+ /**
+ * The width of the camera video in pixels.
+ */
+ public int getWidth() {
+ return mWidth;
+ }
+
+ /**
+ * The height of the camera video in pixels.
+ */
+ public int getHeight() {
+ return mHeight;
+ }
+
+ /**
+ * Whether the camera supports zoom.
+ * @hide
+ */
+ public boolean isZoomSupported() {
+ return mZoomSupported;
+ }
+
+ /**
+ * The maximum zoom supported by the camera.
+ * @hide
+ */
+ public float getMaxZoom() {
+ return mMaxZoom;
+ }
+ }
+
}
diff --git a/telecomm/java/com/android/internal/telecom/IVideoCallback.aidl b/telecomm/java/com/android/internal/telecom/IVideoCallback.aidl
index 59f8f0c..cdfad02 100644
--- a/telecomm/java/com/android/internal/telecom/IVideoCallback.aidl
+++ b/telecomm/java/com/android/internal/telecom/IVideoCallback.aidl
@@ -16,7 +16,6 @@
package com.android.internal.telecom;
-import android.telecom.CameraCapabilities;
import android.telecom.VideoProfile;
/**
@@ -41,7 +40,7 @@ oneway interface IVideoCallback {
void changeCallDataUsage(long dataUsage);
- void changeCameraCapabilities(in CameraCapabilities cameraCapabilities);
+ void changeCameraCapabilities(in VideoProfile.CameraCapabilities cameraCapabilities);
void changeVideoQuality(int videoQuality);
}