好库网
/*
 * 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.app.Activity;
import android.util.DisplayMetrics;
import android.view.Display;

public class DeviceUtils {
	@SuppressWarnings("deprecation")
	public static int getScreenWidth(Activity ctx) {
		int width;
		Display display = ctx.getWindowManager().getDefaultDisplay();
		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();
		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);
	}
}