来电闪关灯闪烁功能

如果是做手机的可以在系统的某些服务上添加,例如incallUi应用上添加的,第三方应用可以通过添加监听电话状态广播实现。
 
private Boolean isFlash = false;
private float currentBatteryCount;//当前手机电量
private CameraManager manager;

//初始化值获取相机服务
manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);

/*
*监听电话状态,可以放在监听的地方
*/
   if(InCallState.INCOMING == newState){
     if(Settings.System.getInt(mContext.getContentResolver(),FLASH_MODE, 1) == 1 &&  
            !isFlash && currentBatteryCount >= 15){//控制闪关灯开关,电量大于15%
       isFlash = true;
     new Thread(new Runnable() {//在新的线程中启动闪烁功能
         @Override
        public void run() {
            while (isFlash) {//循环开关闪关灯
        	    startFlash();
        	}
        }
      }).start();
  }else{
    isFlash = false;
  }else{
      isFlash = false;
   }
 
public void startFlash(){

    //判断是否有相机权限
    if (ContextCompat.checkSelfPermission(mContext, permission.CAMERA)
       == PackageManager.PERMISSION_GRANTED) {
	open();//开启闪关灯
	try {
	    Thread.sleep(500);//持续开启闪关灯时间500毫秒
	} catch (InterruptedException e) {
	    e.printStackTrace();
	}
	close();//关闭闪关灯
	try {  
	    Thread.sleep(500);//关闭闪关灯后等待500毫秒再循环打开

	} catch (InterruptedException e) {
	    e.printStackTrace();
	}
     }else{
	    Log.d("TAG","startFlash need request camera permission ");
       }
    }


/**
 *open flash
 * @return
*/
private void open() {
    try {
       manager.setTorchMode("0", true);
      android.util.Log.d("TAG","open flash");
   } catch (CameraAccessException e) {
     e.printStackTrace();
   }
}

/**
* close flash
* @return
*/
private void close() {
  try {
      manager.setTorchMode("0", false);//关闭闪关灯
      android.util.Log.d("TAG","proximitysensor open flash");
  } catch (CameraAccessException e) {
     e.printStackTrace();
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值