Android 小应用之一个activity实现简易手电筒(内附免费源码)
Android小应用之一个activity实现简易手电筒(内附免费源码)
- 1.activity代码
- 2.xml代码
- 3.资源文件代码
- 4.源码压缩包(免费)
今天爷爷说他手机更新之后找不到手电筒了,我心想是不是爷爷年纪大了的原因,然后拿过手机一看,竟然还真找不到,好吧,给爷爷到应用市场下载了一个手电筒,但是一个2.多mb的手电筒竟然还有广告,我想着还不如我自己写一个,虽然我是小小白,但好歹我也学了安卓,然后就搜博客找到一篇十分适合我的博客,最后成功制作出我的“玫瑰手电筒”(当然给我爷爷的会更加特别哈哈哈,在这里是面向广大用户,所以在有些地方做了一些修改)
参考博客
真机运行演示(模拟器没闪光灯的,点亮手电筒会报错)
手电图案灰色为关闭闪光灯,手电图案彩色为打开了闪光灯,然后下面的字也会切换
1.activity代码
public class MainActivity extends AppCompatActivity {ConstraintLayout mConstraintLayout;Button mButton;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mButton=findViewById(R.id.button);mConstraintLayout=findViewById(R.id.constraintLayout);final FlashUtils utils = new FlashUtils(this);mConstraintLayout.setSelected(false);mButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {utils.converse();}});}public class FlashUtils {private CameraManager manager;private Camera mCamera = null;private Context context;private boolean status = false;//记录手电筒状态FlashUtils(Context context){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);}this.context = context;}//打开手电筒public void open() {if(status){//如果已经是打开状态,不需要打开return;}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {try {manager.setTorchMode("0", true);} catch (Exception e) {e.printStackTrace();}} else {PackageManager packageManager = context.getPackageManager();FeatureInfo[] features = packageManager.getSystemAvailableFeatures();for (FeatureInfo featureInfo : features) {if (PackageManager.FEATURE_CAMERA_FLASH.equals(featureInfo.name)) { // 判断设备是否支持闪光灯if (null == mCamera) {mCamera = Camera.open();}Camera.Parameters parameters = mCamera.getParameters();parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);mCamera.setParameters(parameters);mCamera.startPreview();}}}status = true;//记录手电筒状态为打开}//关闭手电筒public void close() {if(!status){//如果已经是关闭状态,不需要打开return;}if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {try {manager.setTorchMode("0", false);} catch (Exception e) {e.printStackTrace();}} else {if (mCamera != null) {mCamera.stopPreview();mCamera.release();mCamera = null;}}status = false;//记录手电筒状态为关闭}//改变手电筒状态public void converse(){if(status){close();mConstraintLayout.setSelected(false);}else{open();mConstraintLayout.setSelected(true);}}}}
2.xml代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/constraintLayout"android:layout_height="match_parent"android:background="#000000"tools:context=".MainActivity"><ImageViewandroid:id="@+id/imageView3"android:layout_width="40dp"android:layout_height="40dp"android:layout_marginStart="20dp"android:layout_marginLeft="20dp"android:background="@drawable/love"app:layout_constraintBottom_toBottomOf="@+id/textView2"app:layout_constraintStart_toEndOf="@+id/textView2"app:layout_constraintTop_toTopOf="@+id/textView2" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="50dp"android:text="为你定制"android:textColor="#03A9F4"android:textSize="24sp"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><ImageViewandroid:layout_width="40dp"android:layout_height="40dp"android:layout_marginEnd="20dp"android:layout_marginRight="20dp"android:background="@drawable/love"app:layout_constraintBottom_toBottomOf="@+id/textView2"app:layout_constraintEnd_toStartOf="@+id/textView2"app:layout_constraintTop_toTopOf="@+id/textView2" /><Buttonandroid:id="@+id/button"android:layout_width="300dp"android:layout_height="300dp"android:background="@drawable/flash_icon"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="'走路小心,注意安全'"android:textColor="@color/textcolor"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="100dp"android:textSize="24sp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="'天天开心'"android:textColor="@color/text2color"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_marginBottom="100dp"android:textSize="24sp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
3.资源文件代码
text2color
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="#03A9F4" android:state_selected="false"/><item android:color="#00000000" android:state_selected="true"/>
</selector>
textcolor
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="#000000" android:state_selected="false"/><item android:color="#F44336" android:state_selected="true"/></selector>
flash_icon
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_selected="true" android:drawable="@drawable/flash"/><item android:state_selected="false" android:drawable="@drawable/unflash"/></selector>
4.源码压缩包(免费)
https://download.csdn.net/download/qq_46526828/12626160
突然觉得有时候想做一件事虽然是心血来潮,但是完成的感觉却是无与伦比的开心。
博主为了可以学到更多的Android知识,创建了一个安卓知识交流群,欢迎大佬入群,当然也欢迎和我一样的安卓小白,我们可以一起交流,最重要的是快乐水群,记得定个小目标,冲击bat
Android 小应用之一个activity实现简易手电筒(内附免费源码)相关推荐
- Android开发应用案例——简易计算器(附完整源码)
Android开发-AS学习(一) Android开发-AS学习(二) 使用android studio开发简易计算器app(完整源码可在博主资源中自行下载) 最终效果: 开发步骤: 创建一个名为ca ...
- C++求一个整数的各位数字总和(附完整源码)
C++求一个整数的各位数字总和算法 C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) int su ...
- 熬了三个大夜利用Python开发一个炸金花小游戏,注意别玩上瘾了~~(附完整源码)
大家好,我是你们的好朋友王老师~ 众所周知扑克牌可谓是居家旅行.桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则. 炸(诈)金花又叫三张牌, ...
- 用python开发一个炸金花小游戏,注意别玩上瘾了~~(附完整源码)
大家好,我是辰哥~ 众所周知扑克牌可谓是居家旅行.桌面交友的必备道具,今天我们用 Python 来实现一个类似炸金花的扑克牌小游戏,先来看一下基本的游戏规则. 炸(诈)金花又叫三张牌,是在全国广泛流 ...
- [内附完整源码和文档] 基于Android网络聊天室的设计与实现
前 言 随着我国科技水平的提高和移动通讯的飞速发展与普及,人们通过移动网络可做的事情越来越多,人们之间的沟通不在局限于面对面的对话,人们通过手机可以很方便的上网并通过手机上的APP进行聊天这样既节省话 ...
- [内附完整源码和文档] 基于Android Studio实现的新闻APP
一.作业题目 实现一个安卓新闻类App,最低支持安卓系统版本为5.1(minSdkVersion 为API 16 https://developer.android.com/guide/topics/ ...
- [内附完整源码和文档] 基于Android的移动手机端五子棋游戏APP的设计与实现
一.项目概述 近年来,随着安卓手机的普及,安卓游戏成为广大用户关注的方向.五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏,主 ...
- 基于微信小程序实现警务活动管理系统设计演示【附项目源码+论文说明】分享
基于微信小程序实现警务活动管理系统设计演示 摘要 随着我国经济迅速发展,人们对网络管理的需求越来越大,各种系统也越来越多,由于微信的发展,微信的功能越来越齐全,越来越多的人开始使用微信.因此,特开发了 ...
- Android高级开发之【RxJava】详解(附项目源码)
文章大纲 一.什么是RxJava 二.为什么要用RxJava 三.RxJava使用详解 四.项目源码下载 一.什么是RxJava Rx(Reactive Extensions)是一个库,用来处理事件和 ...
最新文章
- C++中定义类的对象:用new和不用new的区别
- 用XMLHTTP获取动态页生成的HTML内容
- 配置maven mvn命令使用jdk 1.7编译
- 从JDBC ResultSet创建对象流
- 会计基础模拟练习一(3)
- 该来的终于来了:“第一起”基于 IPv6 的 DDoS 攻击
- 推荐几个学习JS的站点
- 内外网同时使用-路由配置
- 安卓dj专业打碟机软件_djay Pro 2 for mac(专业DJ打碟软件)
- 【最终幻想15 国王之剑】制作介绍2:最大限度满足角色,背景和道具的要求
- png的计算机储存图片的格式吗,win7系统下png图片转换成jpg格式的三种方法
- 评价页面html,利用html与css制作5星好评页面
- 《Fooled by Randomness》读书笔记
- cannot import name ‘DistanceMetric‘ from ‘sklearn.metrics‘
- 使用FlatBuffers序列化数据
- java控制台输出脚标上标下标,c – 如何在CLI上打印下标/上标?
- linux安装——管理应用程序
- 微PE工具箱v1.0 维护版本64位(0913)
- 泰雷兹高科技赋能全球最安全的电子护照之一,泰国公民咸受其益
- oracle如何取正负数,ORACLE 统计正负个数sql
热门文章
- springmvc中数据绑定,controler开发细节,以及与struts2对比
- [免费专栏] Android安全之Android APP应用程序的汉化功能 (修改so中的字符串内容)
- MATLAB 图像处理于数字化(一)
- AX=XB李群李代数知识求解方程
- 北京soul_提问艺术家:北京《Soul i-D》展
- 计算机教师线下研修方式与内容,工作坊线下研修活动心得体会
- TI SYS/BIOS
- 教您几招应对雾霾天气
- 获取汉字GBK编码的方式汇总
- 主路径覆盖与基路径覆盖