一、打开手电筒

启动类

  1. package com.dshvv.myapplication;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. public class MainActivity extends AppCompatActivity {
  6. FlashUtil ft = new FlashUtil();
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_main);
  11. }
  12. /*
  13. * 按钮点击事件
  14. */
  15. public void buttonClick(View view) {
  16. ft.switchFlash(this);
  17. }
  18. }

手电筒工具类

  1. package com.dshvv.myapplication;
  2. import android.annotation.TargetApi;
  3. import android.content.Context;
  4. import android.hardware.camera2.CameraManager;
  5. import android.os.Build;
  6. /*
  7. * 手电筒(开启闪光灯)工具类
  8. * 使用前,可能需要先申请闪光灯权限 <uses-permission android:name="android.permission.FLASHLIGHT" />
  9. * 部分手机需要摄像头权限: <uses-permission android:name="android.permission.CAMERA" /> 注:注意android5.0以上权限调用
  10. * 使用前,请先用hasFlashlight()方法判断设备是否有闪光灯
  11. * 务必在activity或fragment的onDestroy()方法里调用lightsOff()方法,确保Camera被释放
  12. *
  13. * 使用方法
  14. * 开启sos:new FlashlightUtils().sos()
  15. * 开启闪光灯: new FlashlightUtils().lightsOn()
  16. */
  17. public class FlashUtil {
  18. private Boolean isOpen = false;
  19. private CameraManager manager ;
  20. /*
  21. * 开关手电筒(安卓6.0以上)
  22. * return 返回当前闪光灯开启状态
  23. */
  24. @TargetApi(Build.VERSION_CODES.M)
  25. protected boolean switchFlash(Context context){
  26. try{
  27. manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
  28. if(isOpen){
  29. manager.setTorchMode("0", false);// "0"是主闪光灯
  30. this.isOpen = false;
  31. }else{
  32. manager.setTorchMode("0", true);
  33. this.isOpen = true;
  34. }
  35. }catch(Exception e){}
  36. return this.isOpen;
  37. }
  38. }