Android闪光灯实现

具体的代码如下:

一、声明闪光灯的权限 

  1. <uses-permission android:name=“android.permission.CAMERA”/>  
  2. <uses-permission android:name=”android.permission.FLASHLIGHT”

    二、具体的代码如下:

    1. package com.google.yang.myapplication;  
    2.   
    3. import android.hardware.Camera;  
    4. import android.hardware.Camera.Parameters;  
    5. import android.os.Bundle;  
    6. import android.support.v7.app.AppCompatActivity;  
    7. import android.view.View;  
    8. import android.view.View.OnClickListener;  
    9. import android.widget.Button;  
    10.   
    11. /** 
    12.  * 闪光灯的控制 
    13.  * 
    14.  * @author yang 
    15.  */  
    16. public class MainActivity extends AppCompatActivity {  
    17.   
    18.     private Button open;  
    19.     private Button close;  
    20.     private Button openFlicker;  
    21.     private Button closeFlicker;  
    22.     private Camera camera;  
    23.     private Boolean isShanshuo;  
    24.   
    25.     @Override  
    26.     protected void onCreate(Bundle savedInstanceState) {  
    27.         super.onCreate(savedInstanceState);  
    28.         setContentView(R.layout.activity_main);  
    29.   
    30.         open = (Button) this.findViewById(R.id.open);  
    31.         close = (Button) this.findViewById(R.id.close);  
    32.         openFlicker = (Button) findViewById(R.id.openFlicker);  
    33.         closeFlicker = (Button) findViewById(R.id.closeFlicker);  
    34.   
    35.         open.setOnClickListener(openOnClickListener);  
    36.         close.setOnClickListener(closeOnClickListener);  
    37.         openFlicker.setOnClickListener(openFlickerOnClickListener);  
    38.         closeFlicker.setOnClickListener(closeFlickerOnClickListener);  
    39.     }  
    40.   
    41.     /** 
    42.      * 打开手电筒 
    43.      */  
    44.     private OnClickListener openOnClickListener = new OnClickListener() {  
    45.         @Override  
    46.         public void onClick(View v) {  
    47.             open();  
    48.         }  
    49.     };  
    50.   
    51.     /** 
    52.      * 关闭手电筒 
    53.      */  
    54.     private OnClickListener closeOnClickListener = new OnClickListener() {  
    55.         @Override  
    56.         public void onClick(View v) {  
    57.             close();  
    58.         }  
    59.     };  
    60.   
    61.     /** 
    62.      * 开启闪烁 
    63.      */  
    64.     private OnClickListener openFlickerOnClickListener = new OnClickListener() {  
    65.         @Override  
    66.         public void onClick(View v) {  
    67.             isShanshuo = true;  
    68.             openFlicker.setEnabled(false);  
    69.             new Thread(new Runnable() {  
    70.                 @Override  
    71.                 public void run() {  
    72.                     while (isShanshuo) {  
    73.                         open();  
    74.                         try {  
    75.                             Thread.sleep(300);  
    76.                         } catch (InterruptedException e) {  
    77.                             e.printStackTrace();  
    78.                         }  
    79.                         close();  
    80.                         try {  
    81.                             Thread.sleep(300);  
    82.                         } catch (InterruptedException e) {  
    83.                             e.printStackTrace();  
    84.                         }  
    85.                     }  
    86.                 }  
    87.             }).start();  
    88.         }  
    89.     };  
    90.   
    91.     /** 
    92.      * 关闭闪烁 
    93.      */  
    94.     private OnClickListener closeFlickerOnClickListener = new OnClickListener() {  
    95.         @Override  
    96.         public void onClick(View v) {  
    97.             isShanshuo = false;  
    98.             openFlicker.setEnabled(true);  
    99.         }  
    100.     };  
    101.     /** 
    102.      * 打开闪光灯 
    103.      * 
    104.      * @return 
    105.      */  
    106.     private void open() {  
    107.         try {  
    108.             camera = Camera.open();  
    109.             camera.startPreview();  
    110.             Parameters parameters = camera.getParameters();  
    111.             parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);  
    112.             camera.setParameters(parameters);  
    113.         } catch (Exception e) {  
    114.             e.printStackTrace();  
    115.         }  
    116.     }  
    117.     /** 
    118.      * 关闭闪光灯 
    119.      * 
    120.      * @return 
    121.      */  
    122.     private void close() {  
    123.         try {  
    124.             Parameters parameters = camera.getParameters();  
    125.             parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);  
    126.             camera.setParameters(parameters);  
    127.             camera.release();  
    128.             camera = null;  
    129.         } catch (Exception e) {  
    130.             e.printStackTrace();  
    131.         }  
    132.     }  
    133.   
    134. }  

    XML界面很简单,四个按钮:

猜你喜欢

转载自blog.csdn.net/qq_31939617/article/details/80750933
今日推荐