Open top menu





Example- Explain how to ON and OFF Flash Light in android device programmatically.

Step 1- Add below permission in manifest file.

<uses-permission android:name="android.permission.CAMERA" />
<
uses-feature android:name="android.hardware.camera" />

.............................................................................................

activity_main.xml
.............................................................................................

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient"
    tools:context=".MainActivity" >

    <ImageButton
       
android:id="@+id/btnSwitch"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dip"
        android:src="@drawable/switch_on_icon"
        android:background="@null"
        android:scaleType="fitXY"
        android:contentDescription="@null"
        />
</RelativeLayout>


.............................................................................................

MainActivity.Java
.............................................................................................

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {
    ImageButton btnSwitch;

    private Camera camera;
    private boolean isFlashOn;
    private boolean hasFlash;
    Parameters params;
    MediaPlayer mp;

    @Override
   
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);

        
        hasFlash = getApplicationContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
        if (!hasFlash) {

            AlertDialog alert = new AlertDialog.Builder(MainActivity.this).create();
            alert.setTitle("Error");
            alert.setMessage("device doesn't support flash light!");
            alert.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            alert.show();
            return;
        }
       
        getCamera();
       
        toggleButtonImage();
       
        btnSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
           
public void onClick(View v) {
                if (isFlashOn) {
                    turnOffFlash();
                } else {
                    turnOnFlash();
                }
            }
        });
    }
    private void getCamera() {
        if (camera == null) {
            try {
                camera = Camera.open();
                params = camera.getParameters();
            } catch (RuntimeException e) {

            }
        }
    }
   
    private void turnOnFlash() {
        if (!isFlashOn) {
            btnSwitch.setBackgroundResource(R.drawable.switch_on_icon);
            if (camera == null || params == null) {
                return;
            }
           
            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_TORCH);
            camera.setParameters(params);
            camera.startPreview();
            isFlashOn = true;
            toggleButtonImage();
        }

    }
   
    private void turnOffFlash() {
        if (isFlashOn) {
            if (camera == null || params == null) {
                return;
            }
            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_OFF);
            camera.setParameters(params);
            camera.stopPreview();
            isFlashOn = false;
            toggleButtonImage();
        }
    }
   
    private void toggleButtonImage(){
        if(isFlashOn){
            btnSwitch.setImageResource(R.drawable.switch_on_icon);
        }else{
            btnSwitch.setImageResource(R.drawable.switch_off_icon);
        }
    }

    @Override
   
protected void onDestroy() {
        super.onDestroy();
    }

    @Override
   
protected void onPause() {
        super.onPause();
        turnOffFlash();
    }

    @Override
   
protected void onRestart() {
        super.onRestart();
    }

     

    @Override
   
protected void onStart() {
        super.onStart();
        getCamera();
    }

    @Override
   
protected void onStop() {
        super.onStop();
        if (camera != null) {
            camera.release();
            camera = null;
        }
    }
}

 ............................................................................................




0 comments