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