手电筒功能实现简单很实用,下面我们就来研究一下如何自制一款手电筒小程序,初学者可以通过实例了解原理,提高学习android技术的热情和动力。

首先我们了解一下手电筒要调用哪些android权限:

  <!-- 打开Camera的权限 --><uses-permission android:name="android.permission.CAMERA" /><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.autofocus" /><!-- 开启闪光灯权限 --><uses-permission android:name="android.permission.FLASHLIGHT" /><uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

上面三个是摄像头权限,下面两个是闪光灯权限,在本实例中都要配置一下。

下面看一下MainActivity.java:

package com.zxx1.light;import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Toast;public class LightActivity extends Activity {private Button lightBtn = null;private Camera camera = null;private Parameters parameters = null;public static boolean isLight = true; // 定义开关状态,状态为false,打开状态,状态为true,关闭状态private int back = 0;// @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 全屏设置,隐藏窗口所有装饰getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置屏幕显示无标题,必须启动就要设置好,否则不能再次被设置getWindow().setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//保持屏幕常亮setContentView(R.layout.main);lightBtn = (Button) findViewById(R.id.btn_light);lightBtn.setOnClickListener(new OnClickListenerImpl());}class OnClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {if (isLight) {lightBtn.setBackgroundResource(R.drawable.shou_on);// 设置不同图片camera = Camera.open();// 打开闪光灯parameters = camera.getParameters();parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);// 开启camera.setParameters(parameters);camera.startPreview();// 开启isLight = false;} else {lightBtn.setBackgroundResource(R.drawable.shou_off);parameters.setFlashMode(Parameters.FLASH_MODE_OFF);// 关闭camera.setParameters(parameters);camera.stopPreview();isLight = true;camera.release();}}}@Overrideprotected void onDestroy() {camera.release();super.onDestroy();}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {back++;switch (back) {case 1:Toast.makeText(LightActivity.this, getString(R.string.again_exit), Toast.LENGTH_SHORT).show();break;case 2:back = 0;DulBack();break;}return true;} else {return super.onKeyDown(keyCode, event);}}public void DulBack() { // 关闭程序if (isLight) {// 开关关闭时LightActivity.this.finish();android.os.Process.killProcess(android.os.Process.myPid());// 关闭进程} else if (!isLight) {// 开关打开时camera.release();LightActivity.this.finish();android.os.Process.killProcess(android.os.Process.myPid());// 关闭进程isLight = true;// 避免,打开开关后退出程序,再次进入不打开开关直接退出时,程序错误}}
}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/relativelayout"android:layout_width="wrap_content"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btn_light"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:background="@drawable/shou_off" /></RelativeLayout>

最后别忘了配置权限,最后运行实例如下:

喜欢的朋友关注我吧!谢谢。

