Android开发Android技术知识Android开发

ScreenUtils Android屏幕工具类

2018-07-04  本文已影响29人  Super面包

import android.app.Activity;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.content.Context;
import android.graphics.Rect;
import android.os.Build;
import android.os.PowerManager;
import android.util.DisplayMetrics;
import android.view.View;

@SuppressWarnings("deprecation")
public class ScreenUtils {

    /**
     * 解锁屏幕
     *
     * @param context
     */
    public static void unlockScreen(Context context) {
        KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
        KeyguardLock kl = km.newKeyguardLock("unLock");
        kl.disableKeyguard();

        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
        wl.acquire(1000);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            wl.release();
        }
    }

    /**
     * 判断是否锁屏状态
     *
     * @param context
     * @return
     */
    public final static boolean isScreenLocked(Context context) {
        if (null != context) {
            android.app.KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemService(
                    Context.KEYGUARD_SERVICE);
            //* 如果flag为true,表示有两种状态:a、屏幕是黑的 b、目前正处于解锁状态 。
            //* 如果flag为false,表示目前未锁屏
            //* 关闭屏幕不等于锁屏
            return mKeyguardManager.inKeyguardRestrictedInputMode();
        }

        return false;
    }

    /**
     * 为true,则表示屏幕“亮”了,否则屏幕“暗”了。
     *
     * @param context
     * @return
     */
    public final static boolean isScreenOn(Context context) {
        if (null != context) {
            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            return pm.isScreenOn();
        }

        return false;
    }

    /**
     * 屏幕屏幕密度
     *
     * @param context
     * @return
     */
    public static float getScreenDensity(Context context) {
        if (null != context) {
            return context.getResources().getDisplayMetrics().density;
        }
        return 0;
    }

    /**
     * 屏幕宽度
     *
     * @param context
     * @return
     */
    public static int getScreenWidth(Context context) {
        if (null != context) {
            return context.getResources().getDisplayMetrics().widthPixels;
        }

        return 0;
    }

    /**
     * 屏幕高度
     */
    public static int getScreenHeight(Context context) {
        if (null != context) {
            return context.getResources().getDisplayMetrics().heightPixels;
        }

        return 0;
    }

    /**
     * 获取状态栏高度——方法4
     * 状态栏高度 = 屏幕高度 - 应用区高度
     * *注意*该方法不能在初始化的时候用
     * */
    public static int getStausBarHeight(Context context) {
        int statusBar=PixelUtil.dp2px(20, context);
        try{
            int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
                    "android");
            if (resourceId > 0) {
                statusBar = context.getResources().getDimensionPixelSize(resourceId);
            }
        }catch (Exception e){

        }
        return statusBar;
    }

上一篇下一篇

猜你喜欢

热点阅读