Reputation: 5212
I have a button on my camera preview screen to toggle the camera's flash. The camera starts on auto-flash which works then when the button is pressed the flash turns off but when i try to turn the flash back on it doesn't turn on and i don't know why?
Log.d("flash",mCamera.getParameters().getFlashMode());
Displays on off and auto as i press it. But it doesn't turn back on. Here is my full code
public void flashPressed(View v)
{
ImageButton flashButton = (ImageButton)findViewById(R.id.flash);
Camera.Parameters myP = mCamera.getParameters();
if(flashOn == 0)
{
flashButton.setImageResource(R.drawable.device_access_flash_off);
myP.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
flashOn = 1;
}
else if(flashOn == 1)
{
myP.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
flashButton.setImageResource(R.drawable.device_access_flash_on);
flashOn=2;
}else{
myP.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
flashButton.setImageResource(R.drawable.device_access_flash_automatic);
flashOn =0;
}
mCamera.setParameters(myP);
Log.d("flash",mCamera.getParameters().getFlashMode());
}
Upvotes: 0
Views: 1141
Reputation: 1918
This is how I used to create a Flash app.
public class Flash extends Activity {
boolean cameraOpened;
static Camera camFlash = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onPause() {
super.onPause();
if (camFlash != null) {
camFlash.stopPreview();
camFlash.release();
camFlash = null;
}
}
public void turnOnFlash(View view) {
if (camFlash == null) {
camFlash = Camera.open();
}
if (camFlash != null) {
Parameters params = camFlash.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camFlash.setParameters(params);
camFlash.startPreview();
camFlash.autoFocus(new AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
}
});
}
}
public void turnOffFlash(View view) {
if (camFlash != null) {
camFlash.stopPreview();
camFlash.release();
camFlash = null;
}
}
}
the methods turnOnFlash() and turnOffFlash are called from xml android:onClick.
Upvotes: 1
Reputation: 5212
To avoid this problem I just created a new camera each time the flash option changes
Upvotes: 0