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;

@Override

protected 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);

}

@Override

public 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);

}

@Override

public 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();

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

Contants.LogI("surfaceCreated");

try {

mCameraDevices = Camera.open();

mCameraDevices.setPreviewDisplay(mHolder);

} catch (Exception e) {

if(mCameraDevices != null)

mCameraDevices.release();

mCameraDevices = null;

}

}

@Override

public 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

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

android:id="@+id/surfaceview"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/image"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/flashlight_off"

android:background="#FFFFFFFF"

/>

显然这里打开了一个预览,可是被图片盖上了,看不见而已。不然闪光灯不亮。

包含widget窗体小部件的使用方法和手电筒的功能实现,安装后,加入窗体小部件(手电筒)到桌面,然后点击小部件后,打开手电筒的界面

点击界面,实现 打开/关闭 手电筒。

java 手电筒 电池_android 手电筒的实现相关推荐

  1. java 手电筒 电池_android 手电筒app完整源码下载(支持切换背景图)

    [实例简介] [实例截图] [核心代码] package com.jiayonghua.android; import java.io.IOException; import java.util.Ar ...

  2. java怎么调用手机手电_android 手电筒的实现

    android手机用闪光灯做成手电筒的应用非常多,可是有的不能用. 后来发现是除了把 camera device的 flashmode设置成torch外还要打开预览: 以下是代码: MainActiv ...

  3. java手电筒_android--超级手电筒的开发记录

    作为新手,我认为做小东西是学习一门语言最快的方法,目前在跟着教程制作超级手电筒,每天记录一些,直到做完这个手电筒 主要思路 关于手电筒,两个imageview带有相应的开关图片,一个空白的imagev ...

  4. 2.手电筒原理、手电筒原理应用:拐弯通信以及电报机

    我们前面讲到通过手电筒应用莫尔斯电码,因为手电筒能够提供二进制码,只有亮和灭,没有第三种状态.所以对于手电筒,我们能够进行进一步的研究. 手电筒由灯泡.导线.电池.开关.金属片和一个容纳电池的塑料外壳 ...

  5. android 手电筒服务,Android手电筒案例

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

  6. 手电筒安卓_iPhone手电筒只能照明?这两个隐藏技巧一定要会,事半功倍!

    科技资讯:可以说现在已经人手一部智能手机了,在众多的手机品牌中,iPhone无论是硬件还是软件系统都是高端的象征,因此,iPhone用户也在不断地增加,大家除了喜欢体验iPhone的流畅度外,还热衷于 ...

  7. android java 中文乱码_android读写中文如何避免乱码详解

    前言 android读取文件中文出现乱码的原因无非就是,读取文件的字符格式与写如文件的格式不一致.因此,避免中文乱码,要在写入文件的时候按照一定的格式写入,读取的时候按照一定的格式读取.这样对应就不会 ...

  8. 安卓java代码标签_Android实现动态添加标签及其点击事件

    在做Android开发的时候,会遇到动态添加标签让用户选择的功能,所以自己写了个例子,运行效果图如下. 标签可以左右滑动进行选择,点击的时候,会弹出toast提示选择或者取消选择了哪个标签.通过动态添 ...

  9. java android 数组_android中数组的定义与使用

    android中数组的定义 可以直接在JAVA代码中声明,也可以在res->values目录下新建一个xml文件,作为数组资源进行声明 字符数组可以有如下2种声明方式String[]或者是Lis ...

最新文章

  1. windows mobile开发循序渐进(1)关于平台和工具
  2. U-Net中的skip connection
  3. 二叉树关于,前序遍历的输入是否规范问题、
  4. xyplorer保存设置失败_腾讯企点客服如何设置敏感词监控?
  5. Ubuntu su root提示输入密码 怎么输入都不对
  6. Tyvj - 1305 单调队列优化dp
  7. Windows OCR推荐
  8. 加勒比海盗海盗不雅镜头_土豆,海盗和……编程?
  9. 深入理解示波器探头各种作用及工作原理
  10. docker之构建镜像
  11. 世界杯决赛倒计时,你最看好谁
  12. 什么才算好的监控系统?
  13. 如何用matlab演奏《偏爱》
  14. 小程序如何关联微信小程序二维码,实现二码聚合
  15. 计算机谈音乐南山南,马頔:从《南山南》到《是首俗歌》,恰是我们难以言表的流年...
  16. Python枚举是什么-读懂Python枚举的方法
  17. 项目经验 需求评审与技术评审
  18. 第七届河南省赛题解B.海岛争霸
  19. GIT科普系列5:index in git
  20. 我成为了CSDN优秀资源分享达人

热门文章

  1. Java程序设计课程——实验2
  2. python基础------绘制条形图、直方图、饼图、热力图、极坐标图、进度条
  3. java蓝桥杯练习 拉马车
  4. html5核显加速,英伟达:用GTX 16系列显卡加速,视频编辑速度达核显8倍
  5. 深读源码-java同步系列简介
  6. 鸿蒙3部曲先看哪部,“隋唐三部曲”“鸿蒙三部曲”“斗罗四部曲”谁才是网文巅峰之作...
  7. java 接口,接口的特性,接口实现多态,面向接口编程
  8. dir under linux.Linux下的类dir程序.
  9. 同济大学计算机硕士生能拿到户口,上海这4所大学的应届生,毕业可直接“落户”,考生有福了...
  10. 工程技术开发的圈套与局限性