android 手电筒的实现
android手机用闪光灯做成手电筒的应用很多,但是有的不能用。
后来发现是除了把 camera device的 flashmode设置成torch外还要打开预览:
下面是代码:
MainActivity.java
package com.android.flashlight;import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ImageView;public class MainActivity extends Activity{private FlashlightSurface mSurface;private ImageView mImageView;private boolean isFlashlightOn = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Contants.LogI("MainActivity: onCreate()");mSurface = (FlashlightSurface) findViewById(R.id.surfaceview);mImageView = (ImageView) findViewById(R.id.image);}@Overridepublic boolean onTouchEvent(MotionEvent event) {if(MotionEvent.ACTION_UP == event.getAction()){Contants.LogI("MainActivity: onTouchEvent() : ACTION_UP");if(isFlashlightOn){mSurface.setFlashlightSwitch(false);isFlashlightOn = false;mImageView.setImageResource(R.drawable.flashlight_off);}else{mSurface.setFlashlightSwitch(true);isFlashlightOn = true;mImageView.setImageResource(R.drawable.flashlight_on);}}return super.onTouchEvent(event);}}
FlashlightSurface.java
package com.android.flashlight;import android.content.Context;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;public class FlashlightSurface extends SurfaceView implements SurfaceHolder.Callback{private SurfaceHolder mHolder;private Camera mCameraDevices;private Camera.Parameters mParameters;public FlashlightSurface(Context context, AttributeSet attrs) {super(context, attrs);Contants.LogI("FlashlightSurface");mHolder = this.getHolder();mHolder.addCallback(this);mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {Contants.LogI("surfaceChanged");mParameters = mCameraDevices.getParameters();if(mParameters != null)mParameters.setPictureFormat(PixelFormat.JPEG);mParameters.setPreviewSize(320, 480);mParameters.setPictureSize(320, 480);mCameraDevices.setParameters(mParameters);mCameraDevices.startPreview();}@Overridepublic void surfaceCreated(SurfaceHolder holder) {Contants.LogI("surfaceCreated");try {mCameraDevices = Camera.open();mCameraDevices.setPreviewDisplay(mHolder);} catch (Exception e) {if(mCameraDevices != null)mCameraDevices.release();mCameraDevices = null;}}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {Contants.LogI("surfaceDestroyed");if(mCameraDevices == null) return;mCameraDevices.stopPreview();mCameraDevices.release();mCameraDevices = null;}/*** 设置手电筒的开关状态* @param on : true则打开,false则关闭*/public void setFlashlightSwitch(boolean on){if(mCameraDevices == null) return;if(mParameters == null){mParameters = mCameraDevices.getParameters();}if(on){mParameters.setFlashMode(Contants.FLASH_MODE_TORCH);}else{mParameters.setFlashMode(Contants.FLASH_MODE_OFF);}Contants.LogI("setFlashlightSwitch-----------------" + on);mCameraDevices.setParameters(mParameters);}}
布局文件main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" ><com.android.flashlight.FlashlightSurfaceandroid:id="@+id/surfaceview"android:layout_width="fill_parent" android:layout_height="fill_parent"></com.android.flashlight.FlashlightSurface><ImageView android:id="@+id/image"android:layout_width="fill_parent" android:layout_height="fill_parent"android:src="@drawable/flashlight_off"android:background="#FFFFFFFF"/></RelativeLayout>
显然这里打开了一个预览,但是被图片盖上了,看不见而已。不然闪光灯不亮。
这里有个Demo:http://download.csdn.net/detail/liu_zhen_wei/4801779
包括widget窗口小部件的用法和手电筒的功能实现,安装后,添加窗口小部件(手电筒)到桌面,然后点击小部件后,打开手电筒的界面
点击界面,实现 打开/关闭 手电筒。
android 手电筒的实现相关推荐
- android 手电筒开关,Android实现手电筒电源键关闭功能
说到Android手电筒电源键关闭功能,大家知道吗?其实客户要求点击电源按钮,手电筒需要关闭,今天爱站技术频道小编与您共享Android实现手电筒电源键关闭功能. frameworks\base\se ...
- Android手电筒制作
Android 手电筒制作 一.SystemUI中手电筒的控制 推荐:Android QuickSetting-手电筒控制 通过手机下拉状态栏,可以找到手电筒图标.也就是说SystemUI中存在控制手 ...
- android手电筒原理
一.原理简介 现在android应用商店有许多的手电筒应用.其核心原理很简单,其实就是使用android中的摄像头类Camera控制控制闪光灯的亮灭.好了,接下来,一步步讲解下,android如何控制 ...
- android 手电筒_如何将您的Android手机用作手电筒
android 手电筒 It's dark and you need to be able to see. It's fine-whip out your trusty Android phone a ...
- Android手电筒案例
最近在学习Android的开发,写了个手电筒的案例,分享一下! //Activity.xml package com.fq.flashlight;import android.app.Activity ...
- android手电筒
手电筒,原理很简单 ,控制摄像头的闪光灯持续闪光进行照明,废话不多说直接上源码 主文件夹中mainactivity代码如下: package com.madeLi.shoudian; import j ...
- Android 手电筒的开启方法
简单介绍一下手电筒的开启方法. 1.在android5.0 之前可以通过Camera来打开. import android.hardware.Camera; import android.hardwa ...
- Android手电筒开发
之前在项目中开发了一个手电筒应用,今天就拿出来给大家分享一下. 应用的架构很简单,就单纯的一个布局加一个主Activity,那么先来看一下资源图片有那些. 最后一张是桌面菜单图标,倒数第二张是透明的一 ...
- android 手电筒开关,Android 系统开关,wifi、手电筒等的开关
wifi是否开启 wifi开关 蓝牙是否开启 蓝牙开关 是否开启自动旋转 屏幕旋转开关 是否开启同步 同步开关 屏幕亮度切换 设置屏幕亮度 是否开启飞行模式 飞行模式开关 是否开启数据连接 数据连接开 ...
- Android手电筒介绍
转载自:http://www.androidhive.info/2013/04/android-developing-flashlight-application/ 今天,我将演示开发一个简单的And ...
最新文章
- vCenter Server Appliance 6.5 中重置丢失或忘记的 root 密码
- 【Python+selenium Wendriver API】之下拉框定位
- 在matlab中提取线性方程组的系数矩阵
- Idea中一个服务按多个端口同时启动
- AI「抄」代码无罪?GitHub Copilot拿用户的开源代码改一改就去挣钱!
- 从AIDL一窥Android Binder机制
- Android 系统(214)---Android 7.1.1时间更新NITZ和NTP详解
- HTML5新增音频标签(HTML5)
- Flash Builder 4.7 注释字体修改
- win10 输入法工具无法设置水平
- bert导入预训练模型[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。(已解决)
- 陈华钧等 | OpenKG区块链:构建可信开放的联邦知识图谱平台
- 如何构建健商品期carry组合
- zyf sql语句
- 大学生论文发表的费用需要多少
- 让吹牛都能全世界最棒
- ArcMap学习笔记(十一)数字地形模型分析
- php|thinkphp程序合成图片+文字+图片大小调整+正方形转换圆角+去除白色边框
- 云南一脸通行业解决方案、钉钉智慧食堂、智慧餐厅、智慧工地解决方案
- TypeScript中的?.是什么意思
热门文章
- 虚拟演播室建设--这篇文章或许能用上
- mysql 之general_log日志
- 【计算机视觉】数字图像处理(二)—— 图像数字化特征介绍
- 计算机模拟图像和数字,图像与数字图像基础
- 年末杂记 | 心之所向,素履以往
- # 前端基础(HTML + CSS + JavaScript)
- 圣诞树代码 html
- 天然气/化学污染物泄漏定量分析模型解读
- FadeTo;FadeIn;FadeOut的作用
- Java HotSpot(TM) 64-Bit Server VM warning:Options -Xverify:none and -noverify were deprecated