自己编写Android手电筒,支持5.0

android手电筒原理很简单,就是打开相机的闪光灯。

核心的代码就这么多:

打开相机

设置闪光灯开

打开预览

设置相机的autoFocus

    Camera camera = Camera.open();
    Parameters mParameters = camera.getParameters();
    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
    camera.setParameters(mParameters);
    camera.startPreview();
    camera.autoFocus(new AutoFocusCallback() {
	public void onAutoFocus(boolean success, Camera camera) {
	}
    });

这几个步骤缺一不可。照网上之前的例子试了,一直不成功。就是因为有些缺了打开预览,有些缺了autoFocus

然后就是设置权限

    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.FLASHLIGHT" /> 

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera.flash" />

最后贴以下完整的Activity。我这个很简单,create的时候就打开手电筒,屏幕上显示”Flashlight open“,按返回键,关闭并退出应用。

package org.lhc.flashlight;

import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.TextView;

public class MainActivity extends Activity {

	private Camera camera = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.camera = Camera.open();
		if (this.camera != null) {
			Parameters mParameters = camera.getParameters();
			mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
			camera.setParameters(mParameters);
			camera.startPreview();
			camera.autoFocus(new AutoFocusCallback() {
				public void onAutoFocus(boolean success, Camera camera) {
				}
			});
			TextView info = (TextView)this.findViewById(R.id.flashlight_info);
			info.setText("Flashlight open");
		}
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			if (this.camera != null) {
				Parameters mParameters = camera.getParameters();
				mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
				camera.setParameters(mParameters);
				camera.stopPreview();
				camera.release();
			}
			Log.i("Flashlight", "exit");
			this.finish();
			System.exit(0);
		}

		return super.onKeyDown(keyCode, event);
	}
}

转载请注明出处

http://blog.csdn.net/redstarofsleep

时间: 2024-07-30 09:37:38

自己编写Android手电筒,支持5.0的相关文章

使用android传感器自己编写温度计,湿度计 支持android5.0

编写温湿度计的原理很简单,就是获取温度,湿度传感器的数据,和其它的传感器的使用方法是一样的(前提是手机要有温度,湿度传感器) 首先是获取传感器管理器:   (SensorManager) getSystemService(Context.SENSOR_SERVICE); 可以通过下面这段代码查看手机上有哪些传感器: List<Sensor> deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor se

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏啦

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏啦 Xamarin.Forms 3.1.0以上版本终于支持Android底部导航栏啦,可以不用第三方的支持库了. https://developer.xamarin.com/releases/xamarin-forms/xamarin-forms-3.1/3.1.0/ C#代码: On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom); Xaml代码:

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏

Xamarin.Forms 3.1.0+版本 Android 原生支持底部导航栏 Xamarin.Forms 3.1.0以上版本终于支持Android底部导航栏啦,可以不用第三方的支持库了. https://developer.xamarin.com/releases/xamarin-forms/xamarin-forms-3.1/3.1.0/ C#代码: On<Android>().SetToolbarPlacement(ToolbarPlacement.Bottom); Xaml代码: &

xarmain使用Forms编译android工程出现support_r19.0.1.zip支持包错误

第一次使用xarain下载Forms程序,提示一下错误. C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(236,2): error XA5208: Download failed. Please download https://dl-ssl.google.com/android/repository/support_r19.0.1.zip and put it to the C:\Us

ArcGIS Runtime for Android开发教程V2.0(1)基本概念

原文地址: ArcGIS Runtime for Android开发教程V2.0(1)基本概念 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113183   1.基本概念 1.1 Android简介         2007年11月,Google推出移动操作系统Android,并宣称Android是首个为移动终端打造的真正开放和完整的移动操作系统.自此,基于And

[原]如何在Android用FFmpeg+SDL2.0解码图像线程

关于如何在Android上用FFmpeg+SDL2.0解码显示图像参考[原]如何在Android用FFmpeg+SDL2.0解码显示图像 ,关于如何在Android使用FFmpeg+SDL2.0解码声音参考[原]如何在Android用FFmpeg+SDL2.0解码声音.但是该文章有一个问题,就是解码出来的声音有很大的噪音,基本无法听清,这是由于对于声音的处理有问题.故本文参考ffmpeg-sdl音频播放分析声音解码的处理,解码出来的声音就正常了. 博主的开发环境:Ubuntu 14.04 64位

android手电筒原理

一.原理简介 现在android应用商店有许多的手电筒应用.其核心原理很简单,其实就是使用android中的摄像头类Camera控制控制闪光灯的亮灭.好了,接下来,一步步讲解下,android如何控制闪光灯. 二.添加权限 在使用android的camera时候,首先要在AndroidManifest.xml文件中添加android对camera的控制权限. <uses-permission android:name="android.permission.FLASHLIGHT"

ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置

原文地址: ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8113948   2.开发环境配置 2.1 系统要求 1)      支持的操作系统 A.      Windows XP(32位).Vista(32/64位).Windows 7(32/64位) B.      Mac

如何看待 Kotlin 成为 Android 官方支持开发语言?

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 如何看待 Kotlin 成为 Android 官方支持开发语言? - Thinkblog - 博客频道 - CSDN.NET Thinkblog 爱编程,爱分享,不仅限于技术. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]