LocalDisplayAdapter.java revision 64a55af0ac700baecb0877235eb42caac59a3560
164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown/* 264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * Copyright (C) 2012 The Android Open Source Project 364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * 464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * you may not use this file except in compliance with the License. 664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * You may obtain a copy of the License at 764a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * 864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * 1064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * Unless required by applicable law or agreed to in writing, software 1164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 1264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * See the License for the specific language governing permissions and 1464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * limitations under the License. 1564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown */ 1664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 1764a55af0ac700baecb0877235eb42caac59a3560Jeff Brownpackage com.android.server.display; 1864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 1964a55af0ac700baecb0877235eb42caac59a3560Jeff Brownimport android.content.Context; 2064a55af0ac700baecb0877235eb42caac59a3560Jeff Brownimport android.os.IBinder; 2164a55af0ac700baecb0877235eb42caac59a3560Jeff Brownimport android.view.Surface; 2264a55af0ac700baecb0877235eb42caac59a3560Jeff Brownimport android.view.Surface.PhysicalDisplayInfo; 2364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 2464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown/** 2564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown * A display adapter for the local displays managed by Surface Flinger. 2664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown */ 2764a55af0ac700baecb0877235eb42caac59a3560Jeff Brownpublic final class LocalDisplayAdapter extends DisplayAdapter { 2864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown private final Context mContext; 2964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown private final LocalDisplayDevice mDefaultDisplayDevice; 3064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 3164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public LocalDisplayAdapter(Context context) { 3264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown mContext = context; 3364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 3464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown IBinder token = Surface.getBuiltInDisplay(Surface.BUILT_IN_DISPLAY_ID_MAIN); 3564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown mDefaultDisplayDevice = new LocalDisplayDevice(token); 3664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 3764a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 3864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown @Override 3964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public String getName() { 4064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown return "LocalDisplayAdapter"; 4164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 4264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 4364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown @Override 4464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public void register(Listener listener) { 4564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown listener.onDisplayDeviceAdded(mDefaultDisplayDevice); 4664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 4764a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 4864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown private final class LocalDisplayDevice extends DisplayDevice { 4964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown private final IBinder mDisplayToken; 5064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 5164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public LocalDisplayDevice(IBinder token) { 5264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown mDisplayToken = token; 5364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 5464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 5564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown @Override 5664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public DisplayAdapter getAdapter() { 5764a55af0ac700baecb0877235eb42caac59a3560Jeff Brown return LocalDisplayAdapter.this; 5864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 5964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 6064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown @Override 6164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public IBinder getDisplayToken() { 6264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown return mDisplayToken; 6364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 6464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 6564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown @Override 6664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown public void getInfo(DisplayDeviceInfo outInfo) { 6764a55af0ac700baecb0877235eb42caac59a3560Jeff Brown PhysicalDisplayInfo phys = new PhysicalDisplayInfo(); 6864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown Surface.getDisplayInfo(mDisplayToken, phys); 6964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown 7064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.name = mContext.getResources().getString( 7164a55af0ac700baecb0877235eb42caac59a3560Jeff Brown com.android.internal.R.string.display_manager_built_in_display); 7264a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.width = phys.width; 7364a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.height = phys.height; 7464a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.refreshRate = phys.refreshRate; 7564a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.densityDpi = (int)(phys.density * 160 + 0.5f); 7664a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.xDpi = phys.xDpi; 7764a55af0ac700baecb0877235eb42caac59a3560Jeff Brown outInfo.yDpi = phys.yDpi; 7864a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 7964a55af0ac700baecb0877235eb42caac59a3560Jeff Brown } 8064a55af0ac700baecb0877235eb42caac59a3560Jeff Brown} 81