Android中编写简单的手电筒小应用的实例教程

主要实现两个步骤:

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

Camera camera = Camera.open();
Parameters mParameters = camera.getParameters();
mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);//打开Camera.Parameters.FLASH_MODE_OFF

则为关闭

amera.setParameters(mParameters)

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

onMeasure(int widthMeasureSpec, int heightMeasureSpec)

效果如下:

源码如下:

<RelativeLayout xmlns:android="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:gravity="center"
  android:background="@drawable/light"
  tools:context=".MainActivity" > 

  <com.android.xiong.xionglight.LightBkView
    android:id="@+id/light1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/> 

</RelativeLayout> 

<uses-permission android:name="android.permission.CAMERA" />
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;
    }
  } 

}
(0)

相关推荐

  • Android 开启闪光灯做手电筒的详解

    复制代码 代码如下: public class HandLightActivity extends Activity implements OnClickListener{private ToggleButton toggleButton;private Camera m_Camera;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCre

  • Android控制闪光灯的方法(打开与关闭)

    本文实例讲述了Android控制闪光灯的方法.分享给大家供大家参考,具体如下: 最近想做一个手电筒,在网上搜到一点资料 首先闪光灯可以用android.hardware.camera来控制 1. 在Manifest.xml文件中添加权限 复制代码 代码如下: <uses-permission android:name="android.permission.CAMERA" /> 2. 打开闪光灯 try{ m_Camera = Camera.open(); Camera.P

  • Android Camera开发手电筒功能

    这是一个简单的运用Android Camera开发手电筒功能,AndroidManifest.xml文件的入口是startapp,这个文件没上传上来,大家可以自己写. flashlight.java package com.android.app; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bun

  • Android 通用型手电筒代码

    前几天这边一个小区断电,黑麻麻的,一只猫闯进寝室,把我吓哭,然后就果断写了个手电筒,下次断电,再来,我要吓死它. 我之前看到很多人都是直接调用闪光灯,其实大部分机型都不支持,我这个是用相机功能来实现的,大部分机型都支持. MainActivity.class public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { supe

  • Android studio编写简单的手电筒APP

    很不错的手电筒APP,分享给大家,希望大家喜欢. 1. Java代码     package com.example.goo.gfire; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.view.View; import android.widget.Bu

  • Android开启闪光灯的方法 Android打开手电筒功能

    前言 众所周知,安卓的手电筒功能无非是开启手机的闪光灯,既然开启闪光灯就必须要与相机关联. 代码 写了个小工具,一个文件搞定. public class FlashUtils { private static FlashUtils utils; private static Camera camera; public static boolean mIsOpen = true; //使用单例模式在这里初始化相机 public static FlashUtils getInstance() { i

  • Android中编写简单的手电筒小应用的实例教程

    主要实现两个步骤: 1.实现打开和关闭闪光灯:而实现操作闪光灯主要通过Camera类 Camera camera = Camera.open(); Parameters mParameters = camera.getParameters(); mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);//打开Camera.Parameters.FLASH_MODE_OFF 则为关闭 amera.setParameters(mPar

  • Android中颜色选择器和改变字体颜色的实例教程

    1.构建一张七彩图: 我们经常看到这种样子的颜色选择器吧.. 然后其实右边的亮度选择是: 这样我们的代码就可以进行啦... // 创建七彩图片 private void init() { int[] oc = { 0xffff0000, 0xffffff00, 0xff00ff00, 0xff00ffff, 0xff0000ff, 0xffff00ff, 0xffff0000 }; float[] op = { 0, 0.16667f, 0.33333f, 0.5f, 0.66667f, 0.8

  • Python turtle编写简单的球类小游戏

    目录 1. 前言 2. 需求描述 3. 制作流程 3.1 初始化变量 3.2 通用函数 3.3 游戏角色函数 3.4 让小球动起来 4. 总结 1. 前言 turtle (小海龟) 是 Python 内置的一个绘图模块,其实它不仅可以用来绘图,还可以制作简单的小游戏,甚至可以当成简易的 GUI 模块,编写简单的 GUI程序. 本文使用 turtle 模块编写一个简单的小游戏,通过此程序的编写过程聊一聊对 turtle 模块的感悟. 编写游戏,如果要做专业的.趣味性高的,还是请找 pygame,本

  • Android中ActionBar和ToolBar添加返回箭头的实例代码

     1.ActionBar添加返回箭头 //onCreate方法中 ActionBar actionBar = this.getSupportActionBar(); actionBar.setTitle("搜索功能"); actionBar.setDisplayHomeAsUpEnabled(true); //activity类中的方法 @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.get

  • Android中webview与JS交互、互调方法实例详解

    Android中webview与JS交互.互调方法实例详解 前言: 对于试水的功能,一般公司都会采用H5的方式来开发,可以用很少的资源与很短的项目工期来完成. 但许多情况下,H5页面会需要一些原生持有的一些如用户信息之类的数据,一些交互也需要调用原生的,如toast之类要保持同一个手机风格一致的交互行为.这个时候就需要能够让JS主动调用原生的方法来进行操作或者获取数据.或者是原生调用JS的方法在H5加载的时候传递一些参数. 对于原生调用JS的方法 我们需要实现一个WebViewClient,在这

  • Android中 TeaScreenPopupWindow多类型筛选弹框功能的实例代码

    Github地址 YangsBryant/TeaScreenPopupWindow (Github排版比较好,建议进入这里查看详情,如果觉得好,点个star吧!) 引入module allprojects { repositories { google() jcenter() maven { url 'https://www.jitpack.io' } } } implementation 'com.github.YangsBryant:TeaScreenPopupWindow:1.0.2' 主

  • Android中的webview监听每次URL变化实例

    通过这个可以监听Android中webview访问的URL变化: webView.setWebViewClient(new WebViewClient(){ @Override public void onLoadResource(WebView view, String url) { Log.e("hao","WebView3:"+view.getUrl()+"\\n"+" URL3:"+url); super.onLoad

  • Android APP编写简单答题器

    本文为大家分享了Android APP编写的简单答题器,此答题器可以通过Next按钮选择下一题,新写题目的类Question,有两个成员变量. java代码: package com.android.testrecord; /** * Created by wang on 16-10-19. */ public class Question { private int mTextResId; private boolean mAnswerTrue; public Question(int tex

  • 讲解Android中的Widget及AppWidget小工具的创建实例

    1.Widget .App Widget .Web App 的概念 Widget最初的概念是98年一个叫Rose的苹果工程师提出,直到2003年的时候才正式为大家所知,不过随后无数大公司都开始接受并应用这一思路. 现在我们看到在苹果系统里按下F4弹出的Dashboard里的小工具叫Widget,在Windows 7里侧边栏上的那些漂亮的小工具叫Gadget(widget变体?),除此以外还有yahoo Widget等等Widget产品.他们有一个共同的特点就是采用前台Web开发用的技术(譬如HT

随机推荐