android 手电筒实现

本文介绍了如何在Android应用中实现手电筒功能,包括在Manifest.xml中添加权限,获取并设置摄像头参数以开启和关闭闪光灯。示例代码详细展示了如何打开、关闭手电筒以及异常处理。

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

第一步:在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;
    }
}

原文地址:http://blog.youkuaiyun.com/tachenngg/article/details/8213305

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值