简易手电筒实现

本文详细介绍如何使用Android系统API开发一款简易的手电筒应用程序。包括通过调用摄像头的闪光灯实现手电筒功能,以及如何正确开启和关闭闪光灯的方法。此外,还介绍了必要的权限配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文章是因为有人问我怎么调用系统的闪光灯做手电筒才写出来的。比较简单,大牛见笑。


1、XML文件内定义两个按钮开启和关闭手电筒的。简单不列出了。

2、在Java文件中对两个按钮做出点击事件响应。调用了三个方法,torchOpen()、torchclose()、clear()。


package com.example.torchdemo;

import android.content.Context;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.PowerManager;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TorchDemo extends ActionBarActivity {
	private Button openTorch;
	private Button closeTorch;
	private Camera mCamera;
	private PowerManager.WakeLock mScreenLock = null;
	private PowerManager mPower = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.torch_demo);

		openTorch = (Button) findViewById(R.id.openTorch);
		closeTorch = (Button) findViewById(R.id.closeTorch);
		openTorch.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				torchOpen();
			}

		});

		closeTorch.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				torchClose();
<span style="white-space:pre">				</span>clear();
			}

		});
	}

	private void torchOpen() {
		if (mCamera == null) {
			mCamera = Camera.open();
		}

		Camera.Parameters parameters = mCamera.getParameters();
		parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
		mCamera.setParameters(parameters);

		if (mScreenLock == null) {
			mPower = (PowerManager) getSystemService(Context.POWER_SERVICE);
			mScreenLock = mPower.newWakeLock(
					PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "TORCH");
			mScreenLock.acquire();
		}
	}

	private void torchClose() {
		if (mCamera == null)
			mCamera = Camera.open();

		Camera.Parameters parameters = mCamera.getParameters();
		parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
		mCamera.setParameters(parameters);

		clear();

	}

	private void clear() {
		if (mCamera != null) {
			Camera.Parameters parameters = mCamera.getParameters();
			parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
			mCamera.setParameters(parameters);
			mCamera.release();
			mCamera = null;

			if (mScreenLock != null) {
				mScreenLock.release();
				mScreenLock = null;
			}
		}
	}
}


3、在编写完Java文件后需要添加响应的权限。

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-feature android:name="android.hardware.camera" />

可以后台运行。但是和相机的互斥没有做。与相机的互斥问题我在之前的文章中已经做过介绍。只是一个demo。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值