一个最简手电筒应用
功能:开启关闭手机闪光灯
使用方法:打开应用,点击屏幕开启手电筒,再次点击屏幕关闭手电筒。
(一)效果图
(二)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>