DisplayManager.java revision fa25bf5382467b1018bd9af7f1cb30a23d7d59f7
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
19fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.content.Context;
20fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.os.IBinder;
21fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.os.RemoteException;
22fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.os.ServiceManager;
23fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.util.Log;
24fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownimport android.view.DisplayInfo;
25fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
26fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown/**
27fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Manages the properties, media routing and power state of attached displays.
28fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * <p>
29fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Get an instance of this class by calling
30fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * {@link android.content.Context#getSystemService(java.lang.String)
31fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * Context.getSystemService()} with the argument
32fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * {@link android.content.Context#DISPLAY_SERVICE}.
33fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown * </p>
34fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown */
35fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brownpublic final class DisplayManager {
36fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    private static final String TAG = "DisplayManager";
37fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
38fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    private static DisplayManager sInstance;
39fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
40fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    private final IDisplayManager mDm;
41fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
42fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    private DisplayManager(IDisplayManager dm) {
43fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown        mDm = dm;
44fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    }
45fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
46fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    /**
47fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * Gets an instance of the display manager.
48fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @return The display manager instance.
49fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @hide
50fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     */
51fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    public static DisplayManager getInstance() {
52fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown        synchronized (DisplayManager.class) {
53fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown            if (sInstance == null) {
54fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown                IBinder b = ServiceManager.getService(Context.DISPLAY_SERVICE);
55fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown                sInstance = new DisplayManager(IDisplayManager.Stub.asInterface(b));
56fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown            }
57fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown            return sInstance;
58fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown        }
59fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    }
60fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown
61fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    /**
62fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * Get information about a particular logical display.
63fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     *
64fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @param displayId The logical display id.
65fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @param outInfo A structure to populate with the display info.
66fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     * @return True if the logical display exists, false otherwise.
67fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown     */
68fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    public boolean getDisplayInfo(int displayId, DisplayInfo outInfo) {
69fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown        try {
70fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown            return mDm.getDisplayInfo(displayId, outInfo);
71fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown        } catch (RemoteException ex) {
72fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown            Log.e(TAG, "Could not get display information from display manager.", ex);
73fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown            return false;
74fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown        }
75fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown    }
76fa25bf5382467b1018bd9af7f1cb30a23d7d59f7Jeff Brown}
77