一个最简手电筒

 一个最简手电筒应用

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

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

(一)效果图

(二)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();
            }
        }
    }
}

(三)布局页面代码: 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainLayout"
    android:background="@color/black"
    tools:context=".MainActivity">

</RelativeLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值