aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Bestas <mikeioannina@gmail.com>2015-11-29 14:49:13 +0200
committerGerrit Code Review <gerrit@cyanogenmod.org>2015-12-01 14:06:26 -0800
commitbcc94d1391b2771da293c4ea41763f5d50acd9b9 (patch)
tree8dd34f29ccab4c6edf37faabd52d646ec2bd4156
parent95bb1d5c8838fcdcecdc074c1fbebe3f589907b7 (diff)
downloadlineage-sdk-bcc94d1391b2771da293c4ea41763f5d50acd9b9.tar.gz
lineage-sdk-bcc94d1391b2771da293c4ea41763f5d50acd9b9.tar.bz2
lineage-sdk-bcc94d1391b2771da293c4ea41763f5d50acd9b9.zip
utils: Introduce ScreenType class
Change-Id: I6ddb14d6228565331d52069f4d96f93a9d306b45
-rw-r--r--src/java/org/cyanogenmod/internal/util/ScreenType.java66
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 00000000..23bd9ad6
--- /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;
+ }
+}