/*
* Copyright (C) 2012 YIXIA.COM
*
* 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 com.yixia.zi.utils;
import java.lang.reflect.Method;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.Display;
@SuppressLint("NewApi")
public class DeviceUtils {
@SuppressWarnings("deprecation")
public static int getScreenWidth(Activity ctx) {
int width;
Display display = ctx.getWindowManager().getDefaultDisplay();
if (UIUtils.hasJellyBeanMR1()) {
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getRealMetrics(displayMetrics);
width = displayMetrics.widthPixels;
} else {
try {
Method mGetRawW = Display.class.getMethod("getRawWidth");
width = (Integer) mGetRawW.invoke(display);
} catch (Exception e) {
width = display.getWidth();
}
}
return width;
}
@SuppressWarnings("deprecation")
public static int getScreenHeight(Activity ctx) {
int height;
Display display = ctx.getWindowManager().getDefaultDisplay();
if (UIUtils.hasJellyBeanMR1()) {
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getRealMetrics(displayMetrics);
height = displayMetrics.heightPixels;
} else {
try {
Method mGetRawH = Display.class.getMethod("getRawHeight");
height = (Integer) mGetRawH.invoke(display);
} catch (Exception e) {
height = display.getHeight();
}
}
return height;
}
public static double getScreenPhysicalSize(Activity ctx) {
DisplayMetrics dm = new DisplayMetrics();
ctx.getWindowManager().getDefaultDisplay().getMetrics(dm);
double diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2));
return diagonalPixels / (160 * dm.density);
}
}