Android 打开闪光灯(手电筒)

复制代码
package com.example.openBackLight;

import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.View;
import android.hardware.Camera.Parameters;
import android.widget.Button;

public class MyActivity extends Activity {
    private Button button;
    private Camera camera;
    private Parameters parameters;
    public boolean hasClosed = true; // 定义开关状态,状态为false,打开状态,状态为true,关闭状态

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        button = (Button) findViewById(R.id.button);
    }

    public void toggleLight(View view) {
        if (hasClosed) {
            camera = Camera.open();
            parameters = camera.getParameters();
            parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);// 开启
            camera.setParameters(parameters);
            button.setText("关闭闪光灯");
            hasClosed = false;
        } else {
            parameters.setFlashMode(Parameters.FLASH_MODE_OFF);// 关闭
            camera.setParameters(parameters);
            button.setText("开启闪光灯");
            hasClosed = true;
            camera.release();
        }
    }
    
}
复制代码

布局文件很简单,就一个button,点击的时候会调用toggleLight()方法.

要加入以下权限:

    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature android:name="android.hardware.camera" />

 

posted @   无忧之路  阅读(4577)  评论(0编辑  收藏  举报
编辑推荐:
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
阅读排行:
· 一个适用于 .NET 的开源整洁架构项目模板
· API 风格选对了,文档写好了,项目就成功了一半!
· 【开源】C#上位机必备高效数据转换助手
· .NET 9.0 使用 Vulkan API 编写跨平台图形应用
· MyBatis中的 10 个宝藏技巧!
无忧之路
点击右上角即可分享
微信分享提示