主要实现两个步骤:

1、实现打开和关闭闪光灯;而实现操作闪光灯主要通过Camera类

Camera camera = Camera.open();

Parameters mParameters = camera.getParameters();

mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);//打开Camera.Parameters.FLASH_MODE_OFF则为关闭

camera.setParameters(mParameters)

2、自定义闪光灯的按钮;自定义控件主要是设置设置view的大小

onMeasure(int widthMeasureSpec, int heightMeasureSpec)这个方法介绍 http://blog.csdn.net/x605940745/article/details/17583609

效果如下:

源码如下:

package com.android.xiong.xionglight;

import android.app.Activity;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.Menu;

public class MainActivity extends Activity {

private LightBkView light1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

light1 = (LightBkView) findViewById(R.id.light1);

//定义单击事件

light1.setOnClickListener(light1);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

package com.android.xiong.xionglight;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.hardware.Camera;

import android.hardware.Camera.Parameters;

import android.util.AttributeSet;

import android.view.View;

import android.view.View.OnClickListener;

public class LightBkView extends View implements OnClickListener {

Camera camera = Camera.open();

// 定义画皮

Paint paint = new Paint();

Paint paint1 = new Paint();

int x = 0;

int y = 0;

// 打开闪光灯

boolean islight;

public LightBkView(Context context, AttributeSet set) {

super(context, set);

}

@Override

protected void onDraw(Canvas canvas) {

// 获取控件的宽度和高度

int width = this.getWidth();

int heigth = this.getHeight();

// 圆点的坐标

x = width / 2;

y = heigth / 2;

//更换开关背景

if(!islight){

paint.setColor(Color.BLUE);

canvas.drawCircle(x, y, 60, paint);

paint1.setColor(Color.RED);

paint1.setTextSize(20);

canvas.drawText("打开闪光灯", x-50, y, paint1);

invalidate();

}else{

paint.setColor(Color.WHITE);

canvas.drawCircle(x, y, 60, paint);

paint1.setColor(Color.RED);

paint1.setTextSize(20);

canvas.drawText("关闭闪光灯", x-50, y, paint1);

invalidate();

}

}

// 定义View的大小

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

setMeasuredDimension(getWidth(widthMeasureSpec),

getHeight(heightMeasureSpec));

}

//定义view的宽度

public int getWidth(int widthMeasureSpec) {

int reslut = 0;

int widthMode = MeasureSpec.getMode(widthMeasureSpec);

if (widthMode == MeasureSpec.AT_MOST) {

reslut = 120;

}

if (widthMode == MeasureSpec.EXACTLY) {

reslut = MeasureSpec.getSize(widthMeasureSpec);

}

return reslut;

}

//定义view的高度

public int getHeight(int heightMeasureSpec) {

int reslut = 0;

int heightMode = MeasureSpec.getMode(heightMeasureSpec);

if (heightMode == MeasureSpec.AT_MOST) {

reslut = 120;

}

if (heightMode == MeasureSpec.EXACTLY) {

reslut = MeasureSpec.getSize(heightMeasureSpec);

}

return reslut;

}

// 实现闪光灯的的开关

@Override

public void onClick(View v) {

if (!islight) {

Parameters mParameters = camera.getParameters();

mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

camera.setParameters(mParameters);

islight = true;

} else {

Parameters mParameters = camera.getParameters();

mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

camera.setParameters(mParameters);

islight = false;

}

}

}转载请注明出处: http://blog.csdn.net/x605940745

源码下载: http://download.csdn.net/detail/x605940745/6772637