Android实战简易教程-第五十七枪(分享小米手电筒源码)相关推荐

  1. Android实战简易教程五十七(分享小米手电筒源码)

    手电筒功能实现简单很实用,下面我们就来研究一下如何自制一款手电筒小程序,初学者可以通过实例了解原理,提高学习android技术的热情和动力. 首先我们了解一下手电筒要调用哪些android权限: [h ...

  2. Android实战简易教程-第五十枪(工具类的测试)

    在开发中,为了提高开发效率,我们一般会自定义自己的工具类.为了保证项目的可靠性,在将工具类引入项目之前,我们一般都会对工具类进行单元测试,下面我们通过一个实例看一下如何搭建测试环境. 1.首先自定义一 ...

  3. Android实战简易教程-第五十一枪(ListView实现子控件的动态显示和隐藏、checkbox全选和反选)

    前段时间写过一篇文章:Android实战简易教程-第四十七枪(ListView多选-实现点餐系统)有的同学留言建议,可不可以动态控制checkbox的显示和全选反选功能,我研究了一下,发现实现也比较容 ...

  4. Android实战简易教程-第六十枪(分享一个城市选择功能模块)

    在做一些APP的时候可能会用到城市选择模块的功能,本实例可以提供位置自定定位和手动选择的功能,非常好用,大家可以修改后加入自己的项目中. 首先看一下效果: 1.进入有的手机可能会提示权限要求,这时我们 ...

  5. Android实战简易教程-第三十九枪(第三方短信验证平台Mob和验证码自动填入功能结合实例)

    用户注册或者找回密码时一般会用到短信验证功能,这里我们使用第三方的短信平台进行验证实例. 我们用到第三方短信验证平台是Mob,地址为:http://mob.com/ 一.注册用户.获取SDK 大家可以 ...

  6. Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)

    学习Android有一段时间了,对服务器端有很深的好奇,决定对服务器端的实现进行一些研究,这里实现了一个简单的小例子,用于获取服务器端的json数据,例子很简单,适合初学者学习使用. 服务器端 首先我 ...

  7. Android实战简易教程-第六十五枪(自定义控件实现数字液晶时钟Demo)

    下面我们研究一下如何实现一个数字液晶时钟,本质属于特效一种哈. 首先创建一个布局文件: <?xml version="1.0" encoding="utf-8&qu ...

  8. android tesseract-ocr实例教程(包含中文识别)(附源码)

    (转载请注明出处:http://blog.csdn.net/buptgshengod) ps:鉴于大家对这个项目这么感兴趣,问题也比较多,我简单的再说几点. 1.我只是使用了这个ocr引擎,算法什么的 ...

  9. Android实战简易教程-第七十五枪(WIFI直连工具类)

    设置指定的WIFI用户名密码和加密方式,可以进行WIFI直连. 1.工具类-WifiUtil.java: package demo.androidwar.com.myapplication;impor ...

最新文章

  1. VS2017登陆不了,TFS无法连接成功的问题
  2. UA MATH564 概率论I 离散型随机变量
  3. java的队列_java实现队列
  4. JavaWeb学习过程 之c3p0的使用
  5. flutter不支持热更新_Flutter 在安卓上可以实现热更新了
  6. linux网卡ip自动启动不了怎么办,Linux杂谈:解决配置静态ip后eth0网卡启动不了的问题...
  7. ip电话系统设计和实现
  8. 人脸检测(十八)--TinyFace(S3FD,SSH,HR,RSA,Face R-CNN,PyramidBox)
  9. Android Multimedia框架总结(二十)MediaCodec状态图及Codec与输入/输出Buffer过程(附实例)...
  10. 树莓派之Debian游戏(部分)
  11. 二次规划--积极集法(active set method)
  12. 计算机xp怎么做备份,xp系统备份教程方法
  13. ps2无线手柄连接arduino的使用方法
  14. matlab矩阵指定行求和,在matlab中对矩阵元素求和的有效(最快)方法
  15. 【2020高考同题征文•全国I卷】志向高远,心胸宽阔
  16. Excel 快速合并多行数据为一行
  17. 三年级计算机画图工具教案,小学三年级信息技术教学设计《画图》
  18. PointNet-环境搭建:win10、cuda10.1、cudnn7、python3.7、tensorflow-gpu1.13 (详细)
  19. HDU 4937Lucky Number
  20. wps怎么让文本框透明

热门文章

  1. win10如何删除计算机用户,win10怎么删除管理员账号
  2. NVIDIA无法连接:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
  3. 夜空之城服务器维护,夜空之城app
  4. Web前端学习路线图(脑图)
  5. 如何获取微众银行人工客服的联系方式?
  6. wxPython Image PIL Image 之间的转换方法
  7. Python+Django+channels实现websocket
  8. 责任链模式(职责链模式)详解
  9. 纷争终结者: 被遗弃的孩子们 TROUBLESHOOTER: Abandoned Children V20230206+DLC最新中文学习版 单机游戏 游戏下载【8.1G】
  10. 如何开发一个像Instagram的app?