Android如何打开闪光灯

2025-04-09 05:02:07
推荐回答(1个)
回答1:

一、声明闪光灯的权限 

  •   

  •   

package com.google.yang.myapplication;  

import android.hardware.Camera;  

import android.hardware.Camera.Parameters;  

import android.os.Bundle;  

import android.support.v7.app.AppCompatActivity;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.Button;  

/** 

* 闪光灯的控制 

* @author yang 

*/  

public class MainActivity extends AppCompatActivity {  

private Button open;  

private Button close;  

private Button openFlicker;  

private Button closeFlicker;  

private Camera camera;  

private Boolean isShanshuo;  

@Override  

protected void onCreate(Bundle savedInstanceState) {  

super.onCreate(savedInstanceState);  

setContentView(R.layout.activity_main);  

open = (Button) this.findViewById(R.id.open);  

close = (Button) this.findViewById(R.id.close);  

openFlicker = (Button) findViewById(R.id.openFlicker);  

closeFlicker = (Button) findViewById(R.id.closeFlicker);  

open.setOnClickListener(openOnClickListener);  

close.setOnClickListener(closeOnClickListener);  

openFlicker.setOnClickListener(openFlickerOnClickListener);  

closeFlicker.setOnClickListener(closeFlickerOnClickListener);  

}  

/** 

* 打开手电筒 

*/  

private OnClickListener openOnClickListener = new OnClickListener() {  

@Override  

public void onClick(View v) {  

open();  

}  

};  

/** 

* 关闭手电筒 

*/  

private OnClickListener closeOnClickListener = new OnClickListener() {  

@Override  

public void onClick(View v) {  

close();  

}  

};  

/** 

* 开启闪烁 

*/  

private OnClickListener openFlickerOnClickListener = new OnClickListener() {  

@Override  

public void onClick(View v) {  

isShanshuo = true;  

openFlicker.setEnabled(false);  

new Thread(new Runnable() {  

@Override  

public void run() {  

while (isShanshuo) {  

open();  

try {  

Thread.sleep(300);  

} catch (InterruptedException e) {  

e.printStackTrace();  

}  

close();  

try {  

Thread.sleep(300);  

} catch (InterruptedException e) {  

e.printStackTrace();  

}  

}  

}  

}).start();  

}  

};  

/** 

* 关闭闪烁 

*/  

private OnClickListener closeFlickerOnClickListener = new OnClickListener() {  

@Override  

public void onClick(View v) {  

isShanshuo = false;  

openFlicker.setEnabled(true);  

}  

};  

/** 

* 打开闪光灯 

* @return 

*/  

private void open() {  

try {  

camera = Camera.open();  

camera.startPreview();  

Parameters parameters = camera.getParameters();  

parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);  

camera.setParameters(parameters);  

} catch (Exception e) {  

e.printStackTrace();  

}  

}  

/** 

* 关闭闪光灯 

* @return 

*/  

private void close() {  

try {  

Parameters parameters = camera.getParameters();  

parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);  

camera.setParameters(parameters);  

camera.release();  

camera = null;  

} catch (Exception e) {  

e.printStackTrace();  

}  

}  

}