本文实例为大家分享了Android实现简单手电筒功能的具体代码,供大家参考,具体内容如下

XML:

<?xml version="1.0" encoding="utf-8"?>    

Java:

package com.example.flashlightactivite;import android.Manifest;import android.content.pm.PackageManager;import android.hardware.Camera;import android.os.Build;import android.support.v4.app.ActivityCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.widget.ImageButton;public class Switch_Activity extends AppCompatActivity { ImageButton flashLightSwitch; boolean flag = false; SurfaceView surfaceView; Camera camera; Camera.Parameters camera_parameters; //相机参数// 设置摄像头分辨率与设备支持的分辨率// Camera.Size camera_size; SurfaceHolder surfaceHolder;// SurfaceHolder是一个接口,其作用就像一个关于Surface的监听器。提供访问和控制SurfaceView背后的Surface 相关的方法// ***** 一定要在 AndroidManifest.xml 中添加权限:// // 权限 PERMISSION_STORAGE:允许存储 private static String [] PERMISSION_STORAGE = {  Manifest.permission.CAMERA };// 请求动态码  REQUEST_PERMISSION_CODE:请求许可代码 private static int REQUEST_PERMISSION_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate( savedInstanceState );  setContentView( R.layout.activity_switch_ );//  判断版本号 与 棒棒糖版本号 的等级  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP){//   checkSelfPermission: 自我检查权限   if (ActivityCompat.checkSelfPermission( this,Manifest.permission.CAMERA ) != PackageManager.PERMISSION_GRANTED){    ActivityCompat.requestPermissions( this,PERMISSION_STORAGE,REQUEST_PERMISSION_CODE );   }  }  flashLightSwitch = findViewById( R.id.imageButton );  surfaceView = findViewById( R.id.surfaceView );  camera = Camera.open();  camera_parameters = camera.getParameters();  surfaceHolder = surfaceView.getHolder();  surfaceHolder.addCallback( new SurfaceHolder.Callback() {   @Override   public void surfaceCreated(SurfaceHolder holder) {    try{     camera.setPreviewDisplay( surfaceHolder );    }catch(Exception e){//      释放 camera 对象     camera.release();    }    camera.startPreview();   }   @Override   public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {   }   @Override   public void surfaceDestroyed(SurfaceHolder holder) {   }  } );//  ImageButton 添加点击事件  flashLightSwitch.setOnClickListener( new View.OnClickListener() {   @Override   public void onClick(View v) {    if ( !flag ) {//     改变 flag 的值     flag = true;//     更改图片 R.包.图     flashLightSwitch.setImageResource( R.drawable.on );//     设置 flash 的类型 闪光模式:火炬     camera_parameters.setFlashMode( Camera.Parameters.FLASH_MODE_TORCH );     camera.setParameters( camera_parameters );    }else {     flashLightSwitch.setImageResource( R.drawable.off );     flag = false;//     关闭 flash     camera_parameters.setFlashMode( Camera.Parameters.FLASH_MODE_OFF );     camera.setParameters( camera_parameters );    }   }  } ); }}/** FLASH_MODE_RED_EYE防红眼模式,减小或阻止图片上的人物像的红眼出现。  FLASH_MODE_TORCH填充模式,在正常光照下会减弱闪光强度。  FLASH_MODE_AUTO自动模式,有需要的时候会自动闪光。  FLASH_MODE_OFF 闪光模式将不会被关闭  FLASH_MODE_ON 快照时闪光模式将永远被关闭* */

AndroidManifest.xml :

   

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. android动态申请拍照获取照片权限
  2. Android判断是否有拍照权限
  3. Android之启动模式
  4. Mac通过Android aapt解析apk包名、版本号、权限等信息

随机推荐

  1. android 获取网络资源
  2. Android(安卓)MAT
  3. android 模拟器横竖切换
  4. Android(安卓)远程链接 daemon not runni
  5. Q版疯狂大炮游戏android源码下载
  6. Android(安卓)进化
  7. Android(安卓)Jetpack Navigation 的使用
  8. 【Android】记一次Ninja引发的血案
  9. Android为按钮添加相应事件的代码
  10. Android(安卓)AudioRecord录音实现