记录一下项目中使用到的安卓手机打开手电筒的方法,比较简单。
1.打开手电筒的代码
private boolean mIsLight = false;
private Button btnOpenLight;
private Button btnCloseLight;
private Camera camera = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_light);
initView();
initListener();
}
private void initView() {
btnOpenLight = (Button) findViewById(R.id.btn_open_light);
btnCloseLight = (Button) findViewById(R.id.btn_close_light);
}
private void initListener() {
btnOpenLight.setOnClickListener(this);
btnCloseLight.setOnClickListener(this);
}
按钮的点击事:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_open_light:
if (!mIsLight) {
if (camera == null) {
camera = Camera.open();
}
camera.startPreview();
Camera.Parameters parameters = camera.getParameters();
List<String> flashModes = parameters.getSupportedFlashModes();
if (flashModes == null) {
return;
}
String flashMode = parameters.getFlashMode();
if (!flashMode.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
Toast.makeText(OpenLightActivity.this, "打开手电筒成功", Toast.LENGTH_SHORT).show();
}
mIsLight = true;
}
break;
case R.id.btn_close_light:
if (mIsLight) {
Camera.Parameters parameters = camera.getParameters();
List<String> flashModes = parameters.getSupportedFlashModes();
if (flashModes == null) {
return;
}
String flashMode = parameters.getFlashMode();
if (!flashMode.contains(Camera.Parameters.FLASH_MODE_OFF)) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
Toast.makeText(OpenLightActivity.this, "关闭手电筒成功", Toast.LENGTH_SHORT).show();
}
mIsLight = false;
}
break;
}
2.添加权限:
AndroidMainfest.xml中
<uses-permission android:name="android.permission.CAMERA"/>
3.需要注意的是:
1)安卓6.0(包含6.0)以上的手机,需要用户手动赋予app打开手机手电筒的权限。
设置-->更多应用-->目标app-->权限管理-->打开对应的权限。
主要是为了用户的安全着想,安装app的时候,用户可以自定义权限是否开启。
2)动态申请权限。