| /* |
| * Copyright (C) 2013 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 com.android.media.remotedisplay; |
| |
| import android.annotation.SystemApi; |
| import android.media.RemoteDisplayState.RemoteDisplayInfo; |
| import android.text.TextUtils; |
| |
| import java.util.Objects; |
| |
| /** |
| * Represents a remote display that has been discovered. |
| * |
| * @hide |
| */ |
| @SystemApi |
| public class RemoteDisplay { |
| private final RemoteDisplayInfo mMutableInfo; |
| private RemoteDisplayInfo mImmutableInfo; |
| |
| /** |
| * Status code: Indicates that the remote display is not available. |
| */ |
| public static final int STATUS_NOT_AVAILABLE = RemoteDisplayInfo.STATUS_NOT_AVAILABLE; |
| |
| /** |
| * Status code: Indicates that the remote display is in use by someone else. |
| */ |
| public static final int STATUS_IN_USE = RemoteDisplayInfo.STATUS_IN_USE; |
| |
| /** |
| * Status code: Indicates that the remote display is available for new connections. |
| */ |
| public static final int STATUS_AVAILABLE = RemoteDisplayInfo.STATUS_AVAILABLE; |
| |
| /** |
| * Status code: Indicates that the remote display is current connecting. |
| */ |
| public static final int STATUS_CONNECTING = RemoteDisplayInfo.STATUS_CONNECTING; |
| |
| /** |
| * Status code: Indicates that the remote display is connected and is mirroring |
| * display contents. |
| */ |
| public static final int STATUS_CONNECTED = RemoteDisplayInfo.STATUS_CONNECTED; |
| |
| /** |
| * Volume handling: Output volume can be changed. |
| */ |
| public static final int PLAYBACK_VOLUME_VARIABLE = |
| RemoteDisplayInfo.PLAYBACK_VOLUME_VARIABLE; |
| |
| /** |
| * Volume handling: Output volume is fixed. |
| */ |
| public static final int PLAYBACK_VOLUME_FIXED = |
| RemoteDisplayInfo.PLAYBACK_VOLUME_FIXED; |
| |
| /** |
| * Creates a remote display with the specified name and id. |
| */ |
| public RemoteDisplay(String id, String name) { |
| if (TextUtils.isEmpty(id)) { |
| throw new IllegalArgumentException("id must not be null or empty"); |
| } |
| mMutableInfo = new RemoteDisplayInfo(id); |
| setName(name); |
| } |
| |
| public String getId() { |
| return mMutableInfo.id; |
| } |
| |
| public String getName() { |
| return mMutableInfo.name; |
| } |
| |
| public void setName(String name) { |
| if (!Objects.equals(mMutableInfo.name, name)) { |
| mMutableInfo.name = name; |
| mImmutableInfo = null; |
| } |
| } |
| |
| public String getDescription() { |
| return mMutableInfo.description; |
| } |
| |
| public void setDescription(String description) { |
| if (!Objects.equals(mMutableInfo.description, description)) { |
| mMutableInfo.description = description; |
| mImmutableInfo = null; |
| } |
| } |
| |
| public int getStatus() { |
| return mMutableInfo.status; |
| } |
| |
| public void setStatus(int status) { |
| if (mMutableInfo.status != status) { |
| mMutableInfo.status = status; |
| mImmutableInfo = null; |
| } |
| } |
| |
| public int getVolume() { |
| return mMutableInfo.volume; |
| } |
| |
| public void setVolume(int volume) { |
| if (mMutableInfo.volume != volume) { |
| mMutableInfo.volume = volume; |
| mImmutableInfo = null; |
| } |
| } |
| |
| public int getVolumeMax() { |
| return mMutableInfo.volumeMax; |
| } |
| |
| public void setVolumeMax(int volumeMax) { |
| if (mMutableInfo.volumeMax != volumeMax) { |
| mMutableInfo.volumeMax = volumeMax; |
| mImmutableInfo = null; |
| } |
| } |
| |
| public int getVolumeHandling() { |
| return mMutableInfo.volumeHandling; |
| } |
| |
| public void setVolumeHandling(int volumeHandling) { |
| if (mMutableInfo.volumeHandling != volumeHandling) { |
| mMutableInfo.volumeHandling = volumeHandling; |
| mImmutableInfo = null; |
| } |
| } |
| |
| public int getPresentationDisplayId() { |
| return mMutableInfo.presentationDisplayId; |
| } |
| |
| public void setPresentationDisplayId(int presentationDisplayId) { |
| if (mMutableInfo.presentationDisplayId != presentationDisplayId) { |
| mMutableInfo.presentationDisplayId = presentationDisplayId; |
| mImmutableInfo = null; |
| } |
| } |
| |
| @Override |
| public String toString() { |
| return "RemoteDisplay{" + mMutableInfo.toString() + "}"; |
| } |
| |
| RemoteDisplayInfo getInfo() { |
| if (mImmutableInfo == null) { |
| mImmutableInfo = new RemoteDisplayInfo(mMutableInfo); |
| } |
| return mImmutableInfo; |
| } |
| } |