17c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn/* 27c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Copyright (C) 2014 The Android Open Source Project 37c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 47c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Licensed under the Apache License, Version 2.0 (the "License"); 57c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * you may not use this file except in compliance with the License. 67c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * You may obtain a copy of the License at 77c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 87c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * http://www.apache.org/licenses/LICENSE-2.0 97c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 107c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Unless required by applicable law or agreed to in writing, software 117c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * distributed under the License is distributed on an "AS IS" BASIS, 127c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * See the License for the specific language governing permissions and 147c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * limitations under the License 157c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 167c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom; 187c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 197c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunnimport android.os.Parcel; 207c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunnimport android.os.Parcelable; 217c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 227c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn/** 237c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Represents the camera capabilities important to a Video Telephony provider. 24be74de0978a7eaa577f6b61902b550a3161aff8bTyler Gunn * @hide 257c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 26b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awadpublic final class CameraCapabilities implements Parcelable { 277c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 287c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 297c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Whether the camera supports zoom. 307c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 317c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn private final boolean mZoomSupported; 327c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 337c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 347c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * The maximum zoom supported by the camera. 357c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 367c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn private final float mMaxZoom; 377c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 387c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 395d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn * The width of the camera video in pixels. 405d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn */ 415d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn private final int mWidth; 425d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn 435d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn /** 445d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn * The height of the camera video in pixels. 455d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn */ 465d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn private final int mHeight; 475d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn 485d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn /** 497c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Create a call camera capabilities instance. 507c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 517c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @param zoomSupported True when camera supports zoom. 527c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @param maxZoom Maximum zoom supported by camera. 535d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn * @param width The width of the camera video (in pixels). 545d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn * @param height The height of the camera video (in pixels). 557c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 56b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad public CameraCapabilities(boolean zoomSupported, float maxZoom, int width, int height) { 577c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn mZoomSupported = zoomSupported; 587c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn mMaxZoom = maxZoom; 595d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn mWidth = width; 605d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn mHeight = height; 617c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 627c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 637c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 647c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Responsible for creating CallCameraCapabilities objects from deserialized Parcels. 657c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn **/ 66b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad public static final Parcelable.Creator<CameraCapabilities> CREATOR = 67b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad new Parcelable.Creator<CameraCapabilities> () { 687c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 697c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Creates a CallCameraCapabilities instances from a parcel. 707c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 717c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @param source The parcel. 727c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @return The CallCameraCapabilities. 737c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 747c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn @Override 75b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad public CameraCapabilities createFromParcel(Parcel source) { 767c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn boolean supportsZoom = source.readByte() != 0; 777c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn float maxZoom = source.readFloat(); 785d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn int width = source.readInt(); 795d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn int height = source.readInt(); 807c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 81b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad return new CameraCapabilities(supportsZoom, maxZoom, width, height); 827c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 837c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 847c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn @Override 85b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad public CameraCapabilities[] newArray(int size) { 86b19a0bcdd8a5020c61a0d697f600fdc943c86f59Ihab Awad return new CameraCapabilities[size]; 877c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 887c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn }; 897c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 907c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 917c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Describe the kinds of special objects contained in this Parcelable's 927c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * marshalled representation. 937c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 947c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @return a bitmask indicating the set of special object types marshalled 957c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * by the Parcelable. 967c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 977c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn @Override 987c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn public int describeContents() { 997c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn return 0; 1007c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 1017c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 1027c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 1037c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Flatten this object in to a Parcel. 1047c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * 1057c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @param dest The Parcel in which the object should be written. 1067c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * @param flags Additional flags about how the object should be written. 1077c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}. 1087c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 1097c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn @Override 1107c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn public void writeToParcel(Parcel dest, int flags) { 1117c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn dest.writeByte((byte) (isZoomSupported() ? 1 : 0)); 1127c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn dest.writeFloat(getMaxZoom()); 1135d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn dest.writeInt(getWidth()); 1145d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn dest.writeInt(getHeight()); 1157c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 1167c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 1177c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 1187c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * Whether the camera supports zoom. 1197c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 1207c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn public boolean isZoomSupported() { 1217c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn return mZoomSupported; 1227c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 1237c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn 1247c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn /** 1257c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn * The maximum zoom supported by the camera. 1267c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn */ 1277c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn public float getMaxZoom() { 1287c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn return mMaxZoom; 1297c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn } 1305d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn 1315d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn /** 1325d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn * The width of the camera video in pixels. 1335d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn */ 1345d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn public int getWidth() { 1355d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn return mWidth; 1365d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn } 1375d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn 1385d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn /** 1395d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn * The height of the camera video in pixels. 1405d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn */ 1415d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn public int getHeight() { 1425d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn return mHeight; 1435d231e134353a7cb07ecc7d6dd1a4ffdcf194bcaTyler Gunn } 1447c668b921b62e07833c2b8384b33e6ab9c5a0929Tyler Gunn} 145