Не удается активировать фронтальную вспышку телефона
Верхняя часть кода - обычный фонарик, ниже я попытался подключить еще и фронтальный, но почему-то не определяется frontCameraId
public class MainActivity extends AppCompatActivity {
Button button1 = null;
Button btn;
private Camera camera = null;
private boolean isFlashOn;
private boolean hasFlash;
Camera.Parameters params;
public void errorDialog(){
AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).create();
dialog.setTitle("Error!");
dialog.setMessage("Your device not support flashlight!");
dialog.setButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
finish();
}
});
dialog.show();
return;
}
private void getCamera(){
if(camera == null){
try{
camera = Camera.open();
params = camera.getParameters();
}catch (RuntimeException e){
e.printStackTrace();
}
}
}
private void turnOn(){
if(!isFlashOn){
if(camera == null || params == null){
return;
}
params = camera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
}
}
private void turnOff(){
if(isFlashOn){
if(camera == null || params == null){
return;
}
params = camera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
isFlashOn = false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button)findViewById(R.id.button1);
btn = (Button)findViewById(R.id.koo);
hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if(!hasFlash){
errorDialog();
}
getCamera();
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isFlashOn){
turnOff();
}else{
turnOn();
}
}
});
}
//попытка фронтальной вспышки, вот тут и есть проблема, frontCameraId ошибка "Cannot resolve symbol frontCameraId"
CameraManager cameraManager = (CameraManager)getSystemService(CAMERA_SERVICE);
{
try {
if (hasFlashForFrontCamera(cameraManager)) {
cameraManager.setTorchMode(frontCameraId, true);
}
} catch (CameraAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//проверка наличия фронтальной вспышки
boolean hasFlashForFrontCamera(CameraManager cManager) throws CameraAccessException {
for(final String cameraId : cManager.getCameraIdList()){
CameraCharacteristics characteristics = cManager.getCameraCharacteristics(cameraId);
int cOrientation = characteristics.get(CameraCharacteristics.LENS_FACING);
if(cOrientation == CameraCharacteristics.LENS_FACING_FRONT) {
return characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
}
}
return false;
}
}