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 手电筒的实现相关推荐

  1. android 手电筒开关,Android实现手电筒电源键关闭功能

    说到Android手电筒电源键关闭功能,大家知道吗?其实客户要求点击电源按钮,手电筒需要关闭,今天爱站技术频道小编与您共享Android实现手电筒电源键关闭功能. frameworks\base\se ...

  2. Android手电筒制作

    Android 手电筒制作 一.SystemUI中手电筒的控制 推荐:Android QuickSetting-手电筒控制 通过手机下拉状态栏,可以找到手电筒图标.也就是说SystemUI中存在控制手 ...

  3. android手电筒原理

    一.原理简介 现在android应用商店有许多的手电筒应用.其核心原理很简单,其实就是使用android中的摄像头类Camera控制控制闪光灯的亮灭.好了,接下来,一步步讲解下,android如何控制 ...

  4. android 手电筒_如何将您的Android手机用作手电筒

    android 手电筒 It's dark and you need to be able to see. It's fine-whip out your trusty Android phone a ...

  5. Android手电筒案例

    最近在学习Android的开发,写了个手电筒的案例,分享一下! //Activity.xml package com.fq.flashlight;import android.app.Activity ...

  6. android手电筒

    手电筒,原理很简单 ,控制摄像头的闪光灯持续闪光进行照明,废话不多说直接上源码 主文件夹中mainactivity代码如下: package com.madeLi.shoudian; import j ...

  7. Android 手电筒的开启方法

    简单介绍一下手电筒的开启方法. 1.在android5.0 之前可以通过Camera来打开. import android.hardware.Camera; import android.hardwa ...

  8. Android手电筒开发

    之前在项目中开发了一个手电筒应用,今天就拿出来给大家分享一下. 应用的架构很简单,就单纯的一个布局加一个主Activity,那么先来看一下资源图片有那些. 最后一张是桌面菜单图标,倒数第二张是透明的一 ...

  9. android 手电筒开关,Android 系统开关,wifi、手电筒等的开关

    wifi是否开启 wifi开关 蓝牙是否开启 蓝牙开关 是否开启自动旋转 屏幕旋转开关 是否开启同步 同步开关 屏幕亮度切换 设置屏幕亮度 是否开启飞行模式 飞行模式开关 是否开启数据连接 数据连接开 ...

  10. Android手电筒介绍

    转载自:http://www.androidhive.info/2013/04/android-developing-flashlight-application/ 今天,我将演示开发一个简单的And ...

最新文章

  1. vCenter Server Appliance 6.5 中重置丢失或忘记的 root 密码
  2. 【Python+selenium Wendriver API】之下拉框定位
  3. 在matlab中提取线性方程组的系数矩阵
  4. Idea中一个服务按多个端口同时启动
  5. AI「抄」代码无罪?GitHub Copilot拿用户的开源代码改一改就去挣钱!
  6. 从AIDL一窥Android Binder机制
  7. Android 系统(214)---Android 7.1.1时间更新NITZ和NTP详解
  8. HTML5新增音频标签(HTML5)
  9. Flash Builder 4.7 注释字体修改
  10. win10 输入法工具无法设置水平
  11. bert导入预训练模型[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。(已解决)
  12. 陈华钧等 | OpenKG区块链:构建可信开放的联邦知识图谱平台
  13. 如何构建健商品期carry组合
  14. zyf sql语句
  15. 大学生论文发表的费用需要多少
  16. 让吹牛都能全世界最棒
  17. ArcMap学习笔记(十一)数字地形模型分析
  18. php|thinkphp程序合成图片+文字+图片大小调整+正方形转换圆角+去除白色边框
  19. 云南一脸通行业解决方案、钉钉智慧食堂、智慧餐厅、智慧工地解决方案
  20. TypeScript中的?.是什么意思

热门文章

  1. 虚拟演播室建设--这篇文章或许能用上
  2. mysql 之general_log日志
  3. 【计算机视觉】数字图像处理(二)—— 图像数字化特征介绍
  4. 计算机模拟图像和数字,图像与数字图像基础
  5. 年末杂记 | 心之所向,素履以往
  6. # 前端基础(HTML + CSS + JavaScript)
  7. 圣诞树代码 html
  8. 天然气/化学污染物泄漏定量分析模型解读
  9. FadeTo;FadeIn;FadeOut的作用
  10. Java HotSpot(TM) 64-Bit Server VM warning:Options -Xverify:none and -noverify were deprecated