您的位置:首页 > 移动开发 > Android开发

android 手电筒实现

2012-11-22 17:06 211 查看
第一步:在Manifest.xml文件里添加权限

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

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

第二步:获得摄像头参数,并修改闪光灯模式

Camera.Parameters camParam = mCam.getParameters();

// 设置手电筒模式

camParam.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

实现代码如下:

import java.util.List;

import android.hardware.Camera;

import android.os.Bundle;

import android.R.bool;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageButton;

import android.widget.Toast;

public class MainActivity extends Activity {

// 摄像头对象

private Camera mCam = null;

// 开关按钮

private ImageButton mSwitch;

// 是否打开

private boolean mIsOpen;

// 是否支持手电筒模式

private boolean mIsSupport;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mIsOpen = false;

// 打开摄像头

mCam = Camera.open();

// 获取摄像头参数,判断是否支持手电筒模式

Camera.Parameters camParam = mCam.getParameters();

List<String>flashModes = camParam.getSupportedFlashModes();

if (flashModes != null && flashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)){

mIsSupport = true;

}else {

mIsSupport = false;

}

mSwitch = (ImageButton)findViewById(R.id.imageButton_switch);

mSwitch.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

if(mIsOpen){

closeLight();

} else{

openLight();

}

}

});

openLight();

}

@Override

public void onDestroy(){

super.onDestroy();

closeLight();

mCam.release();

}

private void openLight(){

if (!mIsSupport){

Toast.makeText(this, "你的手机不支持手电筒模式!!!", Toast.LENGTH_SHORT).show();

return ;

}

if (!mIsOpen){

mIsOpen = !mIsOpen;

try {

Camera.Parameters camParam = mCam.getParameters();

// 设置手电筒模式

camParam.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

mCam.setParameters(camParam);

} catch (Exception e) {

// TODO: handle exception

Toast.makeText(this, "Exception:FLASH_MODE_TORCH", Toast.LENGTH_SHORT).show();

}

}

}

private void closeLight(){

if (mIsOpen){

mIsOpen = !mIsOpen;

try {

Camera.Parameters camParam = mCam.getParameters();

String flashMode = camParam.getFlashMode();

// 关闭

camParam.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

mCam.setParameters(camParam);

} catch (Exception e) {

// TODO: handle exception

Toast.makeText(this, "Exception:FLASH_MODE_OFF", Toast.LENGTH_SHORT).show();

}

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

}

原文地址:/article/8851665.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: