java闪光灯_手电筒项目开发一闪光灯
重点:
1、SurfaceView, OpenGL ES 的纹理------照相机捕获图像流纹理
2、style.xml配置文件。设置无标题等信息
true
true
@drawable/bg
3、使用FrameLayout布局,标签引入子布局。
main.xml
http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
>
ui_flashlight.xml<?xml version="1.0" encoding="utf-8"?>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mui_flashlight"
>
android:id="@+id/img_flashlight"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/flashlight"
/>
android:id="@+id/img_flashlight_controller"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="bottom|center_horizontal"
android:onClick="onClick_Flashlight"
/>
4、使用flash.xml文件实现渐变效果,然后利用android:src="@drawable/flashlight",引入。
flash.xml<?xml version="1.0" encoding="utf-8"?>
5、功能代码
Flashlight.javapublic class MyFlashLight extends MyBaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
iView.setTag(false);
//获取屏幕的尺寸
Point point = new Point();
getWindowManager().getDefaultDisplay().getSize(point);
LayoutParams layoutParams = (LayoutParams) iViewController.getLayoutParams();
//设置热点区的范围
layoutParams.height = point.y * 3/4;
layoutParams.width = point.x /3;
iViewController.setLayoutParams(layoutParams);
}
public void onClick_Flashlight(View view){
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
Toast.makeText(this, "当前设备没有闪光灯", Toast.LENGTH_SHORT).show();
return;
}
if (((Boolean)iView.getTag()) == false) {
openFlashlight();
} else {
closeFlashlight();
}
}
private void openFlashlight() {
//TransitionDrawable是一个特殊的Drawable对象,可以实现两个drawable资源之间淡入淡出的效果
TransitionDrawable tDrawable = (TransitionDrawable) iView.getDrawable();
//切换时间200毫秒
tDrawable.startTransition(200);
iView.setTag(true);
try {
//打开相机
mCamera = Camera.open();
int texturId = 0; //预览纹理默认给个值 即可
//照相机获取图像流纹理
mCamera.setPreviewTexture(new SurfaceTexture(texturId));
//启动预览
mCamera.startPreview();
//使用getParameters()获取Camera 的缺省配置参数
mParameters = mCamera.getParameters();
//设置闪光灯模式
mParameters.setFlashMode(mParameters.FLASH_MODE_TORCH);
mCamera.setParameters(mParameters);
} catch (IOException e) {
e.printStackTrace();
}
}
private void closeFlashlight() {
TransitionDrawable tDrawable2 = (TransitionDrawable) iView.getDrawable();
if ((Boolean) iView.getTag()) {
//倒过来时间切换
tDrawable2.reverseTransition(200);
iView.setTag(false);
if (mCamera != null) {
//使用getParameters()获取Camera 的缺省配置参数
mParameters = mCamera.getParameters();
//设置闪光灯模式
mParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(mParameters);
//停止预览
mCamera.stopPreview();
//释放相机对象
mCamera.release();
//为了使垃圾回收器尽快回收
mCamera = null;
}
}
}
//退出程序关闭闪光灯
@Override
protected void onPause() {
super.onPause();
closeFlashlight();
}
}
完整代码见附件(进入我的资料即可下载):MyFlashLight.zip
实用代码参考:
java闪光灯_手电筒项目开发一闪光灯相关推荐
- 微信小程序_图片连拍_闪光灯_手电筒_录制
借助小程序组件 < camera > 实现图片连拍.闪关灯.手电筒功能: 注意: 手电筒功能的实现小程序版本最低版本 2.8.0 直接复制运行代码的小伙伴,记得把下面页面代码中 svg 的 ...
- java游戏演示ppt_java项目开发实战──五子棋游戏.ppt
java项目开发实战──五子棋游戏.ppt 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 第 24 ...
- 深入理解文档/视图框架体系_九宫格项目开发感悟
1.项目起源以及采用文档/视图框架体系缘由 我们整天都在说:文档保存项目的数据并处理项目上的数据:视图通过关联获得文档的数据并进行可视化:主窗口框架接收外部事件消息并进行消息分配.这句口头禅感觉接触过 ...
- java门禁系统项目开发实现
文章目录 java门禁系统项目实现 一.项目目标和任务 二.项目结构 package sys Computer.java ControlSys.java Door.java InputEquip.ja ...
- 后盾网原创视频_微博项目开发视频教程(php实战),后盾网Thinkphp微博项目实战开发视频教程 微博项目实战教程 后盾网Thinkphp实战教...
链接失效请联系微信 ZA_summer,有需要某课网某某课堂精品付费课的朋友也可以联系我,欢迎骚扰 01.项目开发前准备.avi 02.建立项目所需数据库模型(上).avi 03.建立项目所需数据库模 ...
- 白鹭引擎能用java吗_白鹭引擎开发3D项目(一)
一.打开Egret Launcher安装Egret 5.3.2引擎. 进入白鹭引擎GitHub(https://github.com/egret-labs/egret-core)下载Egret5.3. ...
- java 拼图_拼图项目的诅咒:为什么Java 9一遍又一遍地延迟?
java 拼图 JDK 9发行日期推迟到2017年7月 距JDK 9发行不到200天,它又被推迟了 . 新的发布日期已更新为2017年7月,比之前推迟的日期晚了四个月. 推迟日期 9月13日,Orac ...
- java 拼图_功能项目拼图将Java 9引入
java 拼图 因此,拼图项目...我们已经对此颇为了解,但尚未看到计划如何兑现其承诺的细节. 这篇文章将精确地做到这一点,并介绍项目的核心概念和功能. 系列 这篇文章是正在进行的有关拼图项目系列的一 ...
- 学生成绩管理系统java+mysql+swing入门级项目开发
夫陶公清风千古,余又何人,敢称庶几 代码已移至Gitee : https://gitee.com/BreezAm/edu-student 文章目录 简要: 登陆运行效果 主界面运行效果图 界面设置运行 ...
最新文章
- iterator与const_iterator及const iterator区别
- 聊聊我对黑客技术的思考
- linux下查看mysql的当前连接情况
- 老张 .NetCore与Vue 框架学习
- DevOps使用到的工具・术语
- java 重定向和转发的区别
- Python 创建本地服务器环境生成二维码
- 电脑硬盘整数分区计算器
- linux 磁盘隔离,Linux 磁盘坏道故障修复
- JAVA初学,小白编程,8大基本类型
- cocos2dx 圆盘抽奖_cocos2d编写的类似幸运大转盘抽奖源码
- 【编程实践】一致性哈希(hash)算法实现
- 区块链的最大作用,在于区块链可以将大数据、云计算、人工智能等新技术连接在一起
- 关于GPA Involution的思路+解法+代码
- 新型复读机——微信语音
- 快速入门:LINUX基础 ——教你使用 linux 操作
- 用VBA在word创建宏,功能是金额数字转换大写
- 2021河南省ICPC省赛总结
- jsp未正确拼写字 mysql_(转)MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结...
- 什么是Fiddler ?