一、打开手电筒
启动类
package com.dshvv.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
FlashUtil ft = new FlashUtil();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/*
* 按钮点击事件
*/
public void buttonClick(View view) {
ft.switchFlash(this);
}
}
手电筒工具类
package com.dshvv.myapplication;
import android.annotation.TargetApi;
import android.content.Context;
import android.hardware.camera2.CameraManager;
import android.os.Build;
/*
* 手电筒(开启闪光灯)工具类
* 使用前,可能需要先申请闪光灯权限 <uses-permission android:name="android.permission.FLASHLIGHT" />
* 部分手机需要摄像头权限: <uses-permission android:name="android.permission.CAMERA" /> 注:注意android5.0以上权限调用
* 使用前,请先用hasFlashlight()方法判断设备是否有闪光灯
* 务必在activity或fragment的onDestroy()方法里调用lightsOff()方法,确保Camera被释放
*
* 使用方法
* 开启sos:new FlashlightUtils().sos()
* 开启闪光灯: new FlashlightUtils().lightsOn()
*/
public class FlashUtil {
private Boolean isOpen = false;
private CameraManager manager ;
/*
* 开关手电筒(安卓6.0以上)
* return 返回当前闪光灯开启状态
*/
@TargetApi(Build.VERSION_CODES.M)
protected boolean switchFlash(Context context){
try{
manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
if(isOpen){
manager.setTorchMode("0", false);// "0"是主闪光灯
this.isOpen = false;
}else{
manager.setTorchMode("0", true);
this.isOpen = true;
}
}catch(Exception e){}
return this.isOpen;
}
}