1fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown/*
2fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Copyright (C) 2012 The Android Open Source Project
3fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown *
4fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * you may not use this file except in compliance with the License.
6fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * You may obtain a copy of the License at
7fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown *
8fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown *
10fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Unless required by applicable law or agreed to in writing, software
11fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * See the License for the specific language governing permissions and
14fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * limitations under the License.
15fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown */
16fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
17fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownpackage android.hardware.display;
18fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
19bd6e1500aedc5461e832f69e76341bff0e55fa2bJeff Brownimport android.hardware.display.IDisplayManagerCallback;
20e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brownimport android.hardware.display.WifiDisplay;
21e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brownimport android.hardware.display.WifiDisplayStatus;
22fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.view.DisplayInfo;
23a506a6ec94863a35acca9feb165db76ddac3892cJeff Brownimport android.view.Surface;
24fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
25fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown/** @hide */
26fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Browninterface IDisplayManager {
27bd6e1500aedc5461e832f69e76341bff0e55fa2bJeff Brown    DisplayInfo getDisplayInfo(int displayId);
28bd6e1500aedc5461e832f69e76341bff0e55fa2bJeff Brown    int[] getDisplayIds();
29bd6e1500aedc5461e832f69e76341bff0e55fa2bJeff Brown
30bd6e1500aedc5461e832f69e76341bff0e55fa2bJeff Brown    void registerCallback(in IDisplayManagerCallback callback);
31e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown
32feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
33feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    // The process must have previously registered a callback.
34feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    void startWifiDisplayScan();
35e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown
36feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
37feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    void stopWifiDisplayScan();
38feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown
39feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
40e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown    void connectWifiDisplay(String address);
41e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown
42bc335457462a12434a9df6955de1dd693cdccac7Jeff Brown    // No permissions required.
43e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown    void disconnectWifiDisplay();
44e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown
45e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
4689d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown    void renameWifiDisplay(String address, String alias);
4789d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown
4889d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
4989d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown    void forgetWifiDisplay(String address);
5089d5546d7fd3a3bb19820c42e8b4527013dd6545Jeff Brown
51feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
52feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    void pauseWifiDisplay();
53feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown
54feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    // Requires CONFIGURE_WIFI_DISPLAY permission.
55feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown    void resumeWifiDisplay();
56feef9887e8f8eb6f64fc1b4552c02efb5755cdc1Jeff Brown
57bc335457462a12434a9df6955de1dd693cdccac7Jeff Brown    // No permissions required.
58e08ae388d63c4db8f9d9a7ecd634f9a51f6e91b9Jeff Brown    WifiDisplayStatus getWifiDisplayStatus();
59a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown
607d00affce6e25b22fd8fc135933b3bf6b547a0dcJeff Brown    // Requires CAPTURE_VIDEO_OUTPUT or CAPTURE_SECURE_VIDEO_OUTPUT for certain
617d00affce6e25b22fd8fc135933b3bf6b547a0dcJeff Brown    // combinations of flags.
627d00affce6e25b22fd8fc135933b3bf6b547a0dcJeff Brown    int createVirtualDisplay(IBinder token, String packageName,
637d00affce6e25b22fd8fc135933b3bf6b547a0dcJeff Brown            String name, int width, int height, int densityDpi, in Surface surface, int flags);
64a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown
65a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown    // No permissions required but must be same Uid as the creator.
66a506a6ec94863a35acca9feb165db76ddac3892cJeff Brown    void releaseVirtualDisplay(in IBinder token);
67fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown}
68