diff options
author | Michael Bestas <mikeioannina@gmail.com> | 2015-11-29 14:49:13 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2015-12-01 14:06:26 -0800 |
commit | bcc94d1391b2771da293c4ea41763f5d50acd9b9 (patch) | |
tree | 8dd34f29ccab4c6edf37faabd52d646ec2bd4156 /src/java | |
parent | 95bb1d5c8838fcdcecdc074c1fbebe3f589907b7 (diff) | |
download | vendor_cmsdk-bcc94d1391b2771da293c4ea41763f5d50acd9b9.zip vendor_cmsdk-bcc94d1391b2771da293c4ea41763f5d50acd9b9.tar.gz vendor_cmsdk-bcc94d1391b2771da293c4ea41763f5d50acd9b9.tar.bz2 |
utils: Introduce ScreenType class
Change-Id: I6ddb14d6228565331d52069f4d96f93a9d306b45
Diffstat (limited to 'src/java')
-rw-r--r-- | src/java/org/cyanogenmod/internal/util/ScreenType.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/java/org/cyanogenmod/internal/util/ScreenType.java b/src/java/org/cyanogenmod/internal/util/ScreenType.java new file mode 100644 index 0000000..23bd9ad --- /dev/null +++ b/src/java/org/cyanogenmod/internal/util/ScreenType.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2015 The CyanogenMod 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 org.cyanogenmod.internal.util; + +import android.content.Context; +import android.util.DisplayMetrics; +import android.view.DisplayInfo; +import android.view.WindowManager; + +public class ScreenType { + // Device type reference + private static int sDeviceType = -1; + + // Device types + private static final int DEVICE_PHONE = 0; + private static final int DEVICE_HYBRID = 1; + private static final int DEVICE_TABLET = 2; + + private static int getScreenType(Context context) { + if (sDeviceType == -1) { + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + DisplayInfo outDisplayInfo = new DisplayInfo(); + wm.getDefaultDisplay().getDisplayInfo(outDisplayInfo); + int shortSize = Math.min(outDisplayInfo.logicalHeight, outDisplayInfo.logicalWidth); + int shortSizeDp = shortSize * DisplayMetrics.DENSITY_DEFAULT + / outDisplayInfo.logicalDensityDpi; + if (shortSizeDp < 600) { + // 0-599dp: "phone" UI with a separate status & navigation bar + sDeviceType = DEVICE_PHONE; + } else if (shortSizeDp < 720) { + // 600-719dp: "phone" UI with modifications for larger screens + sDeviceType = DEVICE_HYBRID; + } else { + // 720dp: "tablet" UI with a single combined status & navigation bar + sDeviceType = DEVICE_TABLET; + } + } + return sDeviceType; + } + + public static boolean isPhone(Context context) { + return getScreenType(context) == DEVICE_PHONE; + } + + public static boolean isHybrid(Context context) { + return getScreenType(context) == DEVICE_HYBRID; + } + + public static boolean isTablet(Context context) { + return getScreenType(context) == DEVICE_TABLET; + } +} |