自己编写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://download.csdn.net/detail/redstarofsleep/8749589


转载请注明出处

http://blog.csdn.net/redstarofsleep/article/details/4539068



更多内容请关注微信:



  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值