• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.media;
18 
19 import android.os.Parcel;
20 import android.os.Parcelable;
21 import android.text.TextUtils;
22 
23 import java.util.ArrayList;
24 
25 /**
26  * Information available from IRemoteDisplayProvider about available remote displays.
27  *
28  * Clients must not modify the contents of this object.
29  * @hide
30  */
31 public final class RemoteDisplayState implements Parcelable {
32     // Note: These constants are used by the remote display provider API.
33     // Do not change them!
34     public static final String SERVICE_INTERFACE =
35             "com.android.media.remotedisplay.RemoteDisplayProvider";
36     public static final int DISCOVERY_MODE_NONE = 0;
37     public static final int DISCOVERY_MODE_PASSIVE = 1;
38     public static final int DISCOVERY_MODE_ACTIVE = 2;
39 
40     /**
41      * A list of all remote displays.
42      */
43     public final ArrayList<RemoteDisplayInfo> displays;
44 
RemoteDisplayState()45     public RemoteDisplayState() {
46         displays = new ArrayList<RemoteDisplayInfo>();
47     }
48 
RemoteDisplayState(Parcel src)49     RemoteDisplayState(Parcel src) {
50         displays = src.createTypedArrayList(RemoteDisplayInfo.CREATOR);
51     }
52 
isValid()53     public boolean isValid() {
54         if (displays == null) {
55             return false;
56         }
57         final int count = displays.size();
58         for (int i = 0; i < count; i++) {
59             if (!displays.get(i).isValid()) {
60                 return false;
61             }
62         }
63         return true;
64     }
65 
66     @Override
describeContents()67     public int describeContents() {
68         return 0;
69     }
70 
71     @Override
writeToParcel(Parcel dest, int flags)72     public void writeToParcel(Parcel dest, int flags) {
73         dest.writeTypedList(displays);
74     }
75 
76     public static final Parcelable.Creator<RemoteDisplayState> CREATOR =
77             new Parcelable.Creator<RemoteDisplayState>() {
78         @Override
79         public RemoteDisplayState createFromParcel(Parcel in) {
80             return new RemoteDisplayState(in);
81         }
82 
83         @Override
84         public RemoteDisplayState[] newArray(int size) {
85             return new RemoteDisplayState[size];
86         }
87     };
88 
89     public static final class RemoteDisplayInfo implements Parcelable {
90         // Note: These constants are used by the remote display provider API.
91         // Do not change them!
92         public static final int STATUS_NOT_AVAILABLE = 0;
93         public static final int STATUS_IN_USE = 1;
94         public static final int STATUS_AVAILABLE = 2;
95         public static final int STATUS_CONNECTING = 3;
96         public static final int STATUS_CONNECTED = 4;
97 
98         public static final int PLAYBACK_VOLUME_VARIABLE =
99                 MediaRouter.RouteInfo.PLAYBACK_VOLUME_VARIABLE;
100         public static final int PLAYBACK_VOLUME_FIXED =
101                 MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED;
102 
103         public String id;
104         public String name;
105         public String description;
106         public int status;
107         public int volume;
108         public int volumeMax;
109         public int volumeHandling;
110         public int presentationDisplayId;
111 
RemoteDisplayInfo(String id)112         public RemoteDisplayInfo(String id) {
113             this.id = id;
114             status = STATUS_NOT_AVAILABLE;
115             volumeHandling = MediaRouter.RouteInfo.PLAYBACK_VOLUME_FIXED;
116             presentationDisplayId = -1;
117         }
118 
RemoteDisplayInfo(RemoteDisplayInfo other)119         public RemoteDisplayInfo(RemoteDisplayInfo other) {
120             id = other.id;
121             name = other.name;
122             description = other.description;
123             status = other.status;
124             volume = other.volume;
125             volumeMax = other.volumeMax;
126             volumeHandling = other.volumeHandling;
127             presentationDisplayId = other.presentationDisplayId;
128         }
129 
RemoteDisplayInfo(Parcel in)130         RemoteDisplayInfo(Parcel in) {
131             id = in.readString();
132             name = in.readString();
133             description = in.readString();
134             status = in.readInt();
135             volume = in.readInt();
136             volumeMax = in.readInt();
137             volumeHandling = in.readInt();
138             presentationDisplayId = in.readInt();
139         }
140 
isValid()141         public boolean isValid() {
142             return !TextUtils.isEmpty(id) && !TextUtils.isEmpty(name);
143         }
144 
145         @Override
describeContents()146         public int describeContents() {
147             return 0;
148         }
149 
150         @Override
writeToParcel(Parcel dest, int flags)151         public void writeToParcel(Parcel dest, int flags) {
152             dest.writeString(id);
153             dest.writeString(name);
154             dest.writeString(description);
155             dest.writeInt(status);
156             dest.writeInt(volume);
157             dest.writeInt(volumeMax);
158             dest.writeInt(volumeHandling);
159             dest.writeInt(presentationDisplayId);
160         }
161 
162         @Override
toString()163         public String toString() {
164             return "RemoteDisplayInfo{ id=" + id
165                     + ", name=" + name
166                     + ", description=" + description
167                     + ", status=" + status
168                     + ", volume=" + volume
169                     + ", volumeMax=" + volumeMax
170                     + ", volumeHandling=" + volumeHandling
171                     + ", presentationDisplayId=" + presentationDisplayId
172                     + " }";
173         }
174 
175         @SuppressWarnings("hiding")
176         public static final Parcelable.Creator<RemoteDisplayInfo> CREATOR =
177                 new Parcelable.Creator<RemoteDisplayInfo>() {
178             @Override
179             public RemoteDisplayInfo createFromParcel(Parcel in) {
180                 return new RemoteDisplayInfo(in);
181             }
182 
183             @Override
184             public RemoteDisplayInfo[] newArray(int size) {
185                 return new RemoteDisplayInfo[size];
186             }
187         };
188     }
189 }
190