Android实现闪光灯效果
作者:诸葛佩奇 发布时间:2023-08-02 12:20:06
标签:Android,闪光灯
本文实例为大家分享了Android实现闪光灯效果的具体代码,供大家参考,具体内容如下
一、声明闪光灯的权限
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT" />
注意:Camera权限6.0以上需要动态申请权限
二、具体的代码如下
package com.google.yang.myapplication;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 闪光灯的控制
*
* @author yang
*/
public class MainActivity extends AppCompatActivity {
private Button open;
private Button close;
private Button openFlicker;
private Button closeFlicker;
private Camera camera;
private Boolean isShanshuo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
open = (Button) this.findViewById(R.id.open);
close = (Button) this.findViewById(R.id.close);
openFlicker = (Button) findViewById(R.id.openFlicker);
closeFlicker = (Button) findViewById(R.id.closeFlicker);
open.setOnClickListener(openOnClickListener);
close.setOnClickListener(closeOnClickListener);
openFlicker.setOnClickListener(openFlickerOnClickListener);
closeFlicker.setOnClickListener(closeFlickerOnClickListener);
}
/**
* 打开手电筒
*/
private OnClickListener openOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
open();
}
};
/**
* 关闭手电筒
*/
private OnClickListener closeOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
close();
}
};
/**
* 开启闪烁
*/
private OnClickListener openFlickerOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
isShanshuo = true;
openFlicker.setEnabled(false);
new Thread(new Runnable() {
@Override
public void run() {
while (isShanshuo) {
open();
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
close();
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
};
/**
* 关闭闪烁
*/
private OnClickListener closeFlickerOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
isShanshuo = false;
openFlicker.setEnabled(true);
}
};
/**
* 打开闪光灯
*
* @return
*/
private void open() {
try {
camera = Camera.open();
camera.startPreview();
Parameters parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 关闭闪光灯
*
* @return
*/
private void close() {
try {
Parameters parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
camera.release();
camera = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
XML界面很简单,四个按钮:
有兴趣的可以试一试,当作一个小工具收藏一下。
来源:https://blog.csdn.net/fengyeNom1/article/details/80911545


猜你喜欢
- 先给大家展示下效果图,对第三方开源 android tickplusdrawable相关知识感兴趣的朋友一起学习吧。Android tick
- 前言回调的核心就是回调方将本身即this传递给调用方,这样调用方就可以在调用完毕之后告诉回调方它想要知道的信息。1、什么是回调软件模块之间总
- 经常进行图形界面设计的编程者肯定知道,控件在设计的时候才能随意拖动,运行的时候就不能拖动了.你肯定会问:运行时能随意拖动控件吗?答案是肯定的
- Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法问题描述:开发中发现,SwipeRefresh
- 这篇文章主要介绍了Spring整合Dubbo框架过程及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 一、JNDI是什么?JNDI--Java 命名和目录接口(Java Naming and Directory Interface),是一组在
- 本文实例讲述了Android控件之Gallery用法。分享给大家供大家参考。具体如下:Gallery组件主要用于横向显示图像列表,不过按常规
- 前言大家应该都遇到过,在工作和生活中经常要填写一些个人资料,这时候往往需要放证件照上去,但是有时候人家要求是红底或白底,但是偏偏不巧的是你以
- 本文实例讲述了C#获取机器码的方法。分享给大家供大家参考,具体如下:using System.Runtime.InteropServices
- 目标依赖<!-- poi工具类--> <dependency>
- 一、背景项目中肯定会遇到异步调用其他方法的场景,比如有个计算过程,需要计算很多个指标的值,但是每个指标计算的效率快慢不同,如果采用同步执行的
- 本文主要介绍了关于单例模式的一些问题,想学习C#单例模式的同学们可以看一看,还是有些帮助c#中的单例模式单例模式是指在设计一个类时,保证在运
- strings.xml 有很多需要注意的地方和一些小技巧,知道了这些可以让你的 Android 应用更加规范易用,感兴趣的小伙伴们可以参考一
- 面试题1:你了解线程池么?简单介绍一下。java提供的一个java.util.concurrent.Executor接口的实现用于创建线程池
- 一般而言,Spring的依赖注入有三种:构造器注入、setter注入以及接口注入。本文主要讲构造器注入与setter注入。1、构造器注入为了
- Shiro介绍Shiro是一款安全框架,主要的三个类Subject、SecurityManager、RealmSubject:表示当前用户S
- 最近在修改Android7.0原生平台的一些bug,其中有关Android Beam传输文件的一些问题还是蛮多的。所以特地找时间总结下曾经踏
- 本文实例分析了C#中float的取值范围和精度。分享给大家供大家参考。具体分析如下:float类型的表现形式:默认情况下,赋值运算符右侧的实
- 基本概念包名值得是你APP的包,在创建工程时候设置的,需要在微信支付平台上面设置。签名指的是你生成APK时候所用的签名文件的md5,去掉:全
- 前言继承是面向对象语法的三大特征之一。继承可以降低代码编写的冗余度,提高编程的效率。通过继承,子类获得了父类的成员变量和方法。一个子类如何继