一个最简手电筒

 一个最简手电筒应用

功能:开启关闭手机闪光灯

使用方法:打开应用,点击屏幕开启手电筒,再次点击屏幕关闭手电筒。

(一)效果图

(二)Activity页面代码:

package com.demo.flash;

import androidx.appcompat.app.AppCompatActivity;

import android.content.pm.PackageManager;
import android.graphics.Color;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity {

    private RelativeLayout mainLayout; // 对应XML中的布局ID
    private CameraManager cameraManager;
    private String cameraId;
    private boolean isTorchOn = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mainLayout = findViewById(R.id.mainLayout); // 关联XML中的布局ID

        // 检查设备是否支持闪光灯
        boolean isFlashAvailable = getApplicationContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

        if (!isFlashAvailable) {
            // 如果设备不支持闪光灯,你可以在这里采取适当的操作
            return;
        }

        // 获取CameraManager以控制闪光灯
        cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);

        try {
            cameraId = cameraManager.getCameraIdList()[0]; // 默认使用第一个摄像头
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }

        // 设置整个界面的点击事件
        mainLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                toggleFlashlightAndBackgroundColor();
            }
        });
    }

    // 切换闪光灯的状态和背景颜色
    private void toggleFlashlightAndBackgroundColor() {
        isTorchOn = !isTorchOn;

        // 根据闪光灯状态设置背景颜色
        if (isTorchOn) {
            mainLayout.setBackgroundColor(Color.rgb(255,255,0)); // 开启状态,设置背景颜色为黄色
            try {
                cameraManager.setTorchMode(cameraId, true); // 打开闪光灯
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        } else {
            mainLayout.setBackgroundColor(Color.rgb(0,0,0)); // 关闭状态,设置背景颜色为灰色
            try {
                cameraManager.setTorchMode(cameraId, false); // 关闭闪光灯
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
    }
}

(三)布局页面代码: 




你可能感兴趣的:(android)