android 手电筒开发,Android之实现手电筒实例相关推荐

  1. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  2. android studio socket 失败,Android应用开发Android Studio建立Socket连接失败解决方法

    本文将带你了解Android应用开发Android Studio建立Socket连接失败解决方法,希望本文对大家学Android有所帮助. < Android Studio建立Socket连接失 ...

  3. android落下动画,Android应用开发android 购物车小球掉落动画

    本文将带你了解Android应用开发android 购物车小球掉落动画,希望本文对大家学Android有所帮助. 先贴效果图 对自定义View小红球的绘制 public class BallView ...

  4. android baseactivity,Android应用开发Android通过BaseActivity获取到当前启动的Activity名称...

    本文将带你了解Android应用开发Android通过BaseActivity获取到当前启动的Activity名称,希望本文对大家学Android有所帮助. < 在BaseActivity的on ...

  5. android view 点击变暗,Android应用开发Android ImageView点击变暗效果

    本文将带你了解Android应用开发Android ImageView点击变暗效果,希望本文对大家学Android有所帮助. < 自定义ImageView: 在ImageView中setPres ...

  6. android 防止重复启动app,Android应用开发Android 防止启动页面(SplashActivity)被多次启动...

    本文将带你了解Android应用开发Android 防止启动页面(SplashActivity)被多次启动,希望本文对大家学Android有所帮助. 话不多说直接上代码: @Override prot ...

  7. android studio获取数字签名,Android应用开发Android Studio数字签名打包apk图文步骤教程...

    本文将带你了解Android应用开发Android Studio数字签名打包apk图文步骤教程,希望本文对大家学Android有所帮助. Android Studio数字签名打包release版apk ...

  8. android修改用户名和密码错误,Android应用开发Android Studio 修改用户名、密码、URL等操作教程...

    本文将带你了解Android应用开发Android Studio 修改用户名.密码.URL等操作教程,希望本文对大家学Android有所帮助. 修改用户名.密码: 在AndroidStudio的ter ...

  9. android程序突然崩溃如何调试,Android应用开发android 调试崩溃Unable to instantiate application的解决方法...

    本文将带你了解Android应用开发android 调试崩溃Unable to instantiate application的解决方法,希望本文对大家学Android有所帮助. 更新后Android ...

  10. android程序包不存在,Android应用开发Android studio 错误: 程序包 不存在

    本文将带你了解Android应用开发Android studio 错误: 程序包 不存在,希望本文对大家学Android有所帮助. " Android studio 错误: 程序包 不存在 ...

最新文章

  1. clion 带参数调试运行
  2. python numpy筛选 总数
  3. 【单片机相关】的网站
  4. xamarin textview 滚动_Apple Music有原生滚动歌词了!喜大普奔!
  5. gc日志一般关注什么_GC日志说明
  6. java + selenium 种WebElement 定位到父元素 跟子元素
  7. 处理数字_9_计算标准差
  8. 用R做heatmap示例:NBA联盟50位顶级球员的指标表现
  9. Python控制鼠标和键盘-PyAutoGUI用法详解
  10. 入门Demo---SpringMVC学习笔记(二)
  11. mysql 7下载安装及问题解决
  12. CSDN-markdown编辑器(防遗忘)
  13. 2017.3.18 糖果 思考记录
  14. Typora优化,Typora结合PicGo,让工作更轻松【图文教程】
  15. 计算机boot进入u盘启动,用U盘重装系统怎么把Boot设置为启动项?
  16. spring Boot 设置tomcat端口号
  17. java实现打开新窗口_[Java教程]javascript 打开新窗口(window.open)
  18. Html中版权符号的字体选择问题(如何让版权符号更美观)
  19. 重装系统后无法连接到网络?
  20. 清除缓存-Ctrl+Shift+Delete

热门文章

  1. python笔记---(实验二)
  2. 《论文笔记》Autonomous Robotic Exploration Based on Multiple Rapidly-exploring
  3. CUDA 深入浅出谈[转]
  4. Java项目:基于SSM人事管理系统(计算机毕业设计)
  5. 浅谈XMLHttpRequest
  6. python中将str转成数字_python如何将字符转换为数字
  7. 关于竞赛,CSDN还有很长的路要走
  8. java定时任务中使用多线程_定时任务使用多线程注意事项
  9. 电商项目商品详情页架构设计
  10. 「镁客·请讲」OracleChain老狼:EOS智能合约生态唯上,超级节点的竞争,不看吹牛先看做事...