我最近在写一个手电筒的app,需要兼容android 6.0但是网上很多都是很久以前的代码,android M的基本上没有什么资料,今天就和大家聊一聊,写的不好的地方大家多多指教,不多说直接上代码:
MainActivity.class
package com.sashalab.sashaflashlight;
import android.app.Activity;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class MainActivity extends Activity {
private ToggleButton toggleButton;
private CameraManager manager;
private Camera camera = null;
private Camera.Parameters parameters = null;
public static boolean kaiguan = true; // 定义开关状态,状态为false,打开状态,状态为true,关闭状态
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //android6.0调用的手电筒接口
try {
manager.setTorchMode("0", isChecked);
}catch(CameraAccessException e){
e.printStackTrace();
}
}else{
//低于6.0系统的手电筒
if ( isChecked){
camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);// 开启
camera.setParameters(parameters);
camera.startPreview();
}else{
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);// 关闭
camera.setParameters(parameters);
camera.stopPreview();
camera.release();
}
}
}
});
}
@Override
protected void onPause() {
super.onPause();
}
}
布局文件的代码我就不传了,只是一个toggleButton