Android常用小功能

在项目开发中有用到一些系统小功能,在此记录一下。
Note: 以下方法我是写在PhoneWindowManager.java中的,其他地方执行相同代码可能需要申请一下相应的权限。

1. 开启关闭手电筒

    private boolean hasClosed = true;
    private CameraManager mCameraManager;
    private String mCameraId;
    private void controlFlashlight(){
    	mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
    	try {
            mCameraId = getCameraId();
        } catch (Throwable e) {
            Log.e(TAG, "Couldn't initialize.", e);
            return;
        }
    	if (mCameraId == null) {
    		return;
    	}
    	if (hasClosed) {
    		try {
                    //开启手电
                    mCameraManager.setTorchMode(mCameraId, true);
                    hasClosed = false;
                } catch (CameraAccessException e) {
                    Log.e(TAG, "Couldn't set torch mode", e);
                }
        } else {
            try {
                    //关闭手电
                    mCameraManager.setTorchMode(mCameraId, false);
                    hasClosed = true;
                } catch (CameraAccessException e) {
                    Log.e(TAG, "Couldn't set torch mode", e);
                }
        }
    }

    /**
    *获取可用的CameraID
    *开启手电需要CameraID
    */
    private String getCameraId() throws CameraAccessException {
        String[] ids = mCameraManager.getCameraIdList();
        for (String id : ids) {
            CameraCharacteristics c = mCameraManager.getCameraCharacteristics(id);
            Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
            Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
            if (flashAvailable != null && flashAvailable
                    && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
                return id;
            }
        }
        return null;
    }

2. 检测某个APP是否运行在前台
需传入APP的包名

  private boolean isAppRunning(String packageName) {
        ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
        //getRunningTasks(num); num值可根据需求调整
        List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1);
        if (list.size() <= 0) {
            return false;
        }
        for (ActivityManager.RunningTaskInfo info : list) {
            if (info.topActivity.getPackageName().equals(packageName)) {
                return true;
            }
        }
        return false;
    }

3. 检测设备是否处于锁屏状态

   private boolean isOnLockScreenPage(){
    	KeyguardManager mKeyguardManager = (KeyguardManager) mContext.getSystemService(Context.KEYGUARD_SERVICE);
    	return mKeyguardManager.inKeyguardRestrictedInputMode();
    }

4. 点亮屏幕

   private void lightScreen(){
        PowerManager mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
    	if (!mPowerManager.isScreenOn()) {
    		mPowerManager.wakeUp(SystemClock.uptimeMillis());	
    	}
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值