Пожалуйста, помогите ... Я разрабатываю приложение для фонарика. У меня есть кнопка для включения и выключения вспышки вручную. Вначале при нажатии кнопки включается вспышка, и при повторном нажатии она выключается. Когда я запускаю камеру с телефона, вспышка автоматически отключается. Как предотвратить автоматическое выключение вспышки при открытии или закрытии камеры? Я отправлю свои коды. Пожалуйста, помогите мне.
// Секция кодирования
public class MainActivity extends AppCompatActivity {
//Intialise Button
Button button_camera;
boolean cameraAvailability = false;
boolean flashlight_available = false;
private Camera mCamera;
private Camera.Parameters parameters;
private CameraManager camManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_camera = findViewById(R.id.button_camera);
//onclick listener for button
button_camera.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Checking whether flash is available for camera
cameraAvailability = MainActivity.this.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if (cameraAvailability) {
//Toast.makeText(getApplicationContext(),"flash is available",Toast.LENGTH_SHORT).show();
//if flash light is not turned on
//Turning on flash light
if (!flashlight_available) {
turnFlashlightOn();
}
//if flash light is already on
//Closing the flash light
else {
turnFlashlightOff();
}
} else {
//if no flash light is available
//Show a dialog with some message
// Show alert message and close the dialog
final AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
.create();
alert.setTitle("Error");
alert.setMessage("Sorry, your device doesn't support flash light!");
alert.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// closing the dialog
alert.dismiss();
}
});
alert.show();
}
}
});
}
private void turnFlashlightOn() {
//In API 23 or Higher (Android M, 6.0)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
camManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE);
String cameraId = null; // Usually front camera is at 0 position.
if (camManager != null) {
cameraId = camManager.getCameraIdList()[0];
camManager.setTorchMode(cameraId, true);
flashlight_available = true;
}
} catch (CameraAccessException e) {
Log.e("Error camera", e.toString());
}
}
//In Api <23
else {
mCamera = Camera.open();
parameters = mCamera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
mCamera.startPreview();
flashlight_available = true;
}
}
private void turnFlashlightOff() {
//In API 23 or Higher (Android M, 6.0)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
try {
String cameraId;
camManager = (CameraManager) getApplicationContext().getSystemService(Context.CAMERA_SERVICE);
if (camManager != null) {
cameraId = camManager.getCameraIdList()[0]; // Usually front camera is at 0 position.
camManager.setTorchMode(cameraId, false);
flashlight_available = false;
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
//In Api <23
else {
mCamera = Camera.open();
parameters = mCamera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
mCamera.setParameters(parameters);
mCamera.stopPreview();
flashlight_available = false;
}
}
}