关闭

闪光灯

151人阅读 评论(0) 收藏 举报
分类:

闪光灯主要是控制Camera 类的开关,来实现一闪一闪

代码如下:

import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
	private Camera camera = null;
	// 创建一个Handler对象
	Handler handler = new Handler();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		flashclose();
		camera.startPreview();
	}

	// 判断camera是否打开
	private boolean openCamera() {
		if (camera != null) {
			return true;
		}
		try {
			camera = Camera.open();
		} catch (Exception e) {
			return false;
		}
		return true;
	}

	// 关闭camera
	private void releaseCamera() {
		handler.removeCallbacks(mFlashOnRunnable);
		handler.removeCallbacks(mFlashOffRunnable);
		if (camera != null) {
			camera.stopPreview();
			camera.release();
			camera = null;
		}
	}

	// 开始闪光
	private void flashopen() {
		if (!openCamera()) {
			return;
		}
		Parameters parameters = camera.getParameters();
		parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
		camera.setParameters(parameters);
	}

	// 停止闪光
	private void flashclose() {
		if (!openCamera()) {
			return;
		}
		Parameters parameters = camera.getParameters();
		parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
		camera.setParameters(parameters);
	}

	private Runnable mFlashOnRunnable = new Runnable() {
		@Override
		public void run() {
			flashopen();
			//闪光灯的频率(自己可以静态设置,也可以动态设置)
			int delayTime = getDelayTime();
			if (delayTime > 0) {
				handler.postDelayed(mFlashOffRunnable, delayTime);
			}
		}
	};

	private Runnable mFlashOffRunnable = new Runnable() {
		@Override
		public void run() {
			flashclose();
			handler.postDelayed(mFlashOnRunnable, getDelayTime());
		}
	};

	// 获的闪关的频率
	private int getDelayTime() {
		//这就是获取刻度尺的值,上篇文章有讲解
		return staff.getRate() * 100 + 100;
	}
}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:24382次
    • 积分:799
    • 等级:
    • 排名:千里之外
    • 原创:58篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论