package org.shadow.cutomutils;
import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.CompoundButton; import android.widget.Switch;
import java.io.IOException;
public class MainActivity extends AppCompatActivity {
public Camera mCamera; public Camera.Parameters mParameters; private Switch mFlashLightSwitch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mFlashLightSwitch = (Switch) findViewById(R.id.flash_light_switch); //使用switch 测试FlashLight mFlashLightSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { openFlashLight(); } else { closeFlashLight(); } } }); } /** * 使用android api 21 测试,其中需要 * 注册权限 * <uses-permission android:name="android.permission.CAMERA"/> * <uses-permission android:name="android.permission.FLASHLIGHT"/> * * 注意是hardware.Camera * 在api21 中已被废弃该hardware.Camera包 * import android.hardware.Camera; * public Camera mCamera; * public Camera.Parameters mParameters; */ /** * 打开闪光灯 */ private void openFlashLight() { mCamera = Camera.open(); //需要设置一个纹理ID int textTureId = 0; try { mCamera.setPreviewTexture(new SurfaceTexture(textTureId)); mCamera.startPreview(); mParameters = mCamera.getParameters(); mParameters.setFlashMode(mParameters.FLASH_MODE_TORCH); mCamera.setParameters(mParameters); } catch (IOException e) { e.printStackTrace(); } } /** * 关闭flashlight */ private void closeFlashLight() { if (mCamera != null) { mParameters = mCamera.getParameters(); mParameters.setFlashMode(mParameters.FLASH_MODE_OFF); mCamera.setParameters(mParameters); mCamera.stopPreview(); mCamera.release(); //设置为空,便于系统回收 mCamera = null; } }